不写会话ID。文件中没有空格

时间:2013-10-23 10:22:56

标签: php session-variables session-cookies session-state sessionid

我遇到了没有编写会话ID的问题。很抱歉,如果这个问题持续了一段时间,但我已经做了很多测试来排除某些事情,所以认为提供我拥有的所有数据是有用的。

对于每项测试,我在Chrome中打开一个新的隐身窗口,以确保在开始新测试之前清除Cookie /会话。

另外,请注意,我正在处理的网站在两个不同的文件夹中有两种不同的语言。英语和希伯来语。

一切都在网站的英文版中正常工作,但在希伯来文中却没有。一些'include'文件位于一个名为/ php /的单独文件夹中,包含在希伯来语和英语一侧。

不确定是否相关,但.htaccess文件包含英语和希伯来语方面的重定向,如下所示:

RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteRule ^categories/(.+) /HE/categories.php?pg=$1&type=$2 [L]

在php页面本身(例如,categories.php)上,代码开始:

<?php include_once('header.php');

在header.php中,我有:

<?
require_once '../php/config.php';
require_once 'functions.php';

在config.php中,在希伯来语和英语双方使用,我有:

<?php
session_start();
echo "--".session_id();

在所有情况下,

当我转到页面时:

http://www.goo.com/HE/categories/foo

每次刷新时,都会回显session_id()

的新值

在错误日志中,我得到了:

[23-Oct-2013 04:12:41] PHP Warning:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home/foo/public_html/HE/header.php:1) in /home/foo/public_html/php/config.php on line 2
[23-Oct-2013 04:12:41] PHP Warning:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/foo/public_html/HE/header.php:1) in /home/foo/public_html/php/config.php on line 2

现在,我想再次强调一点,我没有注意到的空白区域,并且相当于英语方面没有问题。

我创建了一个名为testsess.php的文件,其中包含:

<?php
session_start();
echo "--".session_id();

并将其放在HE文件夹中,这样可以正常运行而不会出现错误

我确信这是非常简单的事情,但是几个小时和几个小时都在尝试不同的事情而且完全被难倒了。

2 个答案:

答案 0 :(得分:2)

如果你的文件是UTF-8,那就谢谢。 一些文本编辑器在开始UTF-8文件时添加了一些代码。 检查您包含的文件是否有任何额外字符。

答案 1 :(得分:1)

您可以参考此SO Question

这可能是UTF-8 BOM(字节顺序标记)问题。如果可以访问Windows环境,则可以使用Notepad ++删除BOM:

  1. 在记事本++中打开文件
  2. 编码菜单中选择“在没有BOM的UTF-8中编码
  3. 然后保存