Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowaniem i sesje
Forum PHP.pl > Forum > Przedszkole
pozg
mam taki skrypcik, ktory ma zalogowac uzytkownika, robi to jednakze przy przechodzeniu na podstrony kaze jeszcze raz sie logowac,a le przy odswiezaniu strony nie robi sie tak- to byl by pierwszy problem, drugi to ze session_unset() or die ("blad1"); zwraca blad1

dzieki

  1. <?php
  2. session_name("logowanie");
  3. if ($wyloguj == 1) {
  4. session_unset() or die ("blad1");
  5. session_destroy() or die ("blad2");
  6. header("Location: ind.php");
  7. } else {
  8. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
  9. <title>paza wiedzy</title>
  10. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  11. <script LANGUAGE="JavaScript">
  12. function selecturl(s) { var gourl = s.options[s.selectedIndex].value; window.top.location.href = gourl; }
  13. </SCRIPT>
  14. </head><body>';
  15.  
  16.  
  17. include_once('funkcje.php');
  18. include_once('hasla.cfg');
  19. if ((isset($_POST['login']) and isset($_POST['haslo'])) or (isset($_SESSION['login']) and isset($_SESSION['haslo']))) {
  20. database_connect();
  21. if (isset($_POST['login']) and isset($_POST['haslo'])) {
  22. $result = mysql_query('SELECT prawa FROM uzytkownicy WHERE login="'.$_POST['login'].'" AND haslo="'.$_POST['haslo'].'"') or die ("$error");
  23. } elseif (isset($_SESSION['login']) and isset($_SESSION['haslo'])) {
  24. $result = mysql_query('SELECT prawa FROM uzytkownicy WHERE login="'.$_SESSION['login'].'" AND haslo="'.$_SESSION['haslo'].'"') or die ("$error");
  25. }
  26. // instrukcja ktora loguje uzytkownika
  27. if (mysql_num_rows($result) == 1) { // instrukcja wykonuje sie jesli dane podane sa poprawne
  28. print $_SESSION['login'] = $_POST['login'].'<br>';
  29. print $_SESSION['haslo'] = $_POST['haslo'].'<br>';
  30. unset($_POST['login']);
  31. unset($_POST['haslo']);
  32. print 'zalogowales sie <a href=?wyloguj=1>tutaj</a><br>prawa: '.$row->prawa;
  33. $row = mysql_fetch_object ($result);
  34. switch ($row->prawa) {
  35. case ("0") : // panel mlodszy uzytkownik
  36. include_once('mlodszy_uzytkownik/index_mlodszy_uzyt.php');
  37. break;
  38. //////////////////////////////////////////////////////////////
  39. case ("1") : // panel uzytkownika
  40. print 'panel uzytkownika';
  41. break;
  42. //////////////////////////////////////////////////////////////
  43. case ("2") : // panel administratora
  44. include_once('admin/panel_admin.php');
  45. break;
  46. //////////////////////////////////////////////////////////////
  47. default : print "$error"; }
  48.  
  49. } else { // instrukcja wykonuje sie jesli dane podane nie sa poprawne
  50. print 'bledne dane<br><br>';
  51. print "<form method=post>\n
  52. Podaj login:\n<input type=text name=\"login\"><br>\n
  53. Podaj haslo:\n
  54. <input type=password name=\"haslo\"><br>\n
  55. <input type=submit name=\"logowanie\" value=Zaloguj>\n
  56. </form>\n";
  57. }
  58.  
  59.  
  60.  
  61. } else {
  62. print "<form method=post>\n
  63. Podaj login:\n
  64. <input type=text name=\"login\"><br>\n
  65. Podaj haslo:\n
  66. <input type=password name=\"haslo\"><br>\n
  67. <input type=submit name=\"logowanie\" value=Zaloguj>\n
  68. </form>\n";
  69. }
  70.  
  71. }
  72. print '</body></html>';
  73. ?>
