Avatar billede sansalvador Nybegynder
10. december 2004 - 22:24 Der 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? :)
Avatar billede olebole Juniormester
10. december 2004 - 22:32 #1
<ole>

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'?  :)

/mvh
</bole>
Avatar billede philip1804 Nybegynder
10. december 2004 - 22:32 #2
Jeg ved ikke om det er direkte muligt, men du kan se hvilken side brugeren kommer fra - så kan du jo bare sammenligne med de links du har på siden!

/PBT
Avatar billede sansalvador Nybegynder
10. december 2004 - 22:48 #3
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%?
Avatar billede philip1804 Nybegynder
10. december 2004 - 22:52 #4
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!

/PBT
Avatar billede sansalvador Nybegynder
10. december 2004 - 22:55 #5
Ja, men hvad hvis nu man vil tilføje varen til kurven flere gange?
Avatar billede philip1804 Nybegynder
10. december 2004 - 22:56 #6
bare brug:

først i din index fil:
session_start();

En varible:
$_SESSION['erIKurv']
Avatar billede sansalvador Nybegynder
10. december 2004 - 23:00 #7
Ja, det ved jeg :) Bruger masser af sessions.

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)
Avatar billede philip1804 Nybegynder
10. december 2004 - 23:00 #8
Så skal du bare sætte en variable ud fra tiden!

add.php?id=blomst&now="2301"

så sætter du bare

$_SESSION['erIKurv']=$_GET['now'];

hvis der bliver trykket tilbage - så er $_GET['now'] stadig det samme, hvis "tilføj knappen" bliver trykket - så er $_GET['now'] noget nyt!

/PBT
Avatar billede sansalvador Nybegynder
10. december 2004 - 23:00 #9
Jeg vil jo bare forhindre folk I at kunne trykke "Back", så den ikke adderes igen DEN vej :)
Avatar billede philip1804 Nybegynder
10. december 2004 - 23:16 #10
Ok - det kan du bare gøre med dette lille hacks:

<body onLoad="history.go(+1)">

men normalt vil dette ikke være "god stil"

/PBT
Avatar billede philip1804 Nybegynder
10. december 2004 - 23:20 #11
Ellers kan du skjule knapperne, og deaktivere backspace på tastaturet med dette hack:

<script>
function KeyCache() {
  if (window.event && window.event.keyCode == 8) {
    window.event.keyCode = 123;
  }
}
document.onkeydown=KeyCache();
</script>

/PBT
Avatar billede sansalvador Nybegynder
10. december 2004 - 23:38 #12
Okay .. De virker lidt forskelligt, alle dine løsninger, men har har fået nogle værktøjer at arbejde videre med. Tak skal du have :)
Avatar billede philip1804 Nybegynder
10. december 2004 - 23:43 #13
Skulle det være en anden gang :)

/PBT
Avatar billede olebole Juniormester
11. december 2004 - 00:35 #14
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  :)
Avatar billede olebole Juniormester
11. december 2004 - 00:41 #15
... 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;

?>
Avatar billede sansalvador Nybegynder
11. december 2004 - 13:01 #16
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.

Jeg vil lige nærstudere det :)
Avatar billede olebole Juniormester
11. december 2004 - 20:25 #17
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)
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