我目前正在开发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 的情况下保存,因为它将被视为内容并触发客户端的输出(并在输出的开头放置一个奇怪的字符)。