[英]Login does not work
我一直在试图解决这个问题。 这很容易,但是我找不到错误。 看起来错误在于foreach,因为上方的所有内容都有效。 当我填写输入并单击“登录”按钮时,脚本将无法工作。
if (isset($_POST['submit']) AND (!empty($_POST['username']) AND (!empty($_POST['password'])))) {
$username = $_POST['username'];
$password = $_POST['password'];
$pass = hash('sha256',$password);
$select = $db->prepare("SELECT * FROM users WHERE username= :username AND password= :password");
$select->bindParam(':username', $username);
$select->bindParam(':password', $pass);
$select->execute();
foreach ($select as $data) {
if ($data['username'] == $username AND $data['password'] == $pass) {
$_SESSION['username'] = $username;
$_SESSION['id'] = $data['id'];
?>
<div class="echos">
<?php
echo "Login completed" . "<br>";
echo "<a href='http://jezecek.nostools.cz/'>Homepage</a>";
}
else {
echo "Wrong username or password!" . "<br>";
echo "<a href='http://jezecek.nostools.cz/include/registration.php'>Try again</a>";
}
}
}
else {
echo "Fill all fields!" . "<br>";
echo "<a href='http://jezecek.nostools.cz/include/login.php'>Try again</a>";
}
?>
</div>
即使我像这样使用fetchAll(),它仍然无法正常工作
$select = $db->prepare("SELECT * FROM users WHERE username= :username AND password= :password");
$select->bindParam(':username', $username);
$select->bindParam(':password', $pass);
$select->execute();
$result = $select->fetchAll();
foreach ($result as $data) {
if ($data['username'] == $username AND $data['password'] == $pass) {
$_SESSION['username'] = $username;
$_SESSION['id'] = $data['id'];
?>
<div class="echos">
<?php
echo "Login completed" . "<br>";
echo "<a href='http://jezecek.nostools.cz/'>Homepage</a>";
}
提取结果集中的所有行:-
$result = $select->fetchAll();
该错误发生在foreach中,因为您没有从查询中获取任何数据。 您可能想获取数据并遍历
$select->execute();
$data = $select->fetchAll();
foreach($data as $val) {
//.....
请先获取数据再循环
$select->execute();
$data=$select->fetchAll();
您也不需要循环,只需尝试以下操作:
$data = $select -> fetch();
if($data)
{
// do login
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.