这可能看起来像标准问题,但事实并非如此。 我收到了这个错误:
session_start()[function.session-start]:无法发送会话缓存限制器
....这就是我无法理解的,因为session_start()
是文件中写的第一件事(<?php
除外)。
这是代码:
<?php
session_start();
include "config.php";
$escapedName = mysql_real_escape_string($_GET['email']);
$escapedPW = mysql_real_escape_string($_GET['password']);
$query ="SELECT salt FROM users WHERE email='".$escapedName."'";
$result = mysql_query($query, $link) or die ("SQL dotaz sa nepodaril");
$num = mysql_num_rows($result);
while ($row=mysql_fetch_array($result)){
$salt = $row["salt"];
}
$saltedPW = $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
//echo $hashedPW."<br>";
$query ="SELECT ESN_WINGS_ID as id FROM users WHERE email='".$escapedName."' AND password='".$hashedPW."'";
$result = mysql_query($query, $link) or die ("SQL dotaz sa nepodaril");
$num = mysql_num_rows($result);
if($num == 0)
echo "Invalid e-mail or password";
while ($row=mysql_fetch_array($result)){
$_SESSION["id"] = $row["id"];
echo $SESSION["id"]."NOT WORKING!";
//echo $row["id"];
}
?>
感谢您的回复。
答案 0 :(得分:0)
“这可能看起来像标准问题,但它不是”。
大多数时候,当人们这么说时,他们只是说这是一个标准问题,因为他们无法从阅读别人的解决方案到“标准”问题找到问题。 (我去过那里)
你必须先调用session_start()
。就这么简单。虽然PHP错误和警告有时会产生误导,但没有指出确切的问题(只是下一个受问题影响的事情)等等,它通常很合乎逻辑,而且重要的是,“意味着说的是什么!”
如果它告诉您已发送的标头,则已发送标头。空格或回程车(虽然这通常不足以引起问题),一些文字等等。
我尝试复制/粘贴您的代码,并使用session_start()
的顶部部分,它对我来说很好。所以我想你可能有带BOM的UTF-8(我没有BOM)。
确保<?php
之前或之后没有空格,并且它位于文件的最顶部,并确保session_start()
正好位于<?php
下方确保它们之间没有空格或额外的回程车厢,然后进行测试。
如果仍然失败,请查看http://en.wikipedia.org/wiki/Byte_order_mark。如果您的编辑器设置为使用BOM进行编码,请尝试将其设置为不使用BOM进行编码。
另外,请确保您的编辑器没有空间/选项卡的奇怪设置,它可能会添加不需要的字符而不是标准字符。