Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z panelem logowania...
Forum PHP.pl > Forum > Przedszkole
Bvvffr
Napisałem sobie system logowania i mam problem. Jak wpiszę byle jakie hasło i użytkownika to loguje mnie jak gdyby nic. Chcę żeby logowało po sprawdzeniu czy dane z formularza są takie same jak w bazie danych. Co jest źle? Kod:

  1. <?php 
  2.  
  3. mysql_connect ('localhost','root','something');
  4.  
  5. mysql_query ("CREATE DATABASE `cos`;");
  6.  
  7. $baze= "CREATE TABLE `base` (
  8. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  9. `user` VARCHAR(20) NOT NULL,
  10. `password` VARCHAR(15) NOT NULL 
  11. ) TYPE= MYISAM;";
  12.  
  13. mysql_query ($baze);
  14.  
  15.  
  16. $nick= mysql_query ("SELECT `user` FROM `base` WHERE `id`= '1'");
  17. $password= mysql_query ("SELECT `password` FROM `base` WHERE `id`= '1'");
  18.  
  19. if ($_POST['nick']== $nick && $_POST['password']== $password) {
  20.  
  21. $_SESSION['user']= $_POST['nick'];
  22. header ("Location: page.php");
  23.  
  24. }
  25.  
  26. else {
  27.  
  28. echo 'Cos zle wpisales tongue.gif';
  29.  
  30. }
  31.  
  32. ?>


  1. <?php 
  2.  
  3.  
  4. if (!isset($_SESSION['user'])) {
  5.  
  6. echo '<form method="post">
  7. <input type="text" name="nick" />
  8. <br /><input type="password" name="password" /><br />
  9. <br /><input type="submit" Value="Loguj" /><br />
  10. </form>';
  11.  
  12. } 
  13.  
  14. else {
  15.  
  16. echo 'Siema, siema ' . $_SESSION['user'] . 'Jak chcesz to sie <a href="logout.php">wyloguj</a>';
  17.  
  18. } 
  19.  
  20. ?>


  1. <?php
  2. <!DOCTYPE html 
  3. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  6. <head>
  7. <meta http-equiv="Content-type" content="application/xhtml+xml; charset=iso-8859-2" />
  8. <meta name="Description" content="Something" />
  9. <meta name="Keywords" content="Something" />
  10. <meta name="Author" content="Author " />
  11. <link rel="Stylesheet" href="style.css" type="text/css" />
  12. <title>Title</title>
  13. </head>
  14. <body>
  15.  
  16. <form action="login.php" method="post">
  17. <input type="text" name="nick" />
  18. <br /><input type="password" name="password" /><br />
  19. <br /><input type="submit" Value="Loguj" /><br />
  20. </form>
  21.  
  22. </body>
  23. </html>
  24. ?>
pyro
1. wyrzuć wszystko od 18 do 21 lini, bo przez to właśnie loguje jak sie poda zle dane.

Skonstruuj coś w stylu:

  1. <?php
  2.  
  3. $passy = "SELECT user, password FROM base WHERE user='{$_POST['user']}' AND password = '{$POST['password']}'";
  4. while($row = mysql_fetch_assoc($passy))
  5. {
  6. $nick = $row['user'];
  7. $haslo = $row['password'];
  8. }
  9. if(!empty($nick) && !empty($haslo))
  10. {
  11. // zalogowany
  12. }
  13. else
  14. {
  15. // blad podczas logowania
  16. }
  17.  
  18. ?>


2. uzywaj htmlentities() bo twoj skrypt jest podatny na XSS
Bvvffr
Wyszło coś takiego, ale dalej nie działa. Teraz w ogóle nie chce logować mimo że są dobre dane wpisane.

  1. <?php 
  2.  
  3. mysql_connect ('localhost','root','something');
  4.  
  5. mysql_query ("CREATE DATABASE `cos`;");
  6.  
  7. $baze= "CREATE TABLE `base` (
  8. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  9. `user` VARCHAR(20) NOT NULL,
  10. `password` VARCHAR(15) NOT NULL 
  11. ) TYPE= MYISAM;";
  12.  
  13. mysql_query ($baze);
  14.  
  15.  
  16. $pass = mysql_query("SELECT user, password FROM base WHERE user='{$_POST['nick']}' AND password = '{$POST['password']}'");
  17.  
  18. while ($row= mysql_fetch_assoc($pass)) {
  19.  
  20. $nick = $row['nick'];
  21. $haslo = $row['password'];
  22.  
  23. }
  24.  
  25. if(!empty($nick) && !empty($haslo)) {
  26.  
  27. $_SESSION['user']= $nick;
  28. header ("Location: page.php");
  29.  
  30. }
  31.  
  32. else {
  33.  
  34. echo 'Zle dane tongue.gif';
  35.  
  36. }
  37.  
  38. ?>
pyro
w 18 lini masz moją linijke z $_POST['user'] itd.

a podstawiles to pod swoj skrypt?

bo ja to napisalem w wymyślając nazwy pól
Bvvffr
No podstawiłem wszystko, ale nie loguje, jak mówię. Wpisuję dane i wyskakuje Złe dane.
pyro
nie podstawiles

w lini 22 $row['nick'] powinno byc $row['user']
Bvvffr
U mnie w formularzu do logowania jest $_POST['nick'] więc na to samo wychodzi.

Nie wiem w sumie czego nie chodzi. Może spróbuję inną metodą jeśli jest smile.gif
pyro
wcale na to samo nie wychodzi.

pobierasz dane z nieistniejącej kolumny.

powinno byc jak napisalem w poprzednim poscie
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.