Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
Marcinekk
Witam.

Pobrałem sobie z internetu skrypt logowania & rejestracji. Zacząłem go przerabiać pod własne nazwy kolumn (potrzebuje go pod panel sa-mp) jest dobrze, lecz przy logowaniu wpisuje login i hasło z bazy danych, klikam zaloguj i po poprawnym zalogowaniu powinno mnie przenieść do panelu użytkownika, przenosi mnie ale pokazuje informację, że to miejsce jest tylko dla zalogowanych, więc z tego wnioskuję, że mnie nie zalogowało.

Oto pliki :

login.php
  1. <!DOCTYPE html>
  2. <html lang="pl">
  3. <head>
  4.  
  5. <meta charset="UTF-8">
  6. <title>Good Truck</title>
  7.  
  8. <link rel="stylesheet" href="style.css">
  9. </head>
  10. <body>
  11. <header>
  12. <h1><a href="index.php" title="Good Truck">Good Truck - Logowanie</a></h1>
  13. </header>
  14. <nav id="menu">
  15. <ul>
  16. <li><a href="form.php" title="Formualarz rejestracji">Formularz rejestracji</a></li>
  17. <li><a href="login.php" title="Formualarz logowania">Formularz logowania</a></li>
  18. <li><a href="database.php" title="Zrzut bazy danych">Kod bazy danych</a></li>
  19. <li><a href="userpanel.php" title="Plik dla zalogowanych użytkowników">Panel użytkownika</a></li>
  20. <li><a href="http://rynko.pl/system-rejestracji-i-logowania/" title="Powrót na bloga "><strong>Powrót na stronę artykułu</strong></a></li>
  21. </ul>
  22. </nav>
  23.  
  24. <section id="main">
  25.  
  26. <form action="checkuser.php?login=true" method="POST" id="login-form">
  27. <fieldset>
  28. <dl>
  29. <dt><label for="nick">Login:</label></dt>
  30. <dd><input type="text" name="login" id="nick" placeholder="Login"></dd>
  31. <dt><label for="password">Hasło:</label></dt>
  32. <dd><input type="password" name="password" id="password" placeholder="Hasło"></dd>
  33. <dt><input type="submit" name="check" value="Zaloguj"></dt>
  34. </dl>
  35. </fieldset>
  36. </form>
  37. </section>
  38. </body>
  39. </html>
  40.  
  41.  


checkuser.php

  1. <?php
  2. ////////////////////////////////////////////////////////////////
  3. // Author: Dominik Ryńko //
  4. // Website: <a href="http://www.rynko.pl/" target="_blank">http://www.rynko.pl/</a> //
  5. // Version: 1.1 //
  6. // Contact: <a href="http://www.rynko.pl/kontakt" target="_blank">http://www.rynko.pl/kontakt</a> //
  7. // All Rights Reserved //
  8. ////////////////////////////////////////////////////////////////
  9. ?>
  10. <!DOCTYPE html>
  11. <html lang="pl">
  12. <head>
  13. <meta charset="UTF-8">
  14. <title>Good Truck</title>
  15.  
  16. <link rel="stylesheet" href="style.css">
  17. </head>
  18. <body>
  19. <header>
  20. <h1><a href="index.php" title="Good Truck">Good Truck</a></h1>
  21. </header>
  22. <nav id="menu">
  23. <ul>
  24. <li><a href="form.php" title="Formualarz rejestracji">Formularz rejestracji</a></li>
  25. <li><a href="login.php" title="Formualarz logowania">Formularz logowania</a></li>
  26. <li><a href="database.php" title="Zrzut bazy danych">Kod bazy danych</a></li>
  27. <li><a href="userpanel.php" title="Plik dla zalogowanych użytkowników">Panel użytkownika</a></li>
  28. <li><a href="http://rynko.pl/system-rejestracji-i-logowania/" title="Powrót na bloga "><strong>Powrót na stronę artykułu</strong></a></li>
  29. </ul>
  30. </nav>
  31.  
  32. <section id="main">
  33. <?php
  34.  
  35. if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST)) { // Drobne zapezpieczenie. Sprawdza czy metoda którą wysyłane jest żadanie to POST
  36.  
  37. $login = $_POST['login'];
  38. $password = $_POST['password'];
  39.  
  40. if(empty($login) || empty($password)) // Sprawdzanie czy pola formularza nie są puste
  41. {
  42. die('<p>Wypełnij wszystkie dane.</p>');
  43. }
  44. else
  45. {
  46. include_once('config.php');
  47.  
  48. $mysqli = new mysqli($db['host'], $db['user'], $db['password'], $db['database']);
  49.  
  50. if($mysqli -> connect_error)
  51. die('<p>Problem z połączeniem się z bazą danych:'.$mysqli -> connect_error.'['.$mysqli -> connect_errno.']</p>');
  52.  
  53. $login = trim(htmlspecialchars($mysqli -> real_escape_string($login)));
  54. $password = $mysqli -> real_escape_string($password);
  55.  
  56. $result = $mysqli -> query("SELECT Nick, ip FROM `uzytkownicy` WHERE Nick = '$login' and Haslo = '$password'");
  57. if($result -> num_rows == 1)
  58. {
  59. session_start(); // Inicjacja sesji
  60. $row = $result -> fetch_row();
  61. $_SESSION['ip'] = $row[1];
  62. $_SESSION['nick'] = $row[0];
  63. setcookie('islogged', 'islogged', time() + 3600); // czas istenienia ciastka 3600s czyli 1h
  64. header('Location: userpanel.php');
  65. }
  66. else
  67. {
  68. echo '<p>Brak podanego użytkownika w bazie.</p>';
  69. }
  70. }
  71. }
  72.  
  73. ?>
  74. </section>
  75. </body>
  76. </html>
  77. <?php
  78. ?>


