初学者。我从
更改了我的登录表单$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>';
}
登录表单不再有效。所以,我基本上改变了我的形式,将所有行设置为会话变量,将各行设置为会话变量。我需要这样做,以便重定向可行。不确定我是否错误地设置了会话变量或问题是什么,但我无法再使用表单登录(在提交页面时只刷新而不登录用户)。
编辑:此问题的解决方案发布如下。这是替换
$row = mysql_fetch_assoc($r);
与
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
根据this post,mysql_fetch_array( $result, MYSQL_ASSOC ) = mysql_fetch_assoc( $result )
。但是,当应该进行切换时,登录不起作用。
答案 0 :(得分:0)
不确定为什么会这样,但解决方案是替换
$row = mysql_fetch_assoc($r);
与
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
任何有解释的人都将不胜感激!