【问题标题】:jQuery .load and PHP session startjQuery .load 和 PHP 会话开始
【发布时间】:2012-04-07 16:30:58
【问题描述】:

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

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

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

这是我的代码:

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

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

谢谢。

【问题讨论】:

标签: php jquery session load


【解决方案1】:

由于您收到此错误为output started at /fr/game/map.php:1(注意:第 1 行)我会在/fr/game/map.php 中打开&lt;?php 标记之前为您提供空格或BOM。

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

错误:

对:

<?php

【讨论】:

  • 简单而天才,没有注意到,因为它之前给了我第 6 行,而不是我发布的第 1 行。非常感谢您的发现,我检查编辑器是否设置为 utf8 bom 或 utf w/o bom,bom 的事情总是很麻烦。 ^^
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2023-03-25
    • 2011-08-03
    • 2019-09-16
    • 2014-02-13
    相关资源
    最近更新 更多