【问题标题】:Get session data in AJAX loaded page在 AJAX 加载页面中获取会话数据
【发布时间】:2013-08-10 16:34:29
【问题描述】:

在我的网站上,我在页面顶部开始一个会话。在页面后面我已经包含了导航栏,这是完整的文件(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&rsquo;m here!</a>
                       <ul>
                            <li><a href="#">Hello</a></li>
                            <li><a href="#">I&rsquo;m here!</a></li>
                        </ul> 
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="#">Klas 2</a></li>
    <li><a href="#">T&amp;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),因为它需要使用更新的信息(注销链接和门户链接)进行更改。这不起作用。只要我在nav.php 的顶部添加session_start();,它就可以工作,但是我得到一个会话已经开始的PHP 错误。

我可以通过不显示错误来解决此问题。这是通过@session_start(); 完成的,但在我看来,代码仍然很糟糕。在session_start(); 前面没有@ 的情况下如何解决我的问题

我希望我的问题很清楚。

【问题讨论】:

    标签: php jquery ajax session


    【解决方案1】:

    把这个放在nav.php的顶部

    if (!isset($_SESSION)) {session_start();}

    在开始加载页面时会出现问题。 您开始会话,并在其中包含 nav.php 再次开始会话。

    如果您第二次加载该页面,则该页面独立于父页面,并且可以再次启动会话。

    【讨论】:

    • 谢谢格特!像魅力一样工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多