我的代码遇到了问题。 不知何故,检查会话的if语句总是返回true。即使在开始。我无法弄明白为什么......
这是我的登录页面。
<?php
session_start();
if(isset($_SESSION['username'])) //<-----This always returns true here for a strange reason.
{
}
?>
这是我的登录控制器。
if($_POST)
{
if(isset($_POST['submit']) AND $_POST['submit'] == "login")
{
$username = $_POST['username'];
$password = $_POST['password'];
try
{
include '../model/Login.php';
$login = new Login($username, $password);
if($login == TRUE)
{
session_start();
$_SESSION['username'] = $username;
header("Location:../index.php");
}
}
catch (Exception $exc)
{
echo $exc->getMessage();
}
}
}
答案 0 :(得分:0)
这总是返回true,因为即使$ _SESSION [&#39;用户名&#39;]为空(==&#39;&#39;),也会设置。
要取消设置,您可以使用:
unset($_SESSION['username']);
或
session_destroy();
如果您只想测试它是否为空,则有:
if(!empty($_SESSION['username'])){}//Will return false if $_SESSION['username'] == ''
甚至
if($_SESSION['username'] != ''){}//Will return true if $_SESSION['username'] has a value (other than '')
PS:empty()的优点是它还将测试变量isset()