jQuery .load 和 PHP 会话启动


jQuery .load and PHP session start

我目前正在开发PHP和jQuery的游戏,在某些时候我需要使用jQuery中的.load()将PHP页面加载到div中。该页面将根据玩家的登录信息、帐户 ID 等加载一些玩家信息,这些信息存储在 $_SESSION["arrayname"] 中的数组中。

它适用于所有站点,除了那些使用 jQuery load() 的网站。在easyphp上,我没有收到任何错误,但是在我的Web主机服务器上,我得到了这个:

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出从 fr/game/map.php:1 开始.php第 6 行的 fr/game/map

这是我的代码:

<?php
 require_once("../../connectionRO.inc.php");
//used to check if we see the array in session, and i dont when i load it with jquery
if(!ISSET($_SESSION["comptejeu"])) 
{
    require_once('../../classInfoCompte.php');
    session_start(); 
    require_once('../../lg.php');
    require_once("./glg.php");
}
$ic = new infoCompte;
    $ic = $_SESSION["comptejeu"];   
?>

我知道在这一点上,很多东西在加载之前已经输出到页面。谁能指出我一种更好的方法来从该数组中检索我需要的信息,以便从我的类中构建我的对象?

谢谢。

由于您收到此错误output started at /fr/game/map.php:1(注意:第 1 行),我将在 /fr/game/map.php 的开头<?php标签之前将钱放在您拥有空格或 BOM 上。

确保开头<是文件中的第一个字符。如果文件是 UTF-8,请确保它是不带 BOM 的 UTF-8,或将其转换为 ASCII。

错:

<?php>

右:

<?php

要么你的PHP文件中有一些空格,classInfoCompute中有一些空格.php要么有一个函数/方法调用在这个或classInfoCompute文件中触发输出。 会话依赖于 Cookie,而 Cookie 依赖于 HTTP 标头。 输出内容后,标头已发送,您无法发送新标头。

Stack Overflow 上有很多问题和答案涵盖了这个问题,但它归结为要么将问题扫到地毯下(使用输出缓冲),要么正确修复它(通过在调用session_start之前找到导致内容输出的原因,并将其删除或移动到脚本的后面, 或session_start移动到脚本的前面)。

如果您的脚本混合了 HTML 和 PHP,请确保session_start出现在 HTML 的第一位之前。 否则,您将不得不四处寻找空白。 如果文件另存为 UTF-8,则文本编辑器可能已将不必要的字节顺序标记 (BOM) 附加到文件的开头。 确保您的文件在没有 BOM 的情况下保存,因为它将被视为内容并触发客户端的输出(并在输出的开头放置一个奇怪的字符)。