Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wylogowany, ale nie do końca.!?
rja
post 10.01.2007, 09:54:46
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 8.12.2006

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


Witam, na jednej znanej stronie ze skryptami, jest bardzo prosty skrypt logowania oparty na sesjach.
Plik logowanie.php
  1. <?
  2. if ($_GET["login"]=="koniec") { // wylogowanie
  3.  
  4. }
  5.  
  6.  
  7. function istnieje($login, $haslo) {
  8. if ($login=="" or $haslo=="") return false;
  9. $baza = mysql_connect("localhost", "root", "haslo1");
  10. if ($baza) {
  11. $wynik = mysql_select_db("baza1");
  12. if ($wynik) {
  13. $wynik=mysql_query("SELECT * FROM m_ludzie WHERE
  14. m_name='$login' and m_haslo='$haslo'");
  15. if (mysql_num_rows($wynik)==1) return true;
  16. }
  17. mysql_close($baza);
  18. }
  19. return false;
  20. }
  21.  
  22.  
  23. if (istnieje($_POST["login"],$_POST["haslo"])) { // zalogowanie
  24. $_SESSION["zalogowany"]="tak";
  25. //$_SESSION["login"]=$_POST["login"];
  26. //$_SESSION["haslo"]=$_POST["haslo"];
  27.  
  28. }
  29.  
  30.  
  31. if ($_SESSION["zalogowany"]=="tak") {
  32. echo "czesc ".$_SESSION["login"];
  33. echo "<p><a href="{$_SERVER["PHP_SELF"]}?login=koniec">wyloguj się</a>";
  34. } else {
  35. echo "aby zalogować się, wypełnij formularz";
  36. echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">
  37. Login:<br /><input type="text" name="login" /><br />
  38. hasło:<br /><input type="text" name="haslo" /><br />
  39. <input type="submit" value="OK" />
  40. </form>';
  41. }
  42.  
  43. ?>

Plik index.php
  1. <? session_start(); ?>
  2.  
  3. <p>
  4. nag│owek strony, menu
  5. </p>
  6.  
  7.  
  8. <? include("logowanie.php"); ?>
  9.  
  10. <p>
  11. dalsza TAJNA treŠ g│ˇwnej strony...
  12. </p>
  13. <a href="index2.php">inna strona</a>

i plik index2.php
  1. <? session_start(); ?>
  2.  
  3. <p>
  4. nag│owek strony, menu
  5. </p>
  6.  
  7.  
  8. <? include("logowanie.php"); ?>
  9.  
  10. <p>
  11. dalsza TAJNA treŠ innej strony...
  12. </p>
  13. <a href="index.php">strona g│ˇwna</a>

Co do TAJNEJ części strony to widać ją, czy ktoś jest zalogowany czy też nie. Ale mniejsza o to.
Chodzi mi taką rzecz:
PO zalogowaniu się a następnie po wylogowaniu, kiedy cofam się przyciskiem WSTECZ w przeglądarce dochodzę do momentu kiedy mam komunikat : Otwierana strona zawiera dane POSTDATA.....". Po zatwierdzeniu OK, okazuje się że jestem zalogowany!!!.
Czego brakuje w tym skrypcie, aby nie dopuścić do takiego zdarzenia??

Ten post edytował rja 10.01.2007, 09:55:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
YagAA
post 10.01.2007, 10:40:37
Post #2





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 23.07.2005

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


  1. <?
  2. if ($_GET["login"]=="koniec") { // wylogowanie
  3.  
  4. }
  5. function istnieje($login, $haslo) {
  6. if ($login=="" or $haslo=="") return false;
  7. $baza = mysql_connect("localhost", "root", "haslo1");
  8. if ($baza) {
  9. $wynik = mysql_select_db("baza1");
  10. if ($wynik) {
  11. $wynik=mysql_query("SELECT * FROM m_ludzie WHERE
  12. m_name='$login' and m_haslo='$haslo'");
  13. if (mysql_num_rows($wynik)==1) return true;
  14. }
  15. mysql_close($baza);
  16. }
  17. return false;
  18. }
  19. if (istnieje($_POST["login"],$_POST["haslo"])) { // zalogowanie
  20. $_SESSION["zalogowany"]="tak";
  21. //$_SESSION["login"]=$_POST["login"];
  22. //$_SESSION["haslo"]=$_POST["haslo"];
  23.  
  24. }
  25. if ($_SESSION["zalogowany"]=="tak") {
  26. echo "czesc ".$_SESSION["login"];
  27. echo "<p><a href="{$_SERVER["PHP_SELF"]}?login=koniec">wyloguj się</a>";
  28. } else {
  29. echo "aby zalogować się, wypełnij formularz";
  30. echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">
  31. Login:<br /><input type="text" name="login" /><br />
  32. hasło:<br /><input type="text" name="haslo" /><br />
  33. <input type="submit" value="OK" />
  34. </form>';
  35. }
  36.  
  37. ?>


Zmień na

  1. <?
  2. if ($_GET["login"]=="koniec") { // wylogowanie
  3. $_SESSION = array(); 
  4. }
  5. function istnieje($login, $haslo) {
  6. if ($login=="" or $haslo=="") return false;
  7. $baza = mysql_connect("localhost", "root", "haslo1");
  8. if ($baza) {
  9. $wynik = mysql_select_db("baza1");
  10. if ($wynik) {
  11. $wynik=mysql_query("SELECT * FROM m_ludzie WHERE
  12. m_name='$login' and m_haslo='$haslo'");
  13. if (mysql_num_rows($wynik)==1) return true;
  14. }
  15. mysql_close($baza);
  16. }
  17. return false;
  18. }
  19. if (istnieje($_POST["login"],$_POST["haslo"])) { // zalogowanie
  20. $_SESSION["zalogowany"]="tak";
  21. //$_SESSION["login"]=$_POST["login"];
  22. //$_SESSION["haslo"]=$_POST["haslo"];
  23.  
  24. }
  25. if ($_SESSION["zalogowany"]=="tak") {
  26. echo "czesc ".$_SESSION["login"];
  27. echo "<p><a href="{$_SERVER["PHP_SELF"]}?login=koniec">wyloguj się</a>";
  28. } else {
  29. echo "aby zalogować się, wypełnij formularz";
  30. echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">
  31. Login:<br /><input type="text" name="login" /><br />
  32. hasło:<br /><input type="text" name="haslo" /><br />
  33. <input type="submit" value="OK" />
  34. </form>';
  35. }
  36.  
  37. ?>


I zobacz,czy będzie działało.
Go to the top of the page
+Quote Post
rja
post 10.01.2007, 10:50:57
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 8.12.2006

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


NIe pomogło.
Go to the top of the page
+Quote Post
kriqs
post 10.01.2007, 11:10:18
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 31.05.2006

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


jak dasz ok to sie zalogujesz ponownie sama przegladarka ci mowi ze wysle dane ponownie wiec tym samy sie zalogujesz smile.gif. tak mi sie wydaje smile.gif


--------------------
Pozdrawiam
kriqs

mam nadzieje ze pomoglem :)
Go to the top of the page
+Quote Post
sebik
post 10.01.2007, 16:55:23
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.01.2007

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


kriqs ma racje, jezeli sie cofasz (tak samo jak odswiezasz po zalogowaniu) to wysylasz dane formularza ponownie, moze pokombinu cos w javascript (window.history.previous=" " czy cus takiego, moze by dzialalo)
Go to the top of the page
+Quote Post
Dandelion
post 10.01.2007, 19:55:17
Post #6





Grupa: Zarejestrowani
Postów: 169
Pomógł: 0
Dołączył: 27.01.2006

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


a nie lepiej po wylogowaniu ustawic przekierowanie na strone glowna ?
Go to the top of the page
+Quote Post
rja
post 12.01.2007, 08:54:37
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 8.12.2006

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


Wiem , że sama przeglądarka mi mówi że się ponownie zaloguje. Ale chodzi o to żeby przeglądarka nie pamiętała tych danych POSTDATA. Przecież jest wiele takich stron, gdzie cofanie się nie powoduje takiego zachowania przeglądarki. I dlatego chciałem wiedzieć jak to jest robione.
Go to the top of the page
+Quote Post
mokry
post 13.01.2007, 19:41:21
Post #8





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


Kiedyś przeglądałem ten topic i dzisiaj podczas pisania nowej aplikacji przez przypadek rozwiązałem ten problem winksmiley.jpg

Podczas procesu logowania, użyj header() i przenieś użytkownika na jakąs stronę. Pomoże... Przynajmnije u mnie działa pod FF:
  1. ]
  2. <?
  3. //LOGOWANIE -START-
  4. if($action == "login") {
  5. $title = "Logowanie:";
  6. $login = stripslashes($_POST['login']);
  7. $password = stripslashes(md5($_POST['password']));
  8. $query = "SELECT id, login, haslo, poziom, imie, nazwisko FROM users WHERE login = '$login'";
  9. $wynik = mysql_query($query)or die(mysql_error($wynik));
  10. $row = mysql_fetch_array($wynik);
  11. if($row['haslo'] === $password) {
  12. $_SESSION['id'] = $row['id'];
  13. $_SESSION['zalogowany'] = 1;
  14. $_SESSION['poziom'] = $row['poziom'];
  15. $_SESSION['name'] = $row['imie']." ".$row['nazwisko'];
  16. $tresc = header('Refresh: 3; URL='index.php'')." <br/><b>Witaj ".$row['imie']."!</b><br/><br/>
  17. Za chwilę zostaniesz automatycznie przekierowany do spisu Twoich projektów...<br/>
  18. <br/>";
  19. ?>


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
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: 25.07.2025 - 07:54