首先没有设置会话变量尝试

时间:2016-04-06 19:38:23

标签: php

我正在使用会话变量来检查用户是否已登录。但是第一次提交登录表单时,会话变量以某种方式未设置,但第一次

如果我提交两次登录表单,那就可以了。

或者说我已经提交了两次表格以便登录。然后退出。现在我只需要提交一次表格即可登录。

以下是用于登录用户的代码:

<?php
session_start();
define('DB_NAME', 'madsanker_dk_db');
define('DB_USER', 'madsanker_dk');
define('DB_PASSWORD', '');
define('DB_HOST', 'mysql43.unoeuro.com');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
 die('Could not connect: ' .mysqli_error());
}

$db_selected = mysqli_select_db( $link, DB_NAME);

if (!$db_selected) {
 die('Could not connect: ' .mysqli_connect_error());
}

$username = $_POST['username'];
$password = $_POST['password'];
$username = mysqli_real_escape_string($link,$username);
$password = mysqli_real_escape_string($link,$password);
$password = md5($password);
$sql = "SELECT * FROM mainLogin WHERE username = '$username'";

$result = mysqli_query($link, $sql);

$count=mysqli_num_rows($result);
  if($count==1){
    $row = mysqli_fetch_assoc($result);
    if ($password == $row['password']){
SETTING THE VARIABLE HERE --> $_SESSION['login'] = $username;
        echo "<script> window.location.assign('http://www.madsanker.dk'); </script>";
        return true;
    }
    else {
        echo "<script> window.location.assign('http://www.madsanker.dk/loginpage'); </script>";
        return false;
    }
}else{
    echo "<script> window.location.assign('http://www.madsanker.dk/loginpage'); </script>";
    return false;
}
mysqli_close($link);
?>

我确信该变量是第一次设置,因为如果我回显该变量并在设置后立即执行exit();,它就会正确显示。

我重定向的页面如下所示:

<?php
session_start();
$_SESSION['activePage'] = "home";
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Madsanker</title>
        <link rel="stylesheet" href="main.css" name="pageStyle" type="text/css">
        <?php include "nav-bar.php"; ?>
    </head>
    <body>
        <h2>Welcome to Madsanker.dk</h2>
        <?php include "chatIframe.php" ?>
    </body>
</html>

即使我将var_dump($_SESSION['login']); exit();放在文档的顶部,它也会显示第一个NULL,第二次正确显示用户名。

我一直试图解决这个问题大约一个小时了,我真的可以理解为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

请在没有 www。的情况下检查您是否第一次访问您的网站,因为您第二次重定向到 www.madsanker.dk 所以两个不同域。

希望有所帮助:D