Къде е проблема ?

ronaldinho_880

Registered
PHP:
<?php
session_start();
$username = addslashes($_POST['username']);
$password = addslashes($_POST['password']);

if($_SERVER['REQUEST_METHOD'] != "POST")
{
     header('Location: index.php');
}
if(isset($username) && isset($password))
{
$q = mysql_query("SELECT * FROM users WHERE name='$username' AND password='$password' LIMIT 1");
if(mysql_num_rows($q) == 1)
{
      $user = mysql_fetch_array($q);
      $_SESSION['username'] = $user['username'];
	  header('Location index.php');
}
}
?>

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ........ on line 13
 
mysql_query е върнал false - имаш грешка в заявката.

$q = mysql_query("SELECT * FROM users WHERE name='$username' AND password='$password' LIMIT 1") or die(mysql_error());
 
И едно нещо, което не е по заявката можеш да промениш малко

PHP:
if(isset($username) && isset($password))

да стане така:

PHP:
if( isset($username, $password) )

isset() може да получава множество променливи и връща true, когато всичките са true.

Относно заявката, най-вероятно си объркал някое име на колона.
 
Revelation каза:
И едно нещо, което не е по заявката можеш да промениш малко

PHP:
if(isset($username) && isset($password))

да стане така:

PHP:
if( isset($username, $password) )

isset() може да получава множество променливи и връща true, когато всичките са true.

Относно заявката, най-вероятно си объркал някое име на колона.

или просто в Дб паролите се записват в md5(или друг) форматиран вид, а той при заявката прави проверка без да е прегвърлил паролата ..
Код:
SELECT * FROM users WHERE name='$username' AND password='"[color=darkred].md5[/color]($password)."'
:idea:
 
Глупости. Тя заявката, ако е вярна, дали паролата ще е по друг начин записана, или не - това няма значение. Тя така или иначе ще се изпълни и mysql_num_rows() ще си получи ресурса и ще върне 0. А въпроса е, че като цяло заявката не се изпълнява и това се дължи или на грешно име на таблица или някоя колона.
И все пак, нека даде резултата от mysql_error() да видим за какво става дума.
 

Back
Горе