我正在使用会话变量来检查用户是否已登录。但是第一次提交登录表单时,会话变量以某种方式未设置,但第一次仅。
如果我提交两次登录表单,那就可以了。
或者说我已经提交了两次表格以便登录。然后退出。现在我只需要提交一次表格即可登录。
以下是用于登录用户的代码:
<?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
,第二次正确显示用户名。
我一直试图解决这个问题大约一个小时了,我真的可以理解为什么这不起作用。
答案 0 :(得分:0)
请在没有 www。的情况下检查您是否第一次访问您的网站,因为您第二次重定向到 www.madsanker.dk 所以两个不同域。
希望有所帮助:D