bigZbig
Poczytaj uwagi w komentarzach

  1. <?php
  2. session_name("logowanie");
  3. if ($wyloguj == 1) {
  4. /*
  5. Gdzie w tym skrypcie ustawiasz wartosci zmiennych?
  6. np.
  7. $_SESSION['login'] = $_POST['login'];
  8. Powyzszy zapis nie jest rowny
  9. print $_SESSION['login'] = $_POST['login'].'<br>';
  10. */
  11. session_unset() or die ("blad1");
  12. session_destroy() or die ("blad2");
  13. header("Location: ind.php");
  14. } else {
  15. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
  16. <title>paza wiedzy</title>
  17. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  18. <script LANGUAGE="JavaScript">
  19. function selecturl(s) { var gourl = s.options[s.selectedIndex].value; window.top.location.href = gourl; }
  20. </SCRIPT>
  21. </head><body>';
  22.  
  23.  
  24. include_once('funkcje.php');
  25. include_once('hasla.cfg');
  26. if ((isset($_POST['login']) and isset($_POST['haslo'])) or (isset($_SESSION['login']) and isset($_SESSION['haslo']))) {
  27. database_connect();
  28. /*
  29. Te dwa warunki mozna przy pomocy operatora OR polaczyc w jeden
  30. Nie bedziesz musial dwa razy umieszczac w skrypcie zapytania SQL
  31. */
  32. if (isset($_POST['login']) and isset($_POST['haslo'])) {
  33. /*
  34. Powinienes sprawdzic nie tylko czy zmienne istnieja ale takze czy cos zawieraja
  35. !empty($_POST['login'])
  36. */
  37. $result = mysql_query('SELECT prawa FROM uzytkownicy WHERE login="'.$_POST['login'].'" AND haslo="'.$_POST['haslo'].'"') or die ("$error");
  38. } elseif (isset($_SESSION['login']) and isset($_SESSION['haslo'])) {
  39. /*
  40. Powinienes sprawdzic nie tylko czy zmienne istnieja ale takze czy cos zawieraja
  41. !empty($_SESSION['login'])
  42. */
  43. $result = mysql_query('SELECT prawa FROM uzytkownicy WHERE login="'.$_SESSION['login'].'" AND haslo="'.$_SESSION['haslo'].'"') or die ("$error");
  44. }
  45. /*
  46. Wystarczy warunek if (mysql_num_rows($result))
  47.  
  48. */
  49. if (mysql_num_rows($result) == 1) {
  50. print $_SESSION['login'] = $_POST['login'].'<br>';
  51. print $_SESSION['haslo'] = $_POST['haslo'].'<br>';
  52. unset($_POST['login']);
  53. unset($_POST['haslo']);
  54. /*
  55. $row->prawa - nie zadziala zanim nie wykonasz instrukcji $row = mysql_fetch_object ($result);
  56. */
  57. print 'zalogowales sie <a href=?wyloguj=1>tutaj</a><br>prawa: '.$row->prawa;
  58. print_r($_SESSION);
  59. $row = mysql_fetch_object ($result);
  60. switch ($row->prawa) {
  61. case ("0") :
  62. include_once('mlodszy_uzytkownik/index_mlodszy_uzyt.php');
  63. break;
  64.  
  65. case ("1") :
  66. print 'panel uzytkownika';
  67. break;
  68.  
  69. case ("2") :
  70. include_once('admin/panel_admin.php');
  71. break;
  72.  
  73. default : print "$error"; }
  74.  
  75.  
  76. } else { 
  77.  
  78. print 'bledne dane<br><br>';
  79. /*
  80. Postaraj sie to wykombinowac tak aby nie wklepywac tego samego kodu 2 razy
  81. Poza tym wszystkie wartosci atrybutow powinny byc otoczone cudzyslowami:
  82. method="post", type="password", value="Zaloguj"
  83. */
  84. print "<form method=post>\n
  85. Podaj login:\n<input type=text name=\"login\"><br>\n
  86. Podaj haslo:\n
  87. <input type=password name=\"haslo\"><br>\n
  88. <input type=submit name=\"logowanie\" value=Zaloguj>\n
  89. </form>\n";
  90. }
  91.  
  92.  
  93.  
  94. } else {
  95. print "<form method=post>\n
  96. Podaj login:\n
  97. <input type=text name=\"login\"><br>\n
  98. Podaj haslo:\n
  99. <input type=password name=\"haslo\"><br>\n
  100. <input type=submit name=\"logowanie\" value=Zaloguj>\n
  101. </form>\n";
  102. }
  103.  
  104. }
  105. print '</body></html>';
  106. ?>
