Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Cookie a sesja, cookie w sesji
krystian19
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


Witam. Mam taki prosty system rejestracji i logowania użytkowników z bazy danych na swojej stronce. Wszystko działa poprawnie. Chciałbym jednak zrobić coś na styl autologowania aby użytkownik za każdym razem nie musiał wpisywać loginu i hasła, a został albo automatycznie zalogowany albo zostało mu już login i haslo wyświetlone, gotowe tylko do zatwierdzenia. Kombinowałem na różne sposoby z setcookie($login, $haslo, time()+9999); if(!isSet($_COOKIE['wyslane']) && !isSet($_POST['wyslane'])){ ale nic mi z tego nie wychodzi :/ Bardzo proszę o pomoc.

  1. <?php
  2. session_start(); // rozpoczecie sesji
  3. ?>
  4.  
  5.  
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  7. <title>stronka</title>
  8. <link rel="stylesheet" type="text/css" href="style.css" />
  9. <p><span class="styl2"><font face="Comic Sans MS" color="#006699">Zaloguj się</font></span><br>
  10. <div class="content2">
  11.  
  12. <?php
  13.  
  14. if (!isset($_SESSION['login'])) {
  15.  
  16. if ($_POST['wyslane']) {
  17.  
  18. include 'baza.php';
  19. $tabela = 'uzytkownicy';
  20.  
  21.  
  22. $login = $_POST["login"];
  23. $haslo = $_POST["haslo"];
  24.  
  25. setcookie($login, $haslo, time()+9999);
  26.  
  27.  
  28. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  29. login='$login' and haslo='$haslo' and status=0");
  30.  
  31.  
  32. if (mysql_num_rows($wynik) == 1) {
  33. $info = mysql_fetch_array($wynik);
  34. echo '<span class="1">Nie aktywowałeś jeszcze konta</span>';
  35.  
  36. }
  37.  
  38.  
  39. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  40. login='$login' and haslo='$haslo' and status=1");
  41.  
  42.  
  43. if (mysql_num_rows($wynik) == 1) {
  44. $info = mysql_fetch_array($wynik);
  45. $_SESSION["login"] = $info["login"];
  46. $_SESSION["imie"] = $info["imie"];
  47. $_SESSION["nazwisko"] = $info["nazwisko"];
  48. $_SESSION["image"] = $info["image"];
  49.  
  50. $last_login = date('YmdHis');
  51.  
  52.  
  53.  
  54. header('Location: index.php ');
  55. } else {
  56. echo '<span class="2">Zostały wprowadzone złe dane!</span>';
  57. }
  58. mysql_close($polaczenie);
  59. }
  60.  
  61.  
  62. echo <<< KONIEC
  63.  
  64.   <form class="form" action="logowaniee.php" method="post">
  65.   <input type="hidden" name="wyslane" value="TRUE" />
  66.  
  67.   <p>
  68. <div class="label"><label for="login"><font color="#000000">Login</font></label></div>
  69. <font color="#000000">
  70. <input type="text" name="login" id="login" />
  71. </font>
  72.  
  73. <p>
  74. <div class="label"><label for="haslo"><font color="#000000">Hasło</font></label></div>
  75. <font color="#000000">
  76. <input type="password" name="haslo" id="haslo" />
  77. </font>
  78.  
  79.   <p class="submit2">
  80.   <font color="#000000">
  81.   <input type="submit" value="Zaloguj mnie" />
  82.   </font>
  83.   </p>
  84.  
  85. <p class="przypomnij">
  86. <a href="przypomnieniee.php"><font color="#000000">Nie pamietasz hasła?</font></a>
  87. </p>
  88.  
  89.   </form>
  90. KONIEC;
  91.  
  92. } else {
  93. header('Location: index.php');
  94. }
  95.  
  96. if ($_GET["wylogowanie"] == "tak") {
  97.  
  98. header('Location: index.php');
  99. }
  100.  
  101. ?>
  102.  
  103.  
  104.  
  105. </div>
  106.  
  107. <p><br>
  108.  
  109.  


Znalazłem na internecie taką pomoc, w podobnej sprawie:


do formularza dodałem:
<input type="checkbox" name="autologin" value="1">

a do pliku
  1. <?php
  2. $suma_kontrolna=$_SESSION['login'].'_'.md5($_SESSION['login'].'!Q@W#E$R%T^Y&');
  3. if(isset($_POST['autologin'])) setcookie('autologin',$suma_kontrolna,time()+3600*24*14); // 14 dni
  4. ?>


  1. <?php
  2. if(isset($_COOKIE['autologin'])) {
  3. $tab=explode('_',$_COOKIE['autologin']);
  4. $suma_kontrolna=$tab[0].'_'.md5($tab[0].'!Q@W#E$R%T^Y&');
  5. if($suma_kontrolna==$_COOKIE['autologin']) $_SESSION['login']=$tab[0]; // Automatyczne logowanie
  6. }
  7. ?>


Po zalogowaniu (przy zaznaczeniu autologowania) - loguje się ok. Naciskam wyloguj. I teraz najważniejsze. Klikam w logowanie i automatycznie mnie loguje,czyli to o co mi chodziło, ale niestety nie jako dany użytkownik, tylko po prostu loguje.
Ponawiam prośbę o pomoc...

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krystian19
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


Witam, dzięki za rady AACHI. Ogólnie mój problem polega na tym, że chciałbym aby działało autologowanie. Nie wiem jak to zrobić prawidłowo, Kod który dorzuciłem ten z cookie po prostu skopiowałem. I to działa, niestety nie do końca. Mianowicie pierwszy raz loguje poprawnie, ale nastepnie już loguje ale nie jako dana osoba powiazana z sesją.
Zdaje sobie sprawę że zapisywanie ciasteczka jest niezbyt poprawne z uwagi na niebezpieczeństwo, ale nie mam innego pomysłu...
Podsumowując: - logowanie działa, chciałbym jednak, że za każdym razem jak dana osoba wejdzie na stronę będzie automatycznie zalogowana, aż do momentu kiedy naciśnie wyloguj.
Na chwile obecną jest zalogowana tylko na czas sesji.



  1.  
  2. <?php
  3. session_start(); // rozpoczecie sesji
  4. ?>
  5. <style type="text/css">
  6. <!--
  7. .styl2 {font-size: 18px}
  8. -->
  9. </style>
  10.  
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  12. <title>stronka</title>
  13. <link rel="stylesheet" type="text/css" href="style.css" />
  14. <p><span class="styl2"><font face="Comic Sans MS" color="#006699">Zaloguj się</font></span><br>
  15. <div class="content2">
  16. 1.
  17. <?php
  18. $suma_kontrolna=$_SESSION['login'].'_'.md5($_SESSION['login'].'!Q@W#E$R%T^Y&');
  19. if(isset($_POST['autologin'])) setcookie('autologin',$suma_kontrolna,time()+3600*24*14); // DODANY KOD
  20. ?>
  21.  
  22.  
  23.  
  24.  
  25. <?php
  26.  
  27.  
  28.  
  29. if (!isset($_SESSION['login'])) {
  30.  
  31. if ($_POST['wyslane']) {
  32.  
  33. include 'baza.php';
  34. $tabela = 'uzytkownicy';
  35.  
  36.  
  37. $login = $_POST["login"];
  38. $haslo = $_POST["haslo"];
  39.  
  40.  
  41. if(isset($_COOKIE['autologin'])) {
  42. $tab=explode('_',$_COOKIE['autologin']);
  43. $suma_kontrolna=$tab[0].'_'.md5($tab[0].'!Q@W#E$R%T^Y&');
  44. if($suma_kontrolna==$_COOKIE['autologin']) $_SESSION['login']=$tab[0]; // Automatyczne logowanie DODANY KOD
  45.  
  46. }
  47.  
  48. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  49. login='$login' and haslo='$haslo' and status=0");
  50.  
  51.  
  52. if (mysql_num_rows($wynik) == 1) {
  53. $info = mysql_fetch_array($wynik);
  54. echo '<span class="1">Nie aktywowałeś jeszcze konta</span>';
  55.  
  56. }
  57.  
  58.  
  59. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  60. login='$login' and haslo='$haslo' and status=1");
  61.  
  62.  
  63. if (mysql_num_rows($wynik) == 1) {
  64. $info = mysql_fetch_array($wynik);
  65. $_SESSION["login"] = $info["login"];
  66. $_SESSION["imie"] = $info["imie"];
  67. $_SESSION["nazwisko"] = $info["nazwisko"];
  68. $_SESSION["image"] = $info["image"];
  69.  
  70. $last_login = date('YmdHis');
  71.  
  72.  
  73.  
  74. header('Location: index.php ');
  75. } else {
  76. echo '<span class="2">Zostały wprowadzone złe dane!</span>';
  77. }
  78. mysql_close($polaczenie);
  79. }
  80.  
  81.  
  82. echo <<< KONIEC
  83.  
  84.   <form class="form" action="logowaniee.php" method="post">
  85.   <input type="hidden" name="wyslane" value="TRUE" />
  86.  
  87.   <p>
  88. <div class="label"><label for="login"><font color="#000000">Login</font></label></div>
  89. <font color="#000000">
  90. <input type="text" name="login" id="login" />
  91. </font>
  92.  
  93. <p>
  94. <div class="label"><label for="haslo"><font color="#000000">Hasło</font></label></div>
  95. <font color="#000000">
  96. <input type="password" name="haslo" id="haslo" />
  97. </font>
  98. <input type="checkbox" name="autologin" value="1">Autologowanie
  99.   <p class="submit2">
  100.   <font color="#000000">
  101.   <input type="submit" value="Zaloguj mnie" />
  102.   </font>
  103.   </p>
  104.  
  105. <p class="przypomnij">
  106. <a href="przypomnieniee.php"><font color="#000000">Nie pamietasz hasła?</font></a>
  107. </p>
  108.  
  109.   </form>
  110. KONIEC;
  111.  
  112. } else {
  113. header('Location: index.php');
  114. }
  115.  
  116. if ($_GET["wylogowanie"] == "tak") {
  117.  
  118.  
  119. setcookie('autologin',false); //DODANY KOD
  120. header('Location: index.php');
  121. }
  122.  
  123. ?>
  124.  
  125.  
  126.  
  127. </div>
  128.  
  129. <p><br>
  130.  



Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 13:50