我在html中创建了一个带有用户名、密码和登录按钮的表单。我已经为php创建了代码,但是它无法检查登录成功的条件,下面是php代码。除了登录成功外,它满足所有条件。我想它有一些简单的错误,我找不到它,请帮帮我。
<?php
include_once('db.php');
$username = mysql_real_escape_string( $_POST["username"] );
$password = mysql_real_escape_string( md5($_POST["pass"]) );
if( empty($username) || empty($password) )
echo "Username and Password Mandatory ";
else
{
$sql = "SELECT count(*) FROM users WHERE( username='$username' AND password='$password')";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
if( $row[0] > 0 )
echo "Login Successful";
else
echo "Failed To Login";
}
?>发布于 2017-07-28 14:30:37
很可能,您必须使用以下命令而不是$row[0] > 0
您可以这样检查用户:
if(mysql_num_rows($res)==1)
echo "Login Successful";
} else {
echo "Failed To Login";
}发布于 2017-07-28 14:59:27
您应该直接检查mysql_fetch_array()的输出是否不是null或false:
$res = mysql_query($sql);
if( $row = mysql_fetch_array($res) )
echo "Login Successful";
else
echo "Failed To Login";
} 关于您的总体代码,有一些事情显然是错误的做法:
这一守则更好:
<?php
include_once('db.php');
if( empty($_POST['username']) || empty($_POST['password']) )
echo "Username and Password Mandatory ";
else {
try {
$db = new PDO("mysql:host=$dbHostname;dbname=$basename", $dbUsername, $dbPassword);
$stmt = $db->prepare("SELECT * FROM users WHERE username = username AND password = password");
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':password', md5($_POST['password'])); // I still urge you to pick a valid hash function ! This one is broken for ages !
$stmt->execute();
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
if (empty($row))
echo "Failed To Login";
else
echo "Login Successful";
} https://stackoverflow.com/questions/45375948
复制相似问题