pozg
zmienlem to co mowiels, ale nadal wywala mnie przy przechodzeniu na podstrony (kazes sie logowac). moze cos zle zrobilem, zerknij jeszcze raz jak mozesz

  1. <?php
  2. session_name("logowanie");
  3.  
  4. // troche sposob wylogowywania
  5. if ($_GET[wyloguj] == 1) {
  6. $_SESION = array(); //Zniszcz zmienne
  7. session_destroy(); //Zniszcz sesje
  8. setcookie(session_name(),'',time()-3600,'/','',0); //Zniszcz cookie
  9. header("Location: inde.php");
  10. } else {
  11. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
  12. <title>paza wiedzy</title>
  13. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  14. <script LANGUAGE="JavaScript">
  15. function selecturl(s) { var gourl = s.options[s.selectedIndex].value; window.top.location.href = gourl; }
  16. </SCRIPT>
  17. </head><body>';
  18.  
  19.  
  20. include_once('funkcje.php');
  21. include_once('hasla.cfg');
  22. print 'sesia: ';
  23.  print_r($_SESSION);
  24. print '<br>post: ';
  25. print_r($_POST);
  26. if ((($_POST['login']) and ($_POST['haslo'])) or (($_SESSION['login']) and ($_SESSION['haslo']))) {
  27. database_connect();
  28. // tak jak mowiels w jednym zapytaniu dwie mozliwosci zamiescielem za pomoca OR
  29. $result = mysql_query('SELECT prawa FROM uzytkownicy WHERE (login="'.$_POST['login'].'" AND haslo="'.$_POST['haslo'].'") OR (login="'.$_SESSION['login'].'" AND haslo="'.$_SESSION['haslo'].'")') or die ("$error b");
  30. // usunolem mysql_num_rows($result) == 1
  31. if (mysql_num_rows($result)) {
  32. // miales racje z przypisaniem moje niedopatrzenie
  33. $_SESSION['login'] = $_POST['login'].'<br>';
  34. $_SESSION['haslo'] = $_POST['haslo'].'<br>';
  35. unset($_POST['login']);
  36. unset($_POST['haslo']);
  37. print 'post po usunieciu: ';
  38. print_r($_POST);
  39. $row = mysql_fetch_object ($result);
  40. print 'zalogowales sie <a href=?wyloguj=1>tutaj</a><br>prawa: '.$row->prawa;
  41.  
  42. switch ($row->prawa) {
  43. case ("0") :
  44. include_once('mlodszy_uzytkownik/index_mlodszy_uzyt.php');
  45. break;
  46.  
  47. case ("1") :
  48. print 'panel uzytkownika';
  49. break;
  50.  
  51. case ("2") :
  52. include_once('admin/panel_admin.php');
  53. break;
  54.  
  55. default : print "$error"; }
  56. } else { 
  57. // z tym nic nie robilem 
  58. print 'bledne dane<br><br>';
  59. print "<form method=\"post\">\n
  60. Podaj login:\n
  61. <input type=\"text\" name=\"login\"><br>\n
  62. Podaj haslo:\n
  63. <input type=\"password\" name=\"haslo\"><br>\n
  64. <input type=\"submit\" value=\"Zaloguj\">\n
  65. </form>\n";
  66. }
  67.  
  68. } else {
  69. print "<form method=\"post\">\n
  70. Podaj login:\n
  71. <input type=\"text\" name=\"login\"><br>\n
  72. Podaj haslo:\n
  73. <input type=\"password\" name=\"haslo\"><br>\n
  74. <input type=\"submit\" value=\"Zaloguj\">\n
  75. </form>\n";
  76. }
  77. }
  78. print '</body></html>';
  79. ?>
bigZbig
Cytat(pozg @ 2006-01-26 19:37:31)
  1. <?php
  2.  
  3. // miales racje z przypisaniem moje niedopatrzenie
  4. $_SESSION['login'] = $_POST['login'].'<br>';
  5. $_SESSION['haslo'] = $_POST['haslo'].'<br>';
  6.  
  7. ?>

Po co zapisujesz w sesji <br>? Teraz twoj login wyglada tak "pozg<br>".
pozg
sorka, moja glupota czasem nie zna umiaru. za pierwszym razem zwruciles mi na to uwage, a i nie chwalac sie zam o tym tez wiem.

jeszcze poprawilem druga zecz, dalem warunek
  1. <?php
  2.  
  3. if (!empty($_POST['login']) and !empty($_POST['login'])) {
  4.  $_SESSION['login'] = $_POST['login'];
  5. $_SESSION['haslo'] = $_POST['haslo'];
  6. }
  7. ?>


poniewaz przy 2 przeladowaniu strony, pusta zmienna post zostawala przypisywana na zmiennne sesi i w ten sposob uzytkownik zostawal wylogowwany, jesli da sie ten warunek wszystko dziala

dzikei za cierpiwosc smile.gif
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.