Hvordan forhindre uautorisert sletting av f.eks. PM'er

En tråd i 'PHP, SQL og databaser' startet av skogtrollet, 17 Sep 2009.

  1. skogtrollet

    skogtrollet Medlem

    Innlegg:
    208
    DELETE * FROM pm WHERE id='$id'

    Hvordan forhindre at brukere sletter hverandres meldinger, på enklest mulig måte?

    Tilleggsspørsmål: Når jeg gjør slik:

    SELECT name FROM medlemmer WHERE id=4

    Hvordan henter jeg ut name? Fordi mysql_fetch_array() funker ikke når det bare hentes ut en verdi.
     
  2. olafmoriarty

    olafmoriarty Medlem

    Innlegg:
    751
    Første spørsmål: bruk en mysql-query og en if-sjekk for å finne ut om id-en til innlogget bruker matcher id-en til mottaker av pm.

    Tilleggsspørsmål:
    $result = mysql_query('SELECT name FROM medlemmer WHERE id=4');
    $name = mysql_result($result, 0, 'name');
     
  3. skogtrollet

    skogtrollet Medlem

    Innlegg:
    208
    Så iden til innlogget bruker henter jeg fra, sessions elr?

    Så dette krever minst en ekstra query mot databasen?
     
  4. olafmoriarty

    olafmoriarty Medlem

    Innlegg:
    751
    Når det gjelder hvor du skal få id fra kommer det an på hvordan du har bygd opp innloggingssystemet ditt. Selv pleier jeg å ha både id, innloggingsnavn og kryptert passord i sessions -- i tillegg kjører jeg for hver sidelasting en sjekk på at denne informasjonen faktisk er gyldig, og så har jeg en variabel hvor jeg lagrer helt binær informasjon om hvorvidt brukeren er innlogget eller ikke. Jeg pleier også gjerne å fetche inn all nødvendig brukerinfo på hver side fordi det ER vanvittig praktisk å ha tilgang på denne informasjonen i mitt tilfelle. Uansett har jeg alltid sett på det som en nødvendighet å ha en variabel hvor jeg har brukerens id lagret -- den trenger jeg til utrolig mye. Om du ikke allerede gjør noe slikt må du ta id et sted fra, ja.

    Bortsett fra det trenger du ikke egentlig flere databasekall. Bruk bare

    if ($innlogget) {
    mysql_query('DELETE FROM pm WHERE id='.$id.' AND mottaker='.$brukerid.');
    }
     
  5. Zolic Medlem

    Innlegg:
    52
    Den skal fungere selv om det bare er et svar, sikker på at du skriver riktig kollonne navn?
     

Del denne siden