将会话设置为登录的两个步骤

时间:2013-02-05 12:49:02

标签: php mysql session

我有一个奇怪的问题,即在第二次点击之前没有将用户设置为登录到SESSION(尽管他们已登录)

所以,我有一个登录下拉列表,如下所示:

enter image description here

我将用户发送到ACCOUNT-SELECTOR。 PHP根据业务或个人帐户确定适当的验证:

if (isset($_POST['loginAccountType']) && $_POST['loginAccountType'] == 'individual') {       
     include('ind_login.php');;
} elseif (isset($_POST['loginAccountType']) && $_POST['loginAccountType'] == 'business') {
     include('bus_login.php');
} else {
     include('error_login.php');
}

我的account-selector.php页面以及session_start();页面上有ind_login.php。并且,两者都位于页面的最顶部(在其他任何事情之前)。

登录后,这是我的观点:

enter image description here

如您所见,我可以在$_SESSION['Ind_ID']页面上设置并返回ind_login.php并查看您的个人资料(与SESSION ID相关联)。

但是,当代码显示此按钮应设置为显示时,我们仍会在导航上看到LOG IN按钮:none:

if(isset($_SESSION['Ind_ID'])) {
     $accIndStyle = "visibility: visible;"; 
} else {
     $accIndStyle = "display:none;";
}

我知道这是正确的代码,因为按钮确实变为display:none对于其他按钮。但是,如果我第二次登录,或者使用会话(开始)转到其他页面,则网站将按设置读取$_SESSION['Ind_ID']并隐藏登录按钮并将其替换为注销按钮。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

将session_start()放在index.php文件的顶部(该文件包含其他文件。)

答案 1 :(得分:0)

好像你的页面需要刷新,或者只是在那里抛出一个ajax调用来根据session更新按钮值。