Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje - problem
Forum PHP.pl > Forum > PHP
gam3r
witam, mam problem z logowaniem (plik log.php), mianowicie podczas próby zalogowania sprawdzane są dane użytkownika, jeżeli istnieje taki i prawidłowe hasło zostało podane, następuje utworzenie zmiennej $_SESSION["zalogowano"]=1, i pojawia się ładne menu użytkownika, i jeżeli klikam na jakąś opcję w tym menu, to powinno mnie przenieść do tego samego pliku tylko z jakimś łańcuchem GET (np. log.php?action=addnews), no właśnie powinno ale skrypt podczas przeładowania zachowuje się tak jakbym nie był jeszcze zalogowano i nie istniała moja zmienna sesyjna:
Kod
Notice: Undefined index: zalogowano in c:\wamp\www\kabaret\log.php on line 22

więc pytam się, dlaczego tak się dzieje?

plik log.php
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. require_once("log_main_func.php");
  7.  
  8. if(!empty($_POST["password"]) && !empty($_POST["login"]) )
  9. {
  10. if(sprawdz_poprawnosc_danych()) loguj();
  11. else
  12. {
  13. tworz_naglowek_html();
  14. echo"<div class=error>Podany login lub haslo sa nieprawidlowe</div>";
  15. formularz_logowania();
  16. koncz_strone_html();
  17. exit;
  18. }
  19. }
  20.  
  21. if($_SESSION["zalogowano"]==1)
  22. {
  23. tworz_naglowek_html();
  24. @$action=$_GET["action"];
  25.  
  26.  menu();
  27.  
  28. koncz_strone_html();
  29. }
  30. else
  31. {
  32.  tworz_naglowek_html();
  33.  formularz_logowania();
  34.  koncz_strone_html();
  35. }
  36.  
  37. ?>


