单页应用程序session_start错误通知


single page application session_start error notification

>我有一个基于index.php页面的单页应用程序,我在其中启动会话并显示第一个内容。然后,我根据单击的链接通过 Ajax 加载不同div 中的内容。

如果我想访问加载页面中的$_SESSION数组(例如显示用户名),我也需要session_start放入通过 Ajax 加载的页面中。一切都以这种方式工作正常,但是当我看到日志时,我看到每次通过Ajax加载其中一个页面时,php都会抛出错误,说

"会话已开始。忽略session_start()"。

所以:一方面我需要放session_start来访问会话数组,但另一方面,session_start命令被忽略。

从索引.php:

<?php
require '../session_handler.inc.php';
require 'global_functions.php';
session_start();
if(isset($_SESSION['id1'])){
    $actusr=$_SESSION['id1'];
}

示例 ajax 调用:

function loadContent(sourceUrl){
    $(".container").load(sourceUrl);
}

我需要在被调用页面顶部的 php:

<?php 
require '../../session_handler.inc.php';
require '../global_functions.php';
session_start();

如果我删除 session_start(),$_SESSION 将不可用

如何解决这种情况?我可以在不启动会话的情况下从加载的页面访问会话数组吗?

最好使用此行而不是session_start()。您可能有多个session_start,并在这两者之间使用会话。

if(session_id() == '') {
    session_start();
}

如果您在本地 WAMP 或 Xamp 环境中进行测试,我建议您清除缓存,关闭浏览器(不是单个选项卡)并运行您的应用程序。

试试这个 1:

 <?php
        if(!isset($_SESSION)) 
        { 
            session_start(); 
        } 
    ?>

2:如果你有php>=5.4.0,最好使用这个:

$status = session_status();
if($status == PHP_SESSION_NONE){
    //There is no active session
    session_start();
}else
if($status == PHP_SESSION_ACTIVE){
    //Destroy current and start new one
    session_destroy();
    session_start();
}

希望这有帮助..

将session_start(); 移动到页面顶部

<?php
session_start();
require '../session_handler.inc.php';
require 'global_functions.php';
if(isset($_SESSION['id1'])){
    $actusr=$_SESSION['id1'];
}

session_handler.inc.php 或 global_functions.php 可能已经包含 session_start(),因此请将 index.php 的 session_start() 移到顶部。 另请注意,这应该是索引中的第一个语句.php

或在索引的页面顶部插入下面的代码.php

<?php
session_start();
?>

并删除索引中的另一个session_start(.php