将会话变量存储从全部更改为个人后,登录表单不起作用

时间:2017-10-11 02:27:32

标签: php mysql forms session

初学者。我从

更改了我的登录表单
$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 postmysql_fetch_array( $result, MYSQL_ASSOC ) = mysql_fetch_assoc( $result )。但是,当应该进行切换时,登录不起作用。

1 个答案:

答案 0 :(得分:0)

不确定为什么会这样,但解决方案是替换

$row = mysql_fetch_assoc($r);

$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);

任何有解释的人都将不胜感激!