Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sesje - PA
Forum PHP.pl > Forum > Przedszkole
radziowie
Stworzyłem sobie za pomocą wskazówek z internetu kod:
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. //stosować tylko do projektu do wyszukania błędów
  5. ini_set('display_errors','1');
  6. // usunąć po zakończeniu projektowania
  7. //załączenie plików
  8.  
  9. include ('../dodatki/bonus.php');
  10. include ('../meta.php');
  11. include ('../gora_logo.php');
  12. include ('./menu_admin.php');
  13. polacz_baza();
  14. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  15.  
  16. function logowanie () {
  17. echo '<form action="index.php" method="post">
  18. Login: <input type="text" name="login" /><br />
  19. Hasło: <input type="text" name="haslo" />
  20. <input type="submit" name="submit" value="wy?lij" />
  21. </form>';
  22. }
  23.  
  24. echo '<table bgcolor="white" width="900" cellspacing="0" cellpadding="10" border="1" align="center">
  25. <tr>
  26. <td colspan="2" align="center" valign="middle">';
  27.  
  28. if($_GET["wyloguj"]=="tak")
  29. {
  30. $_SESSION["zalogowany"]=0;
  31. echo "Zostałeś wylogowany z serwisu";
  32. }
  33. if($_SESSION["zalogowany"]!=1){
  34. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  35. if(mysql_num_rows(mysql_query("select * from admin where admin = '".htmlspecialchars($_POST["login"])."' AND haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  36. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  37. $_SESSION["zalogowany"]=1;
  38. }
  39. else
  40. logowanie();
  41. echo ("Podano złe dane!!!");
  42. }
  43. else
  44. logowanie();
  45. }
  46. else{
  47.  
  48.  
  49.  
  50.  
  51. ?>
  52.  
  53. Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron.
  54.  
  55.  
  56. <?php
  57. }
  58. echo '</tr>
  59. </table>';
  60. include ('../stopka.php');
  61.  
  62. ?>

Wyskakuje mi błąd:
Kod
Notice: Undefined index: wyloguj in C:\Program Files (x86)\WebServ\httpd-users\praca\admin\index.php on line 30


Co może być tego przyczyną?

// Post do zamknięcia. Zrobione, przyczyna isset($_GET['wyloguj'])
Smertius
  1. session_register("zalogowany");


Wywal to.

Komunikat notice, pojawia się dlatego że odwołujesz się do niezdefiniowanego klucza w tablicy.

Po czym stwierdzasz że jesteś zalogowany? Daj:

  1. print_r($_SESSION);


I zobacz czy faktycznie $_SESSION['zalogowany']==1

radziowie
Mój kod:
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. //stosować tylko do projektu do wyszukania błędów
  5. ini_set('display_errors','1');
  6. // usunąć po zakończeniu projektowania
  7. //załączenie plików
  8.  
  9. include ('../dodatki/bonus.php');
  10. include ('../meta.php');
  11. include ('../gora_logo.php');
  12. polacz_baza();
  13. if(empty($_SESSION["zalogowany"]))
  14. $_SESSION["zalogowany"]=0;
  15.  
  16. function logowanie () {
  17. echo '<form action="index.php" method="post">
  18. Login: <input type="text" name="login" /><br />
  19. Hasło: <input type="text" name="haslo" /><br />
  20. <input type="submit" name="submit" value="wyślij" />
  21. </form>';
  22. }
  23. echo '<table bgcolor="white" width="900" cellspacing="0" cellpadding="0" border="1" align="center">
  24. <tr>
  25. <td colspan="2" align="center" valign="middle">';
  26.  
  27. if(isset($_GET['wyloguj']) && $_GET['wyloguj']=='tak')
  28. {
  29. $_SESSION["zalogowany"]=0;
  30.  
  31. echo "Zostałeś wylogowany z serwisu";
  32. }
  33. if($_SESSION["zalogowany"]!=1)
  34. {
  35. if(!empty($_POST["login"]) || !empty($_POST["haslo"]))
  36. {
  37. if(mysql_num_rows(mysql_query("select * from admin where admin = '".htmlspecialchars($_POST["login"])."' AND haslo = '".htmlspecialchars($_POST["haslo"])."'")))
  38. {
  39. $_SESSION["zalogowany"]=1;
  40. include ('./menu_admin.php');
  41. echo 'Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron.';
  42. }
  43. else
  44. {
  45. logowanie();
  46. echo 'Podano złe dane!!!';
  47. }
  48. }
  49. else
  50. {
  51. logowanie();
  52. }
  53.  
  54. }
  55. else{
  56. include ('./menu_admin.php');
  57.  
  58. echo 'Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron.';
  59.  
  60. }
  61. echo '</tr>
  62. </table>';
  63. include ('../stopka.php');
  64.  
  65. ?>

Czy pod względem bezpieczeństwa jest w miarę zabezpieczony?
Mephistofeles
Nie. Nadal można użyć SQL Injection.
radziowie
A coś dokładniej?
daros17
Poczytaj o PDO
radziowie
Niestety chciałbym to zrobić na wersji php4 czyli PDO nie wchodzi w grę. Czy ten kod byłby bardziej odpowiedni?
  1. <?php
  2.  
  3. include ('../dodatki/bonus.php');
  4. include ('../meta.php');
  5. include ('../gora_logo.php');
  6. polacz_baza();
  7. if(!isset($_SESSION["zalogowany"]))
  8. {
  9. $_SESSION["zalogowany"]=0;
  10. }
  11. function logowanie () {
  12. echo '<form action="index.php" method="post">
  13. Login: <input type="text" name="login" /><br />
  14. Hasło: <input type="password" name="haslo" /><br />
  15. <input type="submit" name="submit" value="wyślij" />
  16. </form>';
  17. }
  18. echo '<table bgcolor="white" width="900" cellspacing="0" cellpadding="0" border="1" align="center">
  19. <tr>
  20. <td colspan="2" align="center" valign="middle">';
  21.  
  22. if(isset($_GET['wyloguj']) && $_GET['wyloguj']=='tak')
  23. {
  24. $_SESSION["zalogowany"]=0;
  25.  
  26. echo "Zostałeś wylogowany z serwisu";
  27. }
  28. if($_SESSION["zalogowany"]!=1)
  29. {
  30. if(!empty($_POST["login"]) || !empty($_POST["haslo"]))
  31. {
  32. $pytanie=mysql_query("select * from admin where admin = '".htmlspecialchars($_POST["login"])."'
  33. AND haslo = '".htmlspecialchars($_POST["haslo"])."'") or die (mysql_error());
  34. $licz_pyt=mysql_num_rows($pytanie);
  35. if($licz_pyt>0)
  36. {
  37. $_SESSION["zalogowany"]=1;
  38.  
  39. }
  40. else
  41. {
  42. logowanie();
  43. echo 'Podano złe dane!!!';
  44. }
  45. }
  46. else
  47. {
  48. logowanie();
  49. }
  50.  
  51. }
  52. if($_SESSION["zalogowany"]==1)
  53. {
  54. echo '</tr>
  55. </table>';
  56. include ('./menu_admin.php');
  57. echo '<table bgcolor="white" width="900" cellspacing="0" cellpadding="0" border="1" align="center">
  58. <tr>
  59. <td colspan="2" align="center" valign="middle">';
  60. echo 'Gratulacje! Zalogowałeś się pomyślnie! Możesz przejśc teraz do innych podstron.';
  61.  
  62.  
  63. }
  64.  
  65. echo '</tr>
  66. </table>';
  67. include ('../stopka.php');
  68.  
  69. ?>

Planuję jeszcze dodać szyfrowanie md5 lub sh1 ale to dopiero później.
radziowie
A bez PDO nie może się obejść? Zależy mi na czasie, dlatego chciałbym to na razie ominąć.
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.