1

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

它在所有网站上都能完美运行,除了那些使用 jQuery load() 的网站。在easyphp上,我没有收到任何错误,但在我的网络主机服务器上,我得到了这个:

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

这是我的代码:

<?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"];   
?>

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

谢谢你。

4

2 回答 2

1

由于您收到此错误output started at /fr/game/map.php:1(注意:第1行),因此我会<?php/fr/game/map.php.

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

错误的:

<?php

对:

<?php
于 2012-04-07T16:36:07.573 回答
0

您的 PHP 文件中有一些空白,classInfoCompute.php 中有一些空白,或者有一个函数/方法调用触发了此文件或 classInfoCompute 文件中的输出。会话依赖于 cookie,而 cookie 依赖于 HTTP 标头。输出内容后,标头已发送,您无法发送新标头。

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

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

于 2012-04-07T16:38:35.617 回答