Proszę o pomoc.
Damonsson
w userpanel.php

dodaj gdzieś za session_start();

  1. var_dump($_SESSION);


co pokazuje?
Marcinekk
Pokazuje to :

array(4) { ["logged"]=> bool(false) ["user_id"]=> int(-1) ["ip"]=> NULL ["nick"]=> string(8) "Marcinek" }

A dodałem tamto co napisałeś w ten sposób :

<?php
ob_start();
session_start();
var_dump($_SESSION);
?>
(..) reszta kodu
Damonsson
Pokaż zawartość userpanel.php

Ale domyślam się zawartości i w checkuser zmień:

  1. $result = $mysqli -> query("SELECT Nick, ip FROM `uzytkownicy` WHERE Nick = '$login' and Haslo = '$password'");
  2.  
  3. if($result -> num_rows == 1)
  4.  
  5. {
  6.  
  7. session_start(); // Inicjacja sesji
  8.  
  9. $row = $result -> fetch_row();
  10.  
  11. $_SESSION['ip'] = $row[1];
  12.  
  13. $_SESSION['nick'] = $row[0];
  14.  
  15. setcookie('islogged', 'islogged', time() + 3600); // czas istenienia ciastka 3600s czyli 1h
  16.  
  17. header('Location: userpanel.php');



na

  1. $result = $mysqli -> query("SELECT Nick, ip, id FROM `uzytkownicy` WHERE Nick = '$login' and Haslo = '$password'"); // DODANE id - albo jak tam masz nazwane w bazie danych pole z ID użytkownika
  2.  
  3. if($result -> num_rows == 1)
  4.  
  5. {
  6.  
  7. session_start(); // Inicjacja sesji
  8.  
  9. $row = $result -> fetch_row();
  10.  
  11. $_SESSION['ip'] = $row[1];
  12.  
  13. $_SESSION['nick'] = $row[0];
  14. $_SESSION['logged'] = TRUE; // DODANE
  15. $_SESSION['user_id'] = $row[2]; // DODANE
  16.  
  17. setcookie('islogged', 'islogged', time() + 3600); // czas istenienia ciastka 3600s czyli 1h
  18.  
  19. header('Location: userpanel.php');
Marcinekk
Niestety, dalej jest to samo.

Zawartość userpanel :

  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html lang="pl">
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>System rejestracji i logowania PHP & MySQL - Dominik Ryńko</title>
  8. <meta name="Author" content="Dominik Ryńko - <a href="http://www.rynko.pl/&quot;&gt;" target="_blank">http://www.rynko.pl/"></a>
  9. <meta name="Description" content="System rejestracji i logowania na stronę WWW. Napisany w PHP i w oparciu o bazę danych MySQL" >
  10. <link rel="stylesheet" href="style.css">
  11. </head>
  12. <body>
  13. <header>
  14. <h1><a href="index.php" title="System rejestracji i logowania">System rejestracji i logowania</a></h1>
  15. </header>
  16. <nav id="menu">
  17. <ul>
  18. <li><a href="form.php" title="Formualarz rejestracji">Formularz rejestracji</a></li>
  19. <li><a href="login.php" title="Formualarz logowania">Formularz logowania</a></li>
  20. <li><a href="database.php" title="Zrzut bazy danych">Kod bazy danych</a></li>
  21. <li><a href="userpanel.php" title="Plik dla zalogowanych użytkowników">Panel użytkownika</a></li>
  22. <li><a href="http://rynko.pl/system-rejestracji-i-logowania/" title="Powrót na bloga "><strong>Powrót na stronę artykułu</strong></a></li>
  23. </ul>
  24. </nav>
  25.  
  26. <section id="main">
  27. <?php
  28. if(empty($_COOKIE['islogged']))
  29. {
  30. header('Refresh: 5; url=login.php');
  31. die('<p>Czas sesji wygasł. Proszę zalogować się ponownie.</p><p> Za chwilę nastąpi przepierowanie</p>');
  32. }
  33.  
  34. if(isset($_SESSION['nick']) && isset($_SESSION['ip']))
  35. {
  36. echo '<p>Treść dla zalogowanych</p>';
  37. echo '<a id="database" href="logout.php">Wyloguj</a>';
  38. }
  39. else
  40. {
  41. echo 'Nie jesteś zalogowany. Przejdź do <a id="database" href="login.php">Formularza logowania</a>.';
  42. }
  43.  
  44. ?>
  45. </section>
  46. </body>
  47. </html>
  48. <?php
  49. ?>
Damonsson
Takie buty.

No to wywal

  1. if(isset($_SESSION['nick']) && isset($_SESSION['ip']))


i zostaw tak:

  1. if(isset($_SESSION['nick']))



Później możesz się zastanowić, czemu przy rejestracji nie dodało Ci IP do bazy danych.
Marcinekk
Teraz działa, dziękuje. wink.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.