Butang belakang penyemak imbas membolehkan kami kembali dengan mudah ke halaman yang dilawati sebelum ini, yang pastinya sangat berguna. Tetapi kadangkala kita perlu mematikan ciri ini untuk
menghalang pengguna daripada mengganggu urutan akses halaman yang dijadualkan. Artikel ini memperkenalkan pelbagai penyelesaian untuk melumpuhkan butang kembali penyemak imbas yang boleh didapati di Internet, menganalisis kelebihan, keburukan dan keadaan yang berkenaan.
1. Gambaran Keseluruhan
Ramai orang telah bertanya, "Bagaimanakah saya boleh 'melumpuhkan' butang belakang penyemak imbas?", atau "Bagaimanakah saya boleh menghalang pengguna daripada mengklik butang belakang untuk kembali ke halaman yang dilawati sebelum ini? "Soalan ini juga merupakan salah satu soalan yang paling kerap ditanya di forum ASP. Malangnya, jawapannya sangat mudah: kami tidak boleh melumpuhkan butang belakang penyemak imbas
.
Pada mulanya saya tidak percaya bahawa seseorang mahu melumpuhkan butang belakang penyemak imbas. Kemudian, saya berasa lega apabila melihat bahawa ramai orang mahu melumpuhkan butang belakang
(satu-satunya yang mereka mahu lumpuhkan ialah butang belakang, bukan butang hadapan penyemak imbas). Kerana secara lalai, selepas pengguna menyerahkan borang, mereka boleh kembali ke halaman borang melalui
butang kembali (bukannya menggunakan butang "Edit"!), dan kemudian mengedit dan menyerahkan borang sekali lagi untuk memasukkan rekod baharu ke dalam pangkalan data. Ini adalah sesuatu yang kami
tidak mahu lihat.
Jadi saya memutuskan untuk mencari jalan untuk mengelakkan situasi ini. Saya melawati banyak laman web dan merujuk pelbagai kaedah pelaksanaan yang diperkenalkan oleh laman web ini. Jika anda
kerap melawati tapak web pengaturcaraan ASP, anda mungkin telah melihat beberapa kandungan yang diperkenalkan dalam artikel ini. Tugas artikel ini adalah untuk memperkenalkan semua kaedah yang mungkin kepada semua orang, dan kemudian mencari
kaedah terbaik!
2. Lumpuhkan caching
Antara banyak penyelesaian yang saya temui, salah satu daripadanya mencadangkan untuk melumpuhkan caching halaman. Khususnya, gunakan skrip sebelah pelayan seperti berikut:
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0
Response.CacheControl = "no-cache"
%>
Kaedah ini sangat berkesan! Ia memaksa penyemak imbas untuk melawat semula pelayan untuk memuat turun halaman dan bukannya membaca halaman dari cache. Apabila menggunakan kaedah ini, tugas utama pengaturcara adalah untuk mencipta pembolehubah peringkat sesi yang menentukan sama ada pengguna masih boleh melihat halaman yang tidak sesuai untuk akses melalui butang kembali. Memandangkan penyemak imbas
tidak lagi menyimpan cache halaman tersebut, penyemak imbas akan memuat turun semula halaman tersebut apabila pengguna mengklik butang belakang, dan program kemudiannya boleh menyemak pembolehubah sesi itu untuk melihat sama ada
pengguna harus dibenarkan membuka halaman tersebut.
Sebagai contoh, katakan kita mempunyai borang berikut:
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0 Response .CacheControl = "no-cache"
Jika Len(Session("FirstTimeToPage") > 0 maka
&single; Pengguna telah melawat halaman semasa dan kini kembali melawat.
&single; Kosongkan pembolehubah sesi dan ubah hala pengguna ke halaman log masuk.
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Respons.End
End Jika
&single; pengguna boleh melihat halaman Semasa
&single; Yang berikut mula mencipta borang
%>
diserahkan (apabila SompePage.asp dibuka), kita mesti memberikan nilai kepada FirstTimeToPage. Iaitu, dalam SomePage.asp kita perlu menambah kod
berikut:
Session("FirstTimeToPage") = "NO"
Dengan cara ini, jika pengguna yang telah membuka SomePage.asp mengklik belakang butang, penyemak imbas Pelayan akan diminta semula untuk memuat turun halaman Pelayan menyemak bahawa Sesi
("FirstTimeToPage") mengandungi nilai, jadi ia mengosongkan Session("FirstTimeToPage") dan mengubah hala pengguna ke halaman lain. Sudah tentu,
semua ini memerlukan pengguna mendayakan kuki, jika tidak pembolehubah sesi akan menjadi tidak sah.(Weitere Erläuterungen zu diesem Problem finden Sie unter Damit Sitzungsvariablen
funktionieren, muss der Webbesucher Cookies aktiviert haben?)
Darüber hinaus können wir auch clientseitigen Code verwenden, um zu verhindern, dass der Browser Webseiten zwischenspeichert:
Wenn Sie die obige Methode verwenden, um den Browser zu zwingen nicht mehr zwischenspeichern Bei Webseiten müssen Sie auf folgende Punkte achten:
„Pragma: no-cache“ verhindert nur, dass der Browser die Seite zwischenspeichert, wenn eine sichere Verbindung verwendet wird. Für Seiten, die nicht durch Sicherheit geschützt sind, wird „Pragma: no-cache“
als dasselbe betrachtet wie „Läuft ab: -1“. Zu diesem Zeitpunkt speichert der Browser die Seite noch im Cache, markiert die Seite jedoch als sofort ablaufend.
In IE 4 oder 5 wird das META HTTP-EQUIV-Tag „Cache-Control“ ignoriert und hat keine Auswirkung.
In praktischen Anwendungen können wir alle diese Codes hinzufügen. Da diese Methode jedoch nicht in allen Browsern funktioniert, wird sie nicht empfohlen. Aber
Wenn es sich um eine Intranet-Umgebung handelt und der Administrator steuern kann, welchen Browser der Benutzer verwendet, werden einige Leute meiner Meinung nach diese Methode trotzdem verwenden.
3. Andere Methoden
Die Methode, die wir als nächstes besprechen werden, konzentriert sich auf die Zurück-Schaltfläche selbst, nicht auf den Browser-Cache. Hier ist ein Artikel „Neuverkabelung der Zurück-Taste“, der
lesenswert ist. Mir ist jedoch aufgefallen, dass der Benutzer bei Verwendung dieser Methode zwar nicht die Seite sieht, auf der er zuvor Daten eingegeben hat, wenn er auf die Schaltfläche „Zurück“ klickt, er aber nur zweimal auf
klicken muss. Dies ist nicht der von uns gewünschte Effekt Oftmals gelingt es hartnäckigen Anwendern, vorbeugende Maßnahmen zu umgehen.
Eine andere Möglichkeit, die Zurück-Schaltfläche zu deaktivieren, besteht darin, clientseitiges JavaScript zu verwenden, um ein Fenster ohne Symbolleiste zu öffnen. Dadurch wird es für den Benutzer schwierig, zur vorherigen Seite zurückzukehren,
nicht unmöglich. Eine sicherere, aber eher lästige Methode besteht darin, beim Absenden des Formulars ein neues Fenster zu öffnen und gleichzeitig das Fenster zu schließen, in dem sich das Formular befindet. Aber ich bin der Meinung,
dass diese Methode keiner ernsthaften Überlegung wert ist, da wir nicht zulassen können, dass Benutzer jedes Mal, wenn sie ein Formular absenden, ein neues Fenster öffnen.
Können wir also auch JavaScript-Code zu der Seite hinzufügen, zu der die Benutzer nicht zurückkehren sollen? Der dieser Seite hinzugefügte JavaScript-Code kann
verwendet werden, um den Effekt des Klickens auf die Schaltfläche „Vorwärts“ zu erzeugen und so der Aktion entgegenzuwirken, die durch das Klicken des Benutzers auf die Schaltfläche „Zurück“ verursacht wird. Der zur Implementierung dieser Funktion verwendete JavaScript-Code lautet wie folgt
:
Auch hier ist diese Methode zwar effektiv, aber immer noch weit von der „besten Methode“ entfernt. Später sah ich jemanden, der vorschlug, location.replace zu verwenden, um von einer
Seite zu einer anderen zu wechseln. Das Prinzip dieser Methode besteht darin, den aktuellen Verlaufseintrag durch die URL der neuen Seite zu ersetzen, sodass nur eine Seite im Browserverlauf vorhanden ist und die Schaltfläche
„Zurück“ nie verfügbar wird. Ich denke, das ist wahrscheinlich das, wonach viele Leute suchen, aber es ist immer noch nicht in jeder Situation der beste Ansatz. Ein Beispiel für die Verwendung dieser
-Methode ist wie folgt:
Links zurück zu dieser Seite deaktivieren
Probieren Sie diesen Link aus:
Links zurück zu dieser Seite deaktivieren!
Der Nachteil dieses Ansatzes besteht darin, dass die einfache Verwendung von Response.Redirect nicht mehr funktioniert, da jedes Mal, wenn der Benutzer von einer Seite zur anderen wechselt,
wir location.history mit Client-Code löschen müssen. Beachten Sie außerdem, dass diese Methode den letzten Zugriffsverlaufsdatensatz löscht, nicht alle
Zugriffsdatensätze.
Klicken Sie auf den Link oben und Sie öffnen eine einfache HTML-Seite. Klicken Sie erneut auf die Schaltfläche „Zurück“ und Sie können sehen, dass nicht diese Seite, sondern die Seite
vor dieser Seite geöffnet wird! (Natürlich müssen Sie clientseitigen JavaScript-Code im Browser aktivieren.)
Nach einigem Suchen stellte ich fest, dass ich immer noch keine Möglichkeit fand, die Zurück-Schaltfläche des Browsers vollständig zu deaktivieren. Alle hier beschriebenen Methoden
können in unterschiedlichem Maße und auf unterschiedliche Weise verhindern, dass Benutzer zur vorherigen Seite zurückkehren, haben jedoch alle ihre eigenen Einschränkungen. Da es keine Möglichkeit gibt, die Zurück-Schaltfläche <script> <BR><!-- <BR>javascript:window.history.forward(1); <BR>//--> <BR></script> vollständig zu deaktivieren, besteht die beste Lösung darin, eine Mischung aus clientseitigen und serverseitigen Skripten zu verwenden.