我有一个为学校制作的快速登录表格,唯一的问题是,当我尝试登录时,当我想登录第一个用户时,一切运行正常(用户名:hbutler密码:password),但是当我尝试登录到其他用户时帐户,如果页面设置不正确,我会刷新页面设置,这是我的代码:
<?PHP
//Create the connection…
//("where the database is", 'Database login' , 'database password' , "Database name")
$con=mysqli_connect("", 'root', 'root', "Social");
//Check our connection…
if (mysqli_connect_errno($con))
{
echo " Sorry Mate";
}
$username = $_POST['username'];
$password = $_POST['pawd'];
$result = mysqli_query($con, "SELECT * FROM User_info");
$row = mysqli_fetch_array($result);
$value = $row['username'];
if($value == "$username")
{
$result = mysqli_query($con, "SELECT * FROM User_info WHERE username ='$username'");
$row = mysqli_fetch_array($result);
$value = $row['password'];
if($value == "$password")
{
$sql=("UPDATE user_check SET user = '1', name = '$username'");
header( 'Location: feed.php' ) ;
}
else
{
header( 'Location: social.php' ) ;
}
}
else
{
header( 'Location: social.php' ) ;
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
?>
这从上一页获取表单数据,我不知道为什么会这样,并且我尝试将php更改为:
$result = mysqli_query($con, "SELECT username FROM User_info");
$row = mysqli_fetch_array($result);
if($row == "$username")
但这没有任何建议吗?
问题在于,在您执行第一个查询后,要从db获取信息,您仅使用表的第一行,
$row = mysqli_fetch_array($result);
然后将其与提交的用户名进行比较,这就是为什么您不能使用任何其他用户名登录的原因,解决方案是在第一个查询中添加WHERE子句,
$result = mysqli_query($con, "SELECT * FROM User_info WHERE username ='".$username."'");
然后比较比较容易的密码,但是仍然有更好的方法来进行身份验证。但以您的示例为例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句