plik log_main_func.php, który zawiera funkcje używane w log.php

  1. <?php
  2. function tworz_naglowek_html()
  3. {
  4. echo"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5.  <html xmlns="http://www.w3.org/1999/xhtml">
  6.  <head>
  7.  <title>Panel administracyjny</title>
  8.  <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-2'>
  9.  
  10.  <style type='text/css'>
  11.  A:link {text-decoration:none; color:#333333}
  12.  A:visited {text-decoration:none; color:#333333}
  13.  A:hover {text-decoration:none; color:#FFFFFF}
  14.  
  15.  body{line-height:10px; font-size:10px; color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif}
  16.  
  17.  .standard{font-size:10px; color:#333333; font-family:Verdana, Arial, Helvetica, sans-serif}
  18.  
  19.  .submit{font-size:10px; color:#333333; background-color:#f4f4f4; font-size:10px; 
  20.  border-top: solid 1px #333333; padding-top: 0px;
  21.  border-bottom: solid 1px #333333; padding-bottom: 0px;
  22.  border-left: solid 1px #333333; padding-left: 2px;
  23.  border-right: solid 1px #333333; padding-right: 3px
  24.  }
  25.  
  26.  .input{background-color:#CCCCCC; color:#333333; 
  27.  BORDER-RIGHT: #333333 1px solid; PADDING-RIGHT: 2px; 
  28.  PADDING-BOTTOM: 0px; BORDER-BOTTOM: #333333 1px solid;
  29.  PADDING-TOP: 0px; BORDER-TOP: #333333 1px solid; MARGIN-TOP: 2px; 
  30.  BORDER-LEFT: #333333 1px solid; COLOR: #000; PADDING-LEFT: 2px;
  31.  font-size:10px; height:14px; width:100px; font-family:arial; }
  32.  </style>
  33.  
  34.  </head>
  35.  <body>
  36.  <table width=800 align=center valign=top>
  37. <tr>
  38.  <td align=center>";
  39. }
  40.  
  41. function koncz_strone_html()
  42. {
  43. echo " </td>
  44.  </tr>
  45. </table>
  46. </body>
  47. </html>";
  48. }
  49.  
  50. function formularz_logowania()
  51. {
  52. echo"<br><br><br>
  53.  <table align=center width=300 height=140 border=0>
  54.  <tr><td width=140>  
  55.  <img src='gfx/klucz.gif'>
  56.  </td>
  57.  
  58.  <td align=center valign=middle>
  59.  <form method=post action=log.php name=form_logowania>
  60.  
  61.  <font class=standard>login: </font>
  62.  <input type=text name=login class=input>
  63.  <br><br>
  64.  
  65.  <font class=standard>haslo: </font>
  66.  <input type=password name=password class=input>
  67.  
  68.  <br><br>
  69.  <input type=submit class=submit value=loguj>
  70.  
  71.  </form>
  72.  </td></tr></table>";
  73. }
  74.  
  75. function sprawdz_poprawnosc_danych()
  76. {
  77. $pass = $_POST["password"];
  78. $login = $_POST["login"];
  79.  
  80. $users["mati"]["haslo"]=1;
  81. $users["kck"]["haslo"]=1;
  82. $users["lewus"]["haslo"]=1;
  83. $users["simon"]["haslo"]=1;
  84. $users["gam3r"]["haslo"]=1;
  85.  
  86. if(@$users[$login][$pass]==1) return 1;
  87. else return 0;
  88. }
  89.  
  90. function menu()
  91. {
  92. echo"<table cellpadding=0 cellspacing=0 align=left>
  93. <tr>
  94. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  95. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php?action=addnews'>dodaj newsa </a></td>
  96. </tr>
  97. <tr>
  98. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  99. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php?action=editnews'>edytuj newsa </a></td>
  100. </tr>
  101. <tr>
  102. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  103. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php?action=deletenews'>usuń newsa </a></td>
  104. </tr>
  105. <tr>
  106. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  107. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php?action=addgallery'>dodaj zdj. do galerii </a></td>
  108. </tr>
  109. <tr>
  110. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  111. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php?action=editgallery'>edytuj zdj. z galerii </a></td>
  112. </tr>
  113. <tr>
  114. <td height='14' align='center' valign='middle' onmouseover="this.style.backgroundColor='#C0C0C0';" 
  115. onmouseout="this.style.backgroundColor='#F2F2F2'" ;><a href='log.php'>usuń zdj. z galerii </a></td>
  116. </tr>
  117.  </table>";
  118. }
  119.  
  120. function loguj()
  121. {
  122. $_SESSION["zalogowano"]=1;
  123. }
  124. ?>
toth
Czy witryna pracuje juz pd jakas domena? Czy jest to dopiero projekt na kompie lokalnym?
gam3r
na localhoscie
nospor
Moje obawy budzi ta funkcja:
  1. <?php
  2. function sprawdz_poprawnosc_danych()
  3. {
  4. $pass = $_POST["password"];
  5. $login = $_POST["login"];
  6.  
  7. $users["mati"]["haslo"]=1;
  8. $users["kck"]["haslo"]=1;
  9. $users["lewus"]["haslo"]=1;
  10. $users["simon"]["haslo"]=1;
  11. $users["gam3r"]["haslo"]=1;
  12.  
  13. if(@$users[$login][$pass]==1) return 1;
  14. else return 0;
  15. }
  16. ?>

porownujesz $users[$login][$pass], ale przeciez w zmiennej $pass moze byc dowolne haslo, a ty do tablicy $users wstawiasz zawsze haslo = "haslo". Tak ma byc? Ty podczas logowania wpisujesz do formularza haslo: "haslo" ?

Pozatym co do samego warninga to daj:
  1. <?php
  2. if(isset($_SESSION["zalogowano"]) && $_SESSION["zalogowano"]==1) ...
  3. ?>
Napewno juz sie nie pojawi smile.gif
gam3r
no narazie to wszystko jest w fazie testow, wiec te "haslo" moze tam sobie byc, później to pozmieniam, no warninga sie pozbyłem, ale co z tymi sesjami? mam php v.5.1 (to co tam jest w pakiecie WAMP 1.5) jakieś pomysły?
php programmer
każdy skrypt, który korzysta ze zmiennych sesji
bez względu na to czy jest czyta czy zapisuje
powinien mieć (najlepiej na samyej górze) wywołanie:

  1. <?php
  2.  
  3.  
  4. ?>
gam3r
no ba, a co jest w 2 linijce pliku log.php na listingu?
revyag
Może masz wyłączone cookies jako przekazywanie sesji ?
Spróbuj dokleić id sesji do linków w menu:
  1. <?php
  2. echo '<a href="log.php?action=addnews&amp;"'.SID.'">link</a>';
  3. ?>
gam3r
oo jest:)) z tym PHPSESSID działa:D ale gdzie to tam w php.ini czy przy wywołaniu phpinfo() jest?
moze : session.cookie_secure questionmark.gif
albo : session.auto_start questionmark.gif chociaż autostart chyba nie:/
revyag
Zobacz czy masz w php.ini session.use_cookies = 1. Jeśli masz to zobaczy czy nie masz cookies wyłączonych w przeglądarce smile.gif
gam3r
mam firefoxa i ciasteczka załączone, ale w php.ini :
session.use_cookies On
session.use_only_cookies off
no to pewnie przez to:)) thx
php programmer
jeśli problemem stały się ciasteczka to sprawdź czy przed session_start()
nie wysyłasz do przeglądarki jakichś znaków, bo jeśli tak to sesje nie będą mogły korzystać z cookies
gam3r
nic nie wysyłam (masz kod wyżej), zresztą już revyag mi pomógł
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.