在我的网站上,我在页面顶部开始一个会话。在页面的后面我已经包含了导航栏,这是完整的文件(nav.php
):
<div class="inner">
<ul id="nav" class="menu">
<li class="first"><a href="#">Home</a></li>
<li><a href="#">Brugklas</a>
<ul>
<li class="child"><a href="#">123</a></li>
<li class="child"><a href="#">456</a></li>
<li class="child"><a href="#">789</a>
<ul>
<li><a href="#">Hello</a></li>
<li><a href="#">I’m here!</a>
<ul>
<li><a href="#">Hello</a></li>
<li><a href="#">I’m here!</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Klas 2</a></li>
<li><a href="#">T&O</a></li>
<li><a href="#">Algemeen</a></li>
<?php
if(isset($_SESSION['logged_in'])){
echo '<li><a href="#">Portal</a></li>';
echo '<li class="last"><a href="javascript:void(0);" onclick="logout();">Logout</a></li>';
} else {
echo '<li class="last"><a href="javascript:void(0);" onclick="showLoginScreen();">Login</a></li>';
}
?>
</ul>
现在这个工作正常,直到我想登录。 (完全以jQuery,AJAX风格完成)我一登录成功。我重新加载导航栏(通过AJAX),因为它需要更改更新的信息(注销链接和门户链接。)这不起作用。只要在session_start();
的顶部添加nav.php
,它就可以正常工作,但我收到的PHP错误已经启动了会话。
我可以通过不显示错误来解决这个问题。这是通过@session_start();
完成的,但在我看来,代码仍然很糟糕。如果没有@
session_start();
,我该如何解决我的问题
我希望我的问题很明确。
答案 0 :(得分:2)
将其放在nav.php
if (!isset($_SESSION)) {session_start();}
在开头加载页面时会出现问题。
您开始会话并再次包含nav.php
开始会话的位置。
如果您第二次加载页面,页面独立于父页面,则会话可以再次启动。