Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem ze sprawdzeniem użytkownika
Forum PHP.pl > Forum > Przedszkole
Hertzz
Mam problem. Przy logowaniu jest wszystko ok, tylko jak wpiszę do formularza jakiegoś użytkownika który nie istnieje to przenosi mnie do pliku który odpowiada za logowanie i tyle. Wydaje mi się że to jest przez pętlę while, ale co tu dokładnie jest źle?

  1. <?php
  2.  
  3.  
  4. class user {
  5.  
  6. public $user;
  7. private $pass;
  8.  
  9. public function checkuser() {
  10.  
  11. $pdo = new pdo ('mysql:host=localhost;dbname=oop','root','mentormiszcz1e');
  12. $row= $pdo-> query ("SELECT name,password FROM `trials` WHERE name= '".$_POST['user']."'");
  13.  
  14. while ($line= $row-> fetch()) {
  15.  
  16. $this-> user= $line['name'];
  17. $this-> pass= $line['password'];
  18.  
  19. if ($this->user== $_POST['user'] && $this-> pass== md5($_POST['pass'])) {
  20. $_SESSION['logged']= $_POST['user'];
  21. header ("Location: protect.php");
  22. }
  23. else {
  24. header ("Location: login.html");
  25. }
  26.  
  27. if ($line['name'] > 0) {
  28. echo 'This user does not exist';
  29. }
  30.  
  31. } // end while
  32.  
  33. $row-> closeCursor();
  34.  
  35. } // end function
  36.  
  37. }
  38.  
  39. $user= new user;
  40. $user-> checkuser();
  41.  
  42. ?>


strona chroniona:

  1. <?php
  2.  
  3. include ("class.php");
  4.  
  5. if (isset($_SESSION['logged'])) {
  6. echo 'Logged as: ' . $_SESSION['logged'] . '<a href="logout.php">Sign out</a>';
  7. }
  8.  
  9. else {
  10. header ("Location: login.html");
  11. }
  12.  
  13. ?>


Formularz:
  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
  5. <title>Title</title>
  6. </head>
  7. <form action="class.php" method="post">
  8. <div id="form">
  9. <input type="text" name="user" />
  10. <input type="password" name="pass" />
  11. <input type="submit" value="Sign in" />
  12. </div>
  13. </form>
  14. </body>
  15. </html>
Gość
  1. <?php
  2. else {
  3. header ("Location: login.html");
  4. }
  5. ?>



Widzimy więc, że nic dziwnego, iż przenosi do 'login.html'. Myślę, że powinno być :

  1. <?php
  2. if ($this->user== $_POST['user'] && $this-> pass== md5($_POST['pass'])) {
  3. $_SESSION['logged']= $_POST['user'];
  4. header ("Location: protect.php");
  5. }
  6. else {
  7.  
  8. if ($line['name'] > 0) {
  9. echo 'This user does not exist';
  10. } 
  11. else header ("Location: login.html");
  12. }
  13. ?>
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.