Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> blokada przycisku Wstecz, a właściwie czyszczenie historii przeglądarki
yahreck
post 6.01.2008, 06:52:57
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 12.10.2007

Ostrzeżenie: (0%)
-----


1. Wiem, że nie można zablokować przycisku Wstecz w przeglądarce.
2. Wiem, że temat jest wałkowany co drugi dzień na forum.
3. Wiem jak zrobić żeby formularz nie był zapisany do bazy powtórnie.
4. Nie wiem jak zrobić, żeby nie można było oglądać formularza po jego wysłaniu, a jest to w przypadku mojego skryptu konieczne.

Próbuję nadpisać historię przeglądarki:
wersja 1
plik1:
  1. <a href ="javascript:document.location.replace('plik2')">plik2</a>

ta wersja działa (po przejściu do plik2, w historii przeglądarki nie ma plik1), ale ja potrzebuję wysłać formularz, więc jest to bezużyteczne

wersja 2
w pliku plik1 mam formularz, który przesyła dane do pliku plik2
plik2:
  1. <?php
  2. if (isset($ciasteczko)) 
  3. echo "<br>ciasteczko ustawione";
  4. else{ 
  5. setcookie("ciasteczko","wartosc");
  6. ?>
  7. <script>
  8. document.location.replace('plik2');
  9. </script>
  10. <?php
  11. }
  12. ?>

ta wersja nie działa (w historii przeglądarki jest plik1 i plik2) i nie wiem dlaczego

Nie upieram się przy JS, ale to wydaje mi się jedyne możliwe rozwiązanie.
Uważasz inaczej? Napisz
Z góry dziękuę za ewentualne sugestie.


--------------------
Człowiek uczy się całe życie, ale i tak głupim umrze.
Go to the top of the page
+Quote Post
sf
post 6.01.2008, 08:30:11
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Ale opisałeś problem, jak dla mnie to wystarczy zrobić po obsłudze formularza header("Location: dziekujemy.php");exit;


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
yahreck
post 6.01.2008, 14:17:22
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 12.10.2007

Ostrzeżenie: (0%)
-----


Tak jak napisałem
Cytat(yahreck @ 6.01.2008, 06:52:57 ) *
... żeby nie można było oglądać formularza po jego wysłaniu, a jest to w przypadku mojego skryptu konieczne.

choć może niejasno się wyraziłem, chodzi mi o to, żeby nie można było oglądać formularza po jego wysłaniu za pomocą przycisku Wstecz w przeglądarce.
Natomiast rozwiązanie
Cytat(sf @ 6.01.2008, 08:30:11 ) *
header("Location: dziekujemy.php");exit;

niestety powoduje dopisanie do historii w przeglądarce, a tego być nie może.
Po za tym, formularz przesyła metodą POST informacje z formularza, które muszą się pokazać po jego wysłaniu, a w przypadku przekierowania header będą utracone.


--------------------
Człowiek uczy się całe życie, ale i tak głupim umrze.
Go to the top of the page
+Quote Post
marcio
post 6.01.2008, 14:25:13
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Troche to glupie ale znalazlem cos takiego w js "wyłączenie prawego klawisza"
  1. <?php
  2. <script TYPE="text/javascript" LANGUAGE="JavaScript"> 
  3. <!--
  4. if (window.Event)
  5. document.captureEvents(Event.MOUSEUP);
  6.  
  7. function nocontextmenu(){
  8.  
  9. event.cancelBubble = true
  10. event.returnValue = false;
  11. return false;
  12. }
  13.  
  14. function norightclick(e){
  15.  
  16. if (window.Event){
  17. if (e.which == 2 || e.which == 3)
  18. return false;
  19. }
  20. else
  21. if (event.button == 2 || event.button == 3){
  22. event.cancelBubble = true
  23. event.returnValue = false;
  24. return false;
  25. }
  26. }
  27. document.oncontextmenu = nocontextmenu;
  28. document.onmousedown = norightclick;
  29. //-->
  30. </SCRIPT>
  31. ?>

Moze da rade przerobic na lewy przycisk ale wtedy juz user nic nie zrobic chyba ze najpierw zablokujesz a potem przekierujesz na nasteona strone gdzie juz nie bedzie tej funkcji i wciskajac przycisc WSTECZ na tej tronie przeniesie cie do tej gdzie jest blokada i cie znowu przkiereuje na strone na ktorej byles taka jest idea potem czy mozna to zrealizowac to nie wiem


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
yahreck
post 6.01.2008, 17:01:09
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 12.10.2007

Ostrzeżenie: (0%)
-----


Cytat(marcio @ 6.01.2008, 14:25:13 ) *
... "wyłączenie prawego klawisza"...
Moze da rade przerobic na lewy przycisk


Problem w tym, że cofnąć się można na dwa sposoby:
1. myszką - kliknąć na przycisk Wstecz w przeglądarce,
lub
2. klawiaturą - klawiszem Backspace.


