这里是初学者。我更改了登录表单
$q = "SELECT id, fname, lname FROM users WHERE (username='$username' AND password=SHA1('$password'))";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br>MySQL Error: " . mysqli_error($dbc));
if (@mysqli_num_rows($r) == 1) {
$_SESSION = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
mysqli_close($dbc);
$url = BASE_URL . (isset($_SESSION['redirect']) ? $_SESSION['redirect'] : 'index.php');
unset($_SESSION['redirect']);
ob_end_clean();
header("Location: $url");
exit();
} else {
echo 'Message';
}
到此
$q = "SELECT id, fname, lname FROM users WHERE (username='$username' AND password=SHA1('$password'))";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br>MySQL Error: " . mysqli_error($dbc));
if (@mysqli_num_rows($r) == 1) {
$row = mysql_fetch_assoc($r);
$_SESSION['id'] = $row['id'];
$_SESSION['fname'] = $row['fname'];
$_SESSION['lname'] = $row['lname'];
mysqli_free_result($r);
mysqli_close($dbc);
$url = BASE_URL . (isset($_SESSION['redirect']) ? $_SESSION['redirect'] : 'index.php');
unset($_SESSION['redirect']);
ob_end_clean();
header("Location: $url");
exit();
} else {
echo 'Message<p>';
}
并且登录表单不再起作用。因此,我基本上改变了我的形式,从将所有行设置为 session 变量到单独将行设置为 session 变量。我需要这样做才能使重定向起作用。不确定我是否错误地设置了 session 变量或问题是什么,但我无法再使用表单登录(提交时页面只会刷新而不让用户登录)。
编辑:此问题的解决方案发布如下。这是为了取代
$row = mysql_fetch_assoc($r);
与
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
根据this post , mysql_fetch_array( $result, MYSQL_ASSOC ) = mysql_fetch_assoc( $result )
。然而,当在应该登录的时候进行切换时,登录却无法登录。
最佳答案
不知道为什么会这样,但解决方案是替换
$row = mysql_fetch_assoc($r);
与
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
如有解释,我们将不胜感激!
关于php - 将 session 变量存储从全部更改为个人后,登录表单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678815/