【发布时间】:2016-04-22 15:16:59
【问题描述】:
我有一个基于index.php 页面的单页面应用程序,我在其中启动会话并显示第一个内容。然后我根据点击的链接在不同的 div 中加载 Ajax 内容。
如果我想访问已加载页面中的$_SESSION 数组(例如,显示用户名),我还需要将session_start 放入通过Ajax 加载的页面中。
以这种方式一切正常,但是当我看到日志时,我看到每次通过 Ajax 加载其中一个页面时 php 都会抛出一个错误,说
“会话已经开始。忽略 session_start()”。
所以:一方面我需要放置 session_start 来访问会话数组,但另一方面 session_start 命令被忽略。
来自 index.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 将不可用
我该如何解决这种情况?我可以在不启动会话的情况下从加载的页面访问会话数组吗?
【问题讨论】:
-
尝试从 ajax 中删除它,因为它是您运行它的脚本的一部分。
-
@Fred-ii- 那么我将不再加载 $_Session 数组
-
嗯...,奇怪。你能分享你的代码吗?看不出那会怎么破。您在同一个文件中的任何地方都没有 2 个
session_start();,对吗?或者别的什么叫它两次?就像一个包含/要求等。某处的功能。 -
@Fred-ii- 不肯定!将添加一些示例代码
-
session_handler.inc.php和/或global_functions.php是否包含session_start();或任何其他文件调用它两次? @LelioFaieta 也检查你的控制台。