2013-05-12 108 views
-3

我使用会话来跟踪用户的方式。 在另一个页面上,当用户登录然后重定向到这个页面时,它设置用户名和密码变量。会话不工作应该

出于安全考虑,当用户来到这里我要检查该用户登录。如果用户没有登录,然后将用户重定向到index.php页面

<?php 

    session_start(); 
    if(isset($_SESSION['sessionid'])) { 
if (isset ($_SESSION['username' and 'password'])){ 
} 
else 
{ 
    header("Location:Index.php"); 
} 
    } 
?> 

问题是,如果我只是在相关输入网址加载网页我不是重定向到索引页

任何帮助表示赞赏

+0

你认真地存储在会话中的密码与用户名一起? – 2013-05-12 17:32:14

回答

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'; 
} 

然后,当你学习更多,并继续您的应用程序,您可以调整一个功能,而不必回过头来,并更新代码中的任何地方的登录检查。

但是:请,请,请用户安全阅读起来,甚至更好的使用许多预先制作的包之一。

干杯。

+0

感谢这个:)这是我的任务设计已经在不久将移交,所以我没有时间,使网站100%的安全,内容管理系统的一部分,但它很可能我会做类似的事情对于我下一学年的最后一年项目,所以我会记住这一点,谢谢:) 我打算把这个整个剧本包括在某个点:) 首先我想实际得到后端我。e CMS的一部分,我必须为我的任务做,然后再触及它:) – 2013-05-12 18:12:27

+0

很酷。祝你的项目好运。乐意效劳。 – 2013-05-12 19:54:39

1

这是检查在使用if语句这个

的错误方式
if (isset($_SESSION['username']) && isset($_SESSION[ 'password'])) 
0

您的if条件sintax错误,你需要separatly声明会话值,从而改变这个

if((isset($_SESSION['username'])) && (isset($_SESSION['password']))) { 
1

随着isset ($_SESSION['username' and 'password'])你不检查是否两个变量$_SESSION['username']$_SESSION['password']存在,但$_SESSION变量与关键'username' and 'password'(计算结果为true)是否存在,所以基本上isset($_SESSION[true])

实际上,你需要列出两个变量:

isset($_SESSION['username'], $_SESSION['password'])