Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
stefik4
Witam mam taki problem: Mam logowanie w PHP i po wpisaniu DOBRYCH wartości wyskakuje ze błędny login lub hasło ale jak się przejdzie do strony index.php gdzie sa dane z sesji to jest sie zalogowanym poprawnie ;/

Logowanie:
  1. <form name="login" method="post" action="manager/login.php">
  2.  
  3. <table border="0" width="180" align="center">
  4. <tr>
  5. <td>Login:</td>
  6. <td><input type="text" name="username" class="text" style="height: 16px; width: 150px;"></td>
  7. </tr>
  8. <tr>
  9. <td>Hasło:</td>
  10. <td><input type="password" name="password" class="text" style="height: 16px; width: 150px;"></td>
  11. </tr>
  12. <tr>
  13. <td width="71">&nbsp;</td>
  14. <td width="139">
  15. <input type="submit" name="submit" value="Zaloguj" style="height: 20px; width: 150px; relative: normal;">
  16. </td>
  17. </tr>
  18. </table>
  19. </form>


login.php

  1. <?php
  2. $username = $_POST['username'];
  3. $password = md5($_POST['password']);
  4.  
  5.  
  6.  
  7. $query = &#092;"SELECT * FROM users2 WHERE username='$username' AND password='$password'\";
  8. $result = mysql_query($query);
  9. $ile = mysql_num_rows($result);
  10.  
  11.  
  12. if ($ile == 0) {
  13. $error = 'Zły login lub/i hasło!!';
  14. echo $error;
  15. include &#092;"login.html\";
  16.  
  17. } else {
  18. $_SESSION['username'] = $username;
  19. include &#092;"index.php\";
  20. }
  21.  
  22. ?>


Kompletnie nie wiem gdzie jest bląd sadsmiley02.gif
mac_fly
Zobacz tak:
  1. <?php
  2. include "header.php";
  3. include "config.php";
  4.  
  5. $username = $_POST['username'];
  6. $password = md5($_POST['password']);
  7.  
  8. if(mysql_num_rows(mysql_query("SELECT * FROM users2 WHERE username =$username' AND password ='$password'")))
  9. {
  10. $_SESSION['username'] = $username;
  11. include "index.php";
  12. }
  13. else
  14. {
  15. $error = '<div id="error">Zły login lub/i hasło!!</div>';
  16. echo $error;
  17. include "login.html";
  18. }
  19. ?>


Tak na marginesie to filtruj dane.(htmlspecialchars itp.)
stefik4
mac-fly wyswietla bledy i tak samo jak przed tem tzn pokazuje ze zle dane ;/

Bledy:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/stefik44/domains/vmworldt.unl.pl/public_html/test/manager/login.php on line 9

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
mac_fly
Jak masz baze danych MSSQL to stosujesz :
mssql_num_rows i mssql_query
stefik4
Sory blad w nazwie mam bazę oczywiscie MYSQL
mac_fly
  1. <?php
  2. if(mysql_query(mysql_num_rows("SELECT * FROM users2 WHERE username =$username' AND password ='$password'")))
  3. ?>

Zobacz tak
stefik4
Błąd: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/stefik44/domains/vmworldt.unl.pl/public_html/test/manager/login.php on line 9

Mysle ze blad tki tutaj:

  1. <?php
  2. {
  3. $_SESSION['username'] = $username;
  4. include "index.php";
  5. }
  6. else
  7. {
  8. $error = '<div id="error">Zły login lub/i hasło!!</div>';
  9. echo $error;
  10. include "login.html";
  11. }
  12. ?>
blooregard
Cytat
if(mysql_num_rows(mysql_query("SELECT * FROM users2 WHERE username =$username' AND password ='$password'")))


Znak apostrofu przed $username - tu tkwi błąd w tym momencie.

Panowie, to są podstawy - błąd "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource" oznacza, że f-cja oczekująca jako parametr rezultatu zapytania SQL go nie otrzymuje, więc zapytanie nie wykonuje sie prawidłowo. A Wy szukacie błędu w if-ie.

I jeszcze jak wół macie numer linii z błędem podany.
Wicepsik
  1. <?php
  2. $username = $_POST['username'];
  3. $password = md5($_POST['password']);
  4.  
  5.  
  6.  
  7.  
  8. $result = mysql_query('SELECT * FROM `users2` WHERE `username` = "'.$username.'" AND `password` = "'.$password.'"');
  9. $row = mysql_fetch_assoc($result);
  10.  
  11.  
  12. if ($row) {
  13. $_SESSION['username'] = $username;
  14.  
  15.  
  16.  
  17. } else {
  18. echo 'Zły login lub/i hasło!!';
  19.  
  20. }
  21. ?>
stefik4
Wicepsik nadal to samo pokazuje bledny login i haslo i jaks ie przejdzie od docelowej strony to jest się zalogowanym:


  1. <?php session_start(); include "header.php"; include "config.php";
  2.  
  3.  
  4. $username = $_POST['username'];
  5. $password = md5($_POST['password']);
  6.  
  7.  
  8.  
  9. $result = mysql_query('SELECT * FROM `users2` WHERE `username` = "'.$username.'" AND `password` = "'.$password.'"');
  10. $row = mysql_fetch_assoc($result);
  11.  
  12.  
  13. if ($row) {
  14. $_SESSION['username'] = $username;
  15. include "index.php"; // docelowa strona po zalogowaniu
  16.  
  17.  
  18.  
  19. } else {
  20. echo 'Zły login lub/i hasło!!'; // blad
  21.  
  22. }
  23.  
  24. ?>
Wicepsik
A skasowałeś swoje sesje? Sprawdź te hasła bo to musi działać...
Tajgeer
  1. <?php
  2. $username = $_POST['username'];
  3. $password = md5($_POST['password']);
  4.  
  5. $query = "SELECT * FROM users2 WHERE `username`='$username' AND `password`='$password'";
  6. $result = mysql_query($query);
  7. $ile = mysql_num_rows($result);
  8.  
  9.  
  10. if (!$ile) {
  11. $error = 'Zły login lub/i hasło!!';
  12. echo $error;
  13. include "login.html";
  14.  
  15. } else {
  16.  
  17. $_SESSION['username'] = $username;
  18. include "index.php";
  19. }
  20.  
  21. ?>
blooregard
A pokaż ten index.php, co to ma być inkludowany po pomyślnym zalogowaniu.
stefik4
Dośćjest dlugi więc wkleiłem tutaj: http://wklejaj.pl/3hd5q
Andaramuxo
A nawiązujesz połączenie z bazą?
blooregard
  1. <?php
  2. if ($_SESSION['userid'] == 0) { header('Location: login.php'); }
  3. ?>


A do sesji zapisujesz:
  1. <?php
  2. $_SESSION['username'] = $username;
  3. ?>

Więc jak w $_SESSION['userid'] nic nie ma, czyli jest false, czyli 0, inkluduje Ci login.php, a tam pewnie masz komunikat błędu, tak?
PanGuzol
Po sprawdzeniu loginu i hasła przypisujesz wartość username tylko do $_SESSION['username'] a sprawdzasz czy zalogowany $_SESSion['userid']
stefik4
Dzieki wielkie! działa,

Daje Pomógł snitch.gif
blooregard
@PanGuzol: Byłeś szybszy o całe 60 sekund smile.gif

@stefik4: no i gitara.
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.