我正在使用会话来跟踪用户。 在另一个页面上,它在用户登录时设置用户名和密码变量,然后重定向到此页面。
出于安全原因,当用户来到这里时,我想检查用户是否已登录。如果用户未登录,则会将用户重定向到index.php页面
<?php
session_start();
if(isset($_SESSION['sessionid'])) {
if (isset ($_SESSION['username' and 'password'])){
}
else
{
header("Location:Index.php");
}
}
?>
问题是,如果我只是通过输入相关的URL来加载页面,我就不会重定向到索引页面
感谢任何帮助
答案 0 :(得分:1)
这是检查if语句使用此
的错误方法if (isset($_SESSION['username']) && isset($_SESSION[ 'password']))
答案 1 :(得分:1)
我强烈建议不要在会话中存储该信息。话虽这么说,你的语法有错误:
if (isset ($_SESSION['username']) && isset ($_SESSION['password'])) {...}
但是,如果我可以进一步添加,我建议(至少)创建一个类或函数来为你做这个,因为你将使用它而不仅仅是我假设。
创建一个函数,例如:
function is_logged_in () {
if ((isset ($_SESSION['username'])) && (isset ($_SESSION['password']))) {
/* this is an awful way of checking if a user is logged in! */
return true;
} else {
return false;
}
}
然后,当您需要检查用户是否已登录时,只需引用该功能:
if (is_logged_in ()) {
/* show members only stuff */
} else {
echo 'Please login';
}
然后,当您了解更多并继续使用您的应用程序时,您可以调整一个功能,而不必返回并在代码中的任何位置更新登录检查。
但请:请读一读用户安全性,或者更好地使用许多预先制作的包中的一种。
干杯。
答案 2 :(得分:1)
使用isset ($_SESSION['username' and 'password'])
,您不会检查两个变量$_SESSION['username']
和$_SESSION['password']
是否存在,而是$_SESSION
变量是否带有键'username' and 'password'
(评估为true
)存在,基本上isset($_SESSION[true])
。
您实际上需要列出两个变量:
isset($_SESSION['username'], $_SESSION['password'])
答案 3 :(得分:0)
您的if
条件中存在语法错误,您需要单独声明会话值以更改为
if((isset($_SESSION['username'])) && (isset($_SESSION['password']))) {