--------------------
Człowiek uczy się całe życie, ale i tak głupim umrze.
Go to the top of the page
+Quote Post
marcio
post 6.01.2008, 17:12:17
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Omg ale masz problemy myslisz ze wszyscy wiedza ze mozna sie cofnac klawiszem backspace ale masz problemy albo jedno albo drugie a pozatym jak idzie zablokowac przycisk myszy i wyciagnac cd za pomoca js to mozesz i idzie zablokowac klawisz backspace albo za pomoca javy nie wiem poszukaj ja sie na tym nie znam

Ten post edytował marcio 6.01.2008, 17:13:18


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
simperium
post 16.01.2008, 19:35:09
Post #7





Grupa: Zarejestrowani
Postów: 157
Pomógł: 5
Dołączył: 3.03.2004

Ostrzeżenie: (0%)
-----


ja rozwiązałem to w ten sposób, że formularz otwiera się w nowym oknie, po kliknięciu wyślij wysyła dane do pliku w oknie poprzednim, zamykając się... proste i skuteczne smile.gif


--------------------
Kliknij na "POMÓGŁ", by poprawić mi samopoczucie :D
Go to the top of the page
+Quote Post
-HB FreeLancer-
post 27.09.2012, 22:30:48
Post #8





Goście







Może tak:
I. Strona logowania -> logowanie.html
  1. <!DOCTYPE html>
  2. <title>Blokada przycisku wstecz: logowanie.html</title>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. </head>
  5. Logowanie w PHP (login, hasło) -> Przenosi nas do: strona_1.html<br />
  6. lub szybka piłka:<br />
  7. <a href="strona_1.html">Logowanie</a>
  8. </body>
  9. </html>


II. strona_1.html -> po zalogowaniu:
  1. <!DOCTYPE html>
  2. <title>Blokada przycisku wstecz: strona_1.html</title>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript">
  5. window.history.forward();
  6. function blokujWstecz(){window.history.forward();}
  7. </head>
  8. <body onload="blokujWstecz();" onpageshow="if(event.persisted) blokujWstecz();" onunload="">
  9. <a href="strona_2.html">strona_2</a><br />
  10. <form action="" method="post">
  11. <input type="submit" value="Wyloguj" name="wyloguj" id="wyloguj" />
  12. </form>
  13. <?php
  14. if(isset($_POST['wyloguj']) && $_POST['wyloguj']){
  15. $_SESSION = array(); //Usuwamy wszystkie zmienne sesyjne
  16. session_destroy(); //Niszczymy sesję
  17. setcookie('PHPSESSID','',time()-300,'/','',0); //Sprzątamy po sobie w przeglądarce
  18. header("Location: logowanie.html"); //Przenosimy się do logowanie.html
  19. exit(); //Kończymy
  20. }
  21. ?>
  22. </body>
  23. </html>


III. strona_2.html -> kolejna strona
  1. <!DOCTYPE html>
  2. <title>Blokada przycisku wstecz: strona_2.html</title>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript">
  5. window.history.forward();
  6. function blokujWstecz(){window.history.forward();}
  7. </head>
  8. <body onload="blokujWstecz();" onpageshow="if(event.persisted) blokujWstecz();" onunload="">
  9. <a href="strona_1.html">strona_1</a><br />
  10. <form action="" method="post">
  11. <input type="submit" value="Wyloguj" name="wyloguj" id="wyloguj" />
  12. </form>
  13. <?php
  14. if(isset($_POST['wyloguj']) && $_POST['wyloguj']){
  15. $_SESSION = array(); //Usuwamy wszystkie zmienne sesyjne
  16. session_destroy(); //Niszczymy sesję
  17. setcookie('PHPSESSID','',time()-300,'/','',0); //Sprzątamy po sobie w przeglądarce
  18. header("Location: logowanie.html"); //Przenosimy się do logowanie.html
  19. exit(); //Kończymy
  20. }
  21. ?>
  22. </body>
  23. </html>


itd. kolejne strony.

Po wylogowaniu i powrotu do pliku logowanie.html przyciskiem WSTECZ nie można już wrócić
do strona_1.html, strona_2.html i następnych, natomiast można się ponownie zalogować.
Powód edycji: [Daiquiri]: Usuwam link pozycjonujący
Go to the top of the page
+Quote Post
Shido
post 28.09.2012, 07:32:41
Post #9





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

Ostrzeżenie: (0%)
-----


Mi przyszło do głowy raczej zablokowanie strony formularza:

Strona prowadząca do formularza:
  1. $_SESSION["xyz"] = true;


formularz:
  1. if(isset($_SESSION["xyz"])
  2. {
  3. exit();
  4. }
  5. else
  6. {
  7. formularz
  8. }


Strona zapisująca formularz:
  1. unset($_SESSION["xyz"]);


Mam nadzieje że nie pokopałem nazw funkcji tongue.gif
Tak czy inaczej w teorii, bez zainicjowania wysłania nowego formularza nie powinno dać się cofnąć i obejrzeć formularz.

@down.
Huh... nie zwróciłem uwagi :<

Ten post edytował Shido 28.09.2012, 09:16:15


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
b4rt3kk
post 28.09.2012, 09:08:35
Post #10





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Po co odgrzewacie stare koltlety? 16.01.2008 ostatni post był? Gość ewidentnie chciał zareklamować swoją stronkę, więc się wpisał w pierwszy lepszy temat, na który umiał udzielić odpowiedzi.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
-HB FreeLancer-
post 28.09.2012, 13:09:56
Post #11





Goście







Witam!
Oczywiście temat ten jest wałkowany na różnych forach.
Owszem, przeglądałem i czytałem.
Dlatego usystematyzujmy zagadnienie:
1. Problem dotyczy logowania do określonego zasobu stron znajdujących się w jakimś katalogu.
2. Chcemy, aby tylko osoby mające login i hasło miały do niego dostęp.
3. Dlatego musimy im to udostępnić poprzez formularz logowania z możliwością wylogowania się.

Jak najbardziej możemy to zrobić jak Pan Shido zaproponował i na wiele jeszcze innych sposobów.
Pozostanie zawsze problem z przyciskiem WSTECZ przeglądarki.

Tutaj musimy sobie odpowiedzieć na pytanie - dlaczego (odpowiedź nie dla znawców PHP)?
(takie fora przeglądają również osoby, które dopiero się uczą - to dla nich)

Łopatologia poglądowa!!!
Załóżmy, że przygotowaliśmy stronę z formularzem (PHP), która umieszczona jest na serwerze.
Wpisując adres tej strony (z formularzem) w przeglądarce internetowej i klikając np. Enter,
wysyłamy żądanie poprzez protokół HTTP do jej wyświetlenia na monitorze naszego komputera.

Co dzieje sie po stronie serwera po wysłaniu żadania?
Interpreter PHP (po stronie serwera) przetwarza naszą stronę z formularzem, która z kolei po przetworzeniu
zwracana jest do naszej przeglądarki w postaci kodu HTML (źródło kodu możemy podejrzeć).
Każdą tak zawróconą stronę przeglądarka zapisuje w swojej pamięci, by móc ją odtworzyć po wciśnięciu
przycisku WSTECZ (czyli możemy wracać się do stron, które wcześniej pobraliśmy przez wpisnie adresu WWW
lub kliknięcie w link) - jest to historia przglądanych przez nas stron, którą możemy podejrzeć lub usunąć.
To tyle co do mechanizmu w uproszczeniu.

Otóż, te dwa byty: interpreter PHP i przeglądarka internetowa wykonują swoją robotę niezależnie od siebie.
Pierwszy po stronie Serwera, drugi po stronie Klienta. Przeglądarka ma w "nosie" to co wyprawia interpreter PHP.
Czeka na gotowy kod, by go wyświetlić.
Dlatego jakiekolwiek próby, ujarzmienia przycisku WSTECZ kodem PHP nie będzie skuteczne.
Przynajmniej ja niczego takiego nie znam.

Dlatego wrzuciłem kawałek kodu, który możecie przetestować i ewentualnie wprowadzić jakieś
udoskonalenia lub poprawki. Chętnie skorzystam z takich nowości.

P.S.
Jeżeli użyjemy protokołu HTTPS, wówczas przeglądarka będzie wiedziała jak się zachować.
Oczywiście, aby móc to robić musimy liczyć sie z kosztami certyfikatu.

................................................................................
...............................................................................
Mam nadzieję, że nie zostanę zlinczowany, bo pierwsze oznaki bynajmniej na to wskazują,
Uważam, że każdy pogląd jest cenny, nawet błędny czy prymitywny.

Pan b4rt3kk bynajmniej, niezbyt przychlnie się do mnie ustosunkował, ale być może to tylko
taka niezręczna gafa?

Pozdrawiam.

Go to the top of the page
+Quote Post
binprogrammer
post 28.09.2012, 13:40:56
Post #12





Grupa: Zarejestrowani
Postów: 249
Pomógł: 8
Dołączył: 10.08.2011
Skąd: Bełchatów

Ostrzeżenie: (10%)
X----


Cytat
Omg ale masz problemy myslisz ze wszyscy wiedza ze mozna sie cofnac klawiszem backspace ale masz problemy albo jedno albo drugie a pozatym jak idzie zablokowac przycisk myszy i wyciagnac cd za pomoca js to mozesz i idzie zablokowac klawisz backspace albo za pomoca javy nie wiem poszukaj ja sie na tym nie znam


zmieniłeś moje życie tym zdaniem, od teraz używam bs biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2025 - 07:23