10. december 2004 - 22:24Der er
14 kommentarer og 3 løsninger
Undersøge med PHP, om der blev trykket "Back" i Toolbar.
Hejsa,
Er der en mulighed for i PHP at tjekke om brugeren trykkede "Back" i hans toolbar, for at komme til den pågældende side, eller er det bare helt umuligt? :)
Du kunne måske oprette en slags history i en session - men mon ikke det ville være bedre, at få struktureret din kode, så der ikke opstår problemer ved tryk på 'Back'? :)
Når jeg tilføjer noget til min kurv, så sendes jeg til en side, hvor "tingen" lægges i, som så sender mig videre (faktisk tilbage) til den side jeg kom fra.
Problemet er bare, at hvis man trykker back en enkelt gang, så tilføjer den endnu en vare, fordi man kommer tilbage til siden "hvor tingesten bliver lagt i".
Derfor vil jeg gerne have den til at skippe den side, hvor "tingesten" bliver lagt i.
Jeg er åben over for omstruktureringer. Hvilken metode - i store træk - løser det 100%?
Hej igen, når du lægger en vare i kurven, så kan du bare sætte en session variable, så ved at varen er tilføjet, og kan derved udlave at tilføje den igen!
Men det løser jo ikke problemet ved, at hvis kunden trykker på "køb" én gang til, så kan man ikke købe den vare igen (Altså addere antallet af den pågældende med +1)
Tænk på siden her. Hvis du skriver en besked og trykker 'Send', kan du efterfølgende trykke 'Back' eller reloade så tosset, du vil ... indlægget bliver kun oprettet én gang. Det, der sker, er, at formen peger på 'response.php' i sin action. I det dokument står noget i retning af: <?
if (isset($_POST["context"]) && $_POST["context"]=="insertComment") { // Her opdateres databasen og hvad der ellers skal gøres } Header( "Location: ".$_POST["returnPage"] ); exit;
?>
Du skal så have et hidden-field i din form, der hedder 'returnPage' og som indeholder dokumentets URL: value="<?=$_SERVER["PHP_SELF"]?>" Du skal naturligvis også have et hidden-field, der hedder 'context' og som har værdien 'insertComment'. Så returneres til siden med formen og du vil ikke have de omtalte problemer :)
... eller måske bedre sådan, hvis dokumentet skulle blive kaldt ved en fejltagelse:
<?
if (isset($_POST["context"]) && $_POST["context"]=="insertComment") { // Her opdateres databasen og hvad der ellers skal gøres } $retPage = (isset($_POST["returnPage"]) && $_POST["returnPage"]<>"")? $_POST["returnPage"] : "index.php"; Header( "Location: ".$retPage ); exit;
Ja, det var informationsrigt. :) Men, dette er noget der tilføjes til en indkøbskurv, når man trykker på et link. Kunne jo godt gøre det, så blev det jo bare med GET istedet for POST.
GET eller POST er ligegyldigt i den forbindelse. Kik på det og se, om ikke det ville være en meget god idé at rette lidt på din struktur ;o)
Synes godt om
Ny brugerNybegynder
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.