Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie przez sesje (prosty skrypt)
Forum PHP.pl > Forum > PHP
Jozjasz
Witam szanownych forumowiczów

Chciałem napisać prosty skrypt logowania i wylogowania. Niby wszystko działa, ale po wylogowaniu i usunieciu zmiennych sesyjnych jak kliknę na przeglądarce "wstecz" to i tak wszystkie chronione dane są wyświetlane, a odświeżenie strony powoduje ponowne rozpoczęcie sesji. Doszedłem do wniosku, że przeglądarka pamięta wartości zmiennych: nazwy użytkownika i hasła.

1. Jak poprawić mój kod, żeby po kliknięciu na wstecz i odświeżeniu wczystywał się forumarz, a nie chronione dane?
2. Jak sprawić aby wogóle nie było możliwe oglądanie chronionych danych przez "wstecz" po wylogowaniu?

Gdybym mógł chociaz jakieś wskazówki dostać...
Kod:
  1. <?php
  2. echo '<?xml version="1.0" encoding="iso-8859-2"?>';
  3. ?>
  4. <head>
  5. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  6.  
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9. #name{color:darkred; font-size:10pt; margin-bottom:4cm}
  10. #wrongpass{font-size:15; text-align:center; color:red; font-weight:bold; margin-top:2cm;}
  11. #who{font-size:10pt; font-variant:small-caps;}
  12. #form{width:400px; margin:auto; margin-top: 4cm;}
  13. /*]]>*/
  14. </style>
  15. <title> funfair</title>
  16. </head>
  17. <body>
  18. <?php
  19.  
  20. if(isset($_POST['submitted'])){
  21.  
  22. if((($_POST['user'])==='user1') && (($_POST['pass'])==='haslo1')){
  23. //utwórz sesję logowania
  24. $_SESSION['auth']=1;
  25.  
  26. }
  27. else{
  28. echo "Wprowadziłeś nieprawidłowe dane...";
  29. exit();
  30. }
  31. }//koniec submitted
  32.  
  33. //na logout.php dochodzi do zniszczenia zmiennych sesyjnych
  34. echo "<div id='name'>Welcome to faunfair";if(($_SESSION['auth']) == 1){
  35. echo "<div style=\"color:#dd4902\">Jesteś zalogowany jako {$_POST['user']} <a href=\"logout2.php\"> Wyloguj</a></div>";}
  36. echo "</div>";
  37.  
  38.  
  39. if($_SESSION['auth'] == 1){
  40. echo "tajna informacja: you are an alien";
  41. }
  42.  
  43. else{
  44.  
  45. echo <<<FORM
  46. <form id="form" method="POST">
  47.  
  48. <fieldset>
  49. <p>login: <input type="text" name="user" size="20" maxlength="25" /></p>
  50. <p>password: <input type="password" name="pass" size="20" maxlength="25" /></p>
  51. <input type="hidden" name="submitted" />
  52. <input type="submit" value="send" />
  53.  
  54. </fieldset>
  55.  
  56. </form>
  57. FORM;
  58. }
  59.  
  60. ?>
  61. </body>
  62. </html>
celbarowicz
Na pierwszej stronie, jeśli nie była utworzona ukryta wartość sesyjna->tworzymy ją(jeśli była to sprawdzamy czy zgadza się z wymaganą na tej stronie). wartość tę przekazujemy na drugą stronę i sprawdzamy czy jest zgodna z wymaganą na drugiej stronie . Jeśli wartości się zgadzają otwieramy drugą stronę i ponownie tworzymy nową wartość która będzie potrzebna do przejścia na 3 stronę. Jeśli damy wstecz wartości nie będą się zgadzały i możemy zrobić przekierowanie na forum.php. (itd, itp)
Jozjasz
Dzięki za odpowiedź, ale nie za bardzo jest to dla mnie jasne...
U mnie klikam na "wyloguj" po czym następuje przejście do strony logout2.php i zniszczenie zmiennych, jak kliknę na wstecz i odświeże to znowu tworzy się zmienna sesyjna, gdyż przeglądarka pamięta wartości superglobalnych z formularza, a jeśli tak, to następuje odtworzenie sesji logowania...
celbarowicz
strona1.php
  1. <?php
  2. if(!isset($_SESSION['kod'])){
  3.  
  4. $_SESSION['kod']='znak_1';
  5.  
  6. echo '<form method="post" action="strona2.php">';
  7. echo '<input type="submit" value="przejdź do strony 2">';
  8. echo '</form>';
  9.  
  10. }else{ header('location:http://www.wp.pl/'); }
  11.  
  12.  
  13. ?>
  14.  


strona2.php
  1. <?php
  2. if($_SESSION['kod']=='znak_1'){$_SESSION['kod']='bleble';
  3. echo 'tutaj działamy na stronie 2';
  4. echo '<form method="post" action="strona3.php">';
  5. echo '<input type="submit" value="przejdź do strony 3">';
  6. echo '</form>';
  7.  
  8. echo '<form method="post" action="strona1.php">';
  9. echo '<input type="submit" value="przejdź do strony 1">';
  10. echo '</form>';
  11.  
  12. }else{ header('location:http://www.wp.pl/'); }
  13.  
  14.  
  15. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.