Avatar billede human Nybegynder
01. oktober 2006 - 02:59 Der er 7 kommentarer og
1 løsning

POSTDATA - må ikke være muligt

Hejsa

Jeg har en lille side hvor en bruger kan smide en kommentar til en nyhed. Men når brugeren har smidt sin kommentar, så kommer den ikke op på siden før han reloader eller refresher siden. Vælger personen refresh vil han blive advaret om postdata. Trykker han ok vil den han postede blive vist. Men så vil det jo være der 2 gange.

Hvordan kan det fikses? Jeg ved ikke om i skal se hele siden (100 linier), eller om I kan fortælle mig hvorfor det sker, og hvordan det kan laves.
Avatar billede jaw Nybegynder
01. oktober 2006 - 03:04 #1
Jo, et ofte stillet spørgsmål. Jeg mener, at den bedste måde er, at du sender brugeren til en side, der behandler dataene og så sender ham tilbage igen med:

header("Location: ".$_SERVER['HTTP_REFERER']);

Dvs. at du har en side med dine forms, som så sender til en side der behandler dataene (f.eks. indsætter i databasen) og sender tilbage med ovenstående. Brugeren vil aldrig selv se det.
Avatar billede human Nybegynder
01. oktober 2006 - 03:10 #2
Hmm det kan jeg faktisk godt huske jeg gjorde engang. Der havde jeg en side med en masse queries i en switch, kan dog ikke huske hvordan jeg gjorde det.

Er det noget du evt. kan give et eksempel på?
Avatar billede jaw Nybegynder
01. oktober 2006 - 11:57 #3
Tjah, en fil med en form og en fil der indsætter:

indsaet.php:
<?PHP
$q = mysql_query("INSERT INTO tabel (felt1) VALUES ('".$_POST['felt1']."')") or die(mysql_error());

header("Location: ".$_SERVER['HTTP_REFERER']);
exit;
?>

form.php:
<form action='indsaet.php' method='post'><br />
<input type='text' name='felt1'><br />
<input type='submit' value='send'>
</form>


Altså, det du nu vist har øverst i din filer med nogen if-else'r skal du bare smide over i en tom fil, og så lave et par små tilpasninger...
Avatar billede human Nybegynder
01. oktober 2006 - 12:47 #4
Yes, det der er jeg med på :) Men det vil jo ikke virke specielt godt hvis jeg nu har 6 forskellige quiries og 6 forms.( med mindre jeg laver en fil til hver self). Hva nu vhis jeg gerne vil have alle mine queries i én fil? Det kan laves smart med en switch kan det ik?
Avatar billede jaw Nybegynder
01. oktober 2006 - 12:55 #5
Tjoh, så kan du jo have en værdi der hedder type f.eks. - eksemplet viser type smidt i adresselinien:

swith($_GET['type']) {
  case 1:
    //query 1
    break;
  case 2:
    //query2
    break;
}

Så er ?type=1, 2 osv.
Avatar billede human Nybegynder
01. oktober 2006 - 13:31 #6
Yes det ser rigtigt ud. Det vil jeg helt sikkert bruge på en større side, hvis jeg skal lave sådan en endag :) Synes det er lidt meget for 2 queries.

Jeg fandt en løsning ved at flytte lidt rundt på noget kode, så det stadig kan gøres i ét dokument.

Smid du et svar.
Avatar billede jaw Nybegynder
01. oktober 2006 - 15:17 #7
Nah, ellers tak. Hvis du fiksede det selv, svarer du også bare selv, og husker at smide din løsning i svaret, så andre kan have glæde af det...
Avatar billede human Nybegynder
01. oktober 2006 - 15:20 #8
<script language="javascript" type="text/javascript">
    <!--
    window.location="http://";
    // -->
</script>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester