php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
wie kann man den zurück-button unterbinden?


 
whoda
03-02-2003, 14:38 
 
hallo,

wie kann ich per php unterbinden, dass der zurückbutton benutzt werden kann.
ist das möglich oder ist das nur mit js möglich?

hab mir überlegt, das ich der seite1 eine session verpasse mit wert 1, sobald seite2 aufgerufen wurde überschreibe ich diese mit wert 2. will client zurück frage ich die session mit einer if-anweisung ab.
ist die session != 1 dann geht er wieder auf seite2.

geht da so wie ich mir das denke oder gibt es eine andere möglichkeit?

 
wahsaga
03-02-2003, 14:45 
 
was soll so eine kinderkacke? warum wollen immer wieder irgendwelche 'webdesigner' mir die möglichkeit nehmen, mit meinem browser so zu navigieren, wie ich das möchte...?


btw: vergiss nicht auch eine rechte-maustaste-sperrscript einzubauen, erst dann sind die n00bs wirklich beeindruckt!

 
mysterx2000
03-02-2003, 14:58 
 
du hast ja recht, aber kann man das nicht auch in einem anderen ton sagen?

 
whoda
03-02-2003, 15:10 
 
du hast ja recht.
normalerweise mache ich das ja sonst auch nicht.

ich habe nur ein problem damit.
auf seite1 lasse ich angaben aus einem formular in eine datenbank schreiben.
auf seite 2 kann man seine emailadressen anlegen bzw. löschen. diese lasse ich dann anzeigen über die zuletzt angelegte id von seite1.
geht man aber von seite2 zurück auf seite1 und es wurden bereits emailadressen angelegt und ich gehe dann wieder auf seite2. werden meine bereits angelegten emailadressen nicht mehr angezeigt.

deshalb wollte ich das unterbinden, da man ja später nochmal die möglichkeit hat seine angaben zu ändern.

vielleicht hast du auch eine bessere möglichkeit?
wäre dir sehr dankbar!

 
pauino
03-02-2003, 15:21 
 
also hier nur ein kleiner tip vielleicht hilft er dir weiter,

ich packe alle inserts und upadtes in dateien, die am ende immer mit header ("Location : deinlink.html") abgeschlossen werden.
dieser header ist eine weiterleitung, die vom browser nicht in die history geschrieben wird (anders als der metatag refresh).
so hat man keine probleme mit doppelten eintraegen, wenn der benutzer den backbutton benutzt

http://www.php-resource.de/manual.php?p=function.header

versuchs mal so

liebe gruesse von pau

 
whoda
03-02-2003, 16:03 
 
das mach ich ja auch. zwischen den seiten1 + 2 habe ich auch scripte für das insert.
aber ich verstehe nicht warum dadurch die einträge nicht doppelt in die db eingetragen werden?

 
whoda
03-02-2003, 17:14 
 
:dontknow:

 
HenryH
03-02-2003, 21:43 
 
Schalte doch einfach das Caching der betreffenden Seite ab

Gruß
Henry

 
Abraxax
04-02-2003, 00:58 
 
Original geschrieben von HenryH
Schalte doch einfach das Caching der betreffenden Seite ab

das bringt ja gar nix.

@whoda
denke am besten noch einmal darüber nach, wie du was nun machst. wenn man es richtig macht, braucht man den trick nicht mit dem backbutton. :teach:

aber um die dennoch zu helfen, kannst du mal bei selfhtml suchen. man kann auch die history des browsers mittels JS löschen.
window.history.clear oder so müsste es sein.
das machst du dann brav auf jeder seite und der backbutton bleibt inaktiv.
ist aber zugegebenermaßen absolut unter niveau. :teach:
eigentlich dürfte ich dir das ganz nicht sagen, dass man das so machen könnte :p

 
HenryH
04-02-2003, 01:19 
 
Und was ist 'history des Browser löschen' anderes, als das Caching erst garnicht zuzulassen, was bei seiner Problemstellung die einzig richtige Lösung ist???

Hier ging es um die Lösung eines bestehenden Programm-Problems, ohne ihn dazu zu veranlassen, seine DB-Struktur grundsätzlich zu ändern.

Klar, bei einem sauber aufgebautem Script mit entsprechenenden Fehler-Abfang-Routinen taucht das Thema garnicht erst auf, aber JavaScript, das der User abschalten kann, darf hier nicht das Mittel der Wahl sein.

Gruß
Henry

 
Abraxax
04-02-2003, 01:24 
 
Original geschrieben von HenryH
Und was ist 'history des Browser löschen' anderes, als das Caching erst garnicht zuzulassen, was bei seiner Problemstellung die einzig richtige Lösung ist???

cache und history sind zwei paar schuhe :teach:

 
HenryH
04-02-2003, 07:58 
 
technisch gesehen, ja, in seinem Fall aber mit denselben Auswirkungen: Kein Zugriff auf evtl. gespeicherte Daten des Browsers bei Betätigen des Back-Buttons

 
Abraxax
04-02-2003, 13:29 
 
ich weiss schon worauf du hinaus willst, aber dann zeige das mal als beispiel.

wenn man in der html-datei ein 'no cache' einbaut, kann man immer noch über den back-button da dran. also wird die seite auch neu geladen.

 
wahsaga
04-02-2003, 13:40 
 
und mit 'f5' die seite aktualisieren kann ich auf jeden fall immer noch.
und wenn die seite jetzt von einem formular aus aufgerufen wurde, dann werden auch die formulardaten (ggf. erst nach rückfrage des browsers) noch mal gesendet, und dein eintrag würde auch nochmal gemacht, sofern du das nicht irgendwie anders abfängst...

 
Abraxax
04-02-2003, 13:44 
 
auch richtig ... :)

jedoch springt whoda immer zu einer datei weiter, die nur anzeigen macht, aber keine änderungen. da ist F5 auch egal..... :)

abgesehen davon, dass man so nie coden würde .... :D

 
HenryH
04-02-2003, 13:46 
 
Beispiel:


<?
header("Pragma: no-cache");
header("Cache-Control: no-cache");
header("Expires: 0");
?>
<html>
<body>
<form method="post">
<input type="text" name="name"><br>
<input type="submit">
</form>
<br>
<?
echo $_POST["name"];
?>
</body>
</html>


Mit 'Zurück-Button' kommst Du in dieser Version nicht mehr an einen Eintrag im Textfeld, entfernst Du die Header-Infos, dann schon.

Und doppelte Einträge kann ich leicht entweder mit JavaScript oder - noch sicherer - mit einer mitgesendeten ID (Zufallszahl o.ä.) durch Vergleich vermeiden.

Gruß
Henry

 
Abraxax
04-02-2003, 13:56 
 
ok. wenn das so ist, und es funktioniert, ist es ok.

ich persönlich würde mir jedoch das ganze konzept besser überdenken. :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:41 Uhr.