Beery Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 Hei Har et problem med en gjestebok jeg holder på å lage. Jeg bruker $_POST for å hente data fra brukeren og lagre dem i en MySql database. Når dette er gjort tømmer jeg $_POST tabellen slik at skjema blir tomt igjen. Kode: lagreMelding($meld); echo "Melding lagret"; $_POST = 0; Når jeg da skriver ut $_POST tabellen er den tom. Men vis brukeren trykker på oppdater knappen, lagres meldingen på nytt og jeg ser at $_POST tabellen ikke er tom lenger, men har samme innholdet som den hadde før. Skjer dette fordi $_POST tabellen også lagres hos klienten? (f.eks. cookies....?) Hvordan kan jeg eventuelt fikse dette? Lenke til kommentar
???????? Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 Det er rett og slett fordi brukeren når han trykker oppdater så sender han hele requesten på nytt til siden din, hvor han også sender skjemaet. Derfor hjelper det ikke at du tømmer $_POST, for den blir sendt på nytt. Bruk header("Location: www.dinside.com"); for å sende brukeren til siden igjen. Merk at du kan ikke ha noe output før bruken av header(). Lenke til kommentar
Beery Skrevet 6. oktober 2005 Forfatter Del Skrevet 6. oktober 2005 Men hvor kan jeg plassere den da? Jeg vil jo at dette skal skje etter at meldingen er lagret i databasen Lenke til kommentar
gozzer Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 så lenge du ikke printer ut noe html, eller annet snusk, som skal tolkes av nettleseren, står du fritt til å lagre data i en database før du bruker header(). Det ?x50 mente var at du ikke kan bruke ting som print og echo, eller dumpe noe tekst før du evt. vil bruke header-funksjonen. Eks: Feil <html> <head> <title>test</title> </head> <?php Header("Location: www.vg.no"); ?> .... Riktig <?php Header("Location: www.vg.no"); ?> <html> <head> <title>test</title> </head> .... Litt lodden forklaring, som vanlig, men du skjønte kanskje tegninga Lenke til kommentar
ThaMezzy Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 Dette er kanskje litt off-topic, men er ikke den riktige måten å frigjøre variabler slik: unset($_POST['var']); ? Lenke til kommentar
gozzer Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 Det er slik jeg ville gjort det, men om Beerys metode fungerer vet jeg ikke. Det virket i allefall ikke som om det var problemet Lenke til kommentar
dabear Skrevet 6. oktober 2005 Del Skrevet 6. oktober 2005 $_POST = 0 vil resette post til integeren 0, mens unset($_POST) vil sette $_POST = null. å gjøre $_POST = null manuelt vil derfor være (ørlite) kjappere ettersom det ikke skaper «overheat» ved å kalle en funksjon. Uansett er det ikke veldig lurt å unsette $_POST ettersom den vil bli refylt ved ei oppdatering av sida- og du mister den globale effekten $_POST har (ikke 100% sikker på denne). Det finnes flere måter å unngå denne «dobbelpostinga på», hvor én allerede er nevnt- nemlig redirect. De andre metodene innebærer sessions og/eller cookies. Sette timelimit ved å lagre tidspunkt for siste post i sessions/cookies og sammenlikne om det har gått ei viss tid sia siste post Lagre sha1/md5-hash i sessions/cookies og sammenlikne om de er like Lenke til kommentar
???????? Skrevet 7. oktober 2005 Del Skrevet 7. oktober 2005 dabear, hva i alle dager får deg til å tro at unset() vil være tregere? Det finnes da ingen ting som tilsier det? Hvis noe så så vil det være mye kjappere! Merk at på dette nivået så er det snakk om HELT ubetydelig forskjeller, men jeg unset() vil være kjappere! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå