我正在编写一个登录系统,我正在编写的 php 代码没有错误消息,当我使用错误的密码时,仍然没有错误或成功消息。我有一种感觉,PHP 没有读取 SQL,但是你们中的哪位能指出这一点并告诉我如何解决它吗?
<?php
$accounts = mysql_connect("localhost" , "root" , "placeholder") or die (mysql_error());
$loginname = $_POST['loginname'];
$password = $_POST['password'];
$needle = '@';
$search = strpos($loginname, $needle);
if ( isset($loginname) )
{
mysql_select_db("nematznetwork", $accounts);
//$username = "test <br>";
//$password = 'pass';
//$accounts;
//echo $loginname . "<br>";
//echo $password;
if($search === FALSE)
{
//USERNAME
$username = $loginname;
$usernamesql = "SELECT * FROM users WHERE username='" . $username . "'";
$usernameresults = mysql_query($usernamesql, $accounts);
while($usernamerow = mysql_fetch_array($usernameresults))
{
$usernamecorrect = 'yes';
$dbpassword = $usernamerow['password'];
}
}
else
{
//EMAIL
$email = $loginname
$emailsql = "SELECT * FROM users WHERE email='" . $email . "'";
$emailresults = mysql_query($emailsql, $accounts);
while($emailrow = mysql_fetch_array($emailresults))
{
$usernamecorrect = 'yes';
$dbpassword = $emailrow['password'];
}
}
if($dbpassword == $password)
{
//COOKIE GOES HERE
//NO COOKIE YET
}
else
{
//PASSWORD ERROR GOES HERE
$error = 'true';
}
}
else
{
//NO USER NAME VARIABLE GOES HERE
$error = 'true';
}
if ( isset($usernamecorrect) )
{
}
else
{
//WRONG USER NAME VARIABLE GOES HERE
$error = 'true';
}
if ( isset($error) )
{
//ERROR MESSAGE FOR INCORRECT USERNAME/EMAIL/PASSWORD
echo "<script type='text/javascript'>\n";
echo "alert('The Username/Email or Password you entered was incorrect.');\n";
echo "window.location = “http://www.google.com;\n";
echo "</script>";
}
else
{
}
?>
最佳答案
很难给您一个明确的答案,因为有很多原因可能导致您得不到答案或出现错误。
计算机的问题在于它们按照您告诉它们的去做。
首先,不要将未转义的用户输入发送到您的服务器,这一点非常重要,尤其是像这样。有“通用密码”可以轻松解锁该系统。 确保使用 mysqli_real_escape_string 或准备好的语句。
其次,请从正确的方式开始,使用 mysqli_* 或 PDO 而不是即将被删除的 mysql_*。
第三,考虑将密码存储为哈希。
要对此进行调试,您需要测试每个级别。回显您的 SQL 并回显查询结果。您从数据库收到的数据与您期望的数据不匹配的地方很快就会变得明显。
总的来说,我可能会认为这些代码比较死板,然后重新开始。更安全,更值得您花时间。
关于php - 我的 PHP/SQL 查询有什么问题(不会从 SQL 读取)(登录系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869842/