编辑4:为什么此问题与链接问题不重复
虽然基本问题与链接问题相同,但我没有收到错误消息 Headers not send ,所以我读到的答案对我没用此时。因此,这个问题虽然可能过长,但也有其自身的优点。
原帖
很抱歉打扰你,但经过两天的研究,我崩溃了。我会尝试提供最多的信息。
我在做什么:
我目前正在编写一个登录系统,只是为了好玩。注册,将数据输入数据库,登录工作完全正常。我主持1and1,我的数据库也在那里。
现在继续,我想从会议开始。最初,一切似乎都很简单。
session_start();
//returns true when put into an if()
$_SESSION['id'] = //user ID read from databse
echo $_SESSION['id']; //prints out the ID just fine.
当我转到另一页时,我立即调用session_start();再次。 事实上,我的所有页面都以
开头include 'functions.php';
$con = startup();
//statup(); is in functions.php, connects to a databse,
//calls session_start(); succesfully, then returns the connection.
问题不应该在函数中,因为它工作正常,我也尝试连接/会话启动事件在每个文件中,而不是共享函数 - 没有改变任何东西。
但是没有一个会话变量保留值。
可能出现的问题
不发送Cookie
的javascript:警报(document.cookie中);在Firefox中给我
__ QCA = P0-1714752251-1385128732260
Chrome告诉我没有收到任何Cookie,也没有阻止。
鉴于许多人在调用session_start()时遇到无法发送cookie的问题;因为之前发过过cookies,我认为我不需要在我的代码中调用任何关于发送cookie的内容。
我不知道该怎么做。
我的主持人不允许会话
是我的另一个想法。但是,我可以看到我的php_info();它告诉我:
会话设置
启用会话支持
session.cache_expire 180
session.cookie_domain没有值
session.cookie_httponly Off
session.cookie_lifetime 0
session.cookie_path /
session.use_cookies On
session.use_only_cookies On
session.use_trans_sid 0
这些只是与我有点相关的界限。
所以,我从中读到的是会话应该可以正常工作,包括cookie和东西。但我也不太了解这个级别。
所以,那就是我被困住的地方。我的代码的所有组件都运行正常,我非常确定语法是正确的,据我所知,服务器支持会话。
哦,我也尝试将会话路径从/ tmp更改为我的网站空间上的目录 - 它似乎没有做任何事情,没有数据存储在服务器的“部分”上。
修改
使用有关error_reporting(E_ALL)的新信息;我现在收到了一般错误消息
警告:session_start():无法发送会话cookie - 已在/ homepages / 23 / d315777983 / htdocs / mtm中发送的报头(输出从/homepages/23/d315777983/htdocs/mtm/index.php:14开始)第9行的/functions.php
警告:session_start():无法发送会话缓存限制器 - 已在/ homepages / 23 / d315777983 / htdocs / mtm中发送的报头(输出从/homepages/23/d315777983/htdocs/mtm/index.php:14开始)第9行的/functions.php
我想我现在可以开始使用较旧的建议解决方案了。
编辑2:
根据建议,我添加了print_r($ _ SESSION);在包括之后。
它只打印“Array()”(不带引号)
我还将session_start移回到每个单独的文件中,名为BEFORE functions.php。
它说饼干是在第14行发送的 - 在我的代码中只是
<?php
编辑3: 那是浪费时间。删除了functions.php末尾的空格,名为startup();在任何html输出之前,现在它完美地工作。
答案 0 :(得分:2)
我有类似的问题,我解决了它在源代码中删除空格。
具体而言,当答案过早地发送给客户端时会发生错误。如果在<?php ?>
- 标记之外有空格,则可能会发生这种情况。防止这种错误的一种方法是在文档末尾没有?>
。
答案 1 :(得分:1)
当您在下面的行之后转到下一页时,尝试打印所有会话,看看是否得到它。
include 'functions.php';
print_r($_SESSION);
一种可能性我发现在调用
之前可能已在function.php
中发送了一些标头
session_start();
答案 2 :(得分:0)
好吧,即使在解决方案后很长一段时间,发现另一个,我在清理浏览器数据后遇到$ _SESSION问题,我的连接脚本没有收到数据,所以我确实创建了另一个接收数据的脚本通过$ _REQUEST然后将这些数据转换为新的会话。希望能帮助任何人。