在我位于HostGator上的共享主机上的网站上,几天前,我开始在流量繁忙的时候收到错误500(那天249次访问,148,429次点击,141,829页,723.01 MB带宽-许多人在访问MySQL查询。)托管,HostGator一次仅允许25个正在运行的进程。一旦流量减少,错误就消失了。
但是,当我访问那个时间和日期的错误日志时,这是我发现写过很多遍的内容:
[12-Oct-2014 16:37:16] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] 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/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] 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/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/q0.php on line 2
[12-Oct-2014 16:37:16] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/amalthea/public_html/tkq/q0.php:2) in /home/amalthea/public_html/tkq/user.cookies.php on line 5
我不明白的是,“会话ID太长或包含非法字符”错误是由繁忙的流量引起的吗?会话ID字符与繁忙的流量有什么关系?
目前,该网站运行正常。我也访问了this Question on Stackoverflow,但是它没有解释错误,只是提供了一种解决方法。请解释为什么只有在交通繁忙时才出现此错误。我想确保我的代码正确。
以下是我所有PHP页面在网站上的启动方式:
<?php
session_start();
require_once("user.cookies.php");
$username = $_SESSION["SESS_USERNAME"];
$id= $_SESSION["SESS_USERID"];
这是user.cookies.php
<?php
//redirect function
function returnheader($location){
$returnheader = header("location: $location");
return $returnheader;
}
if(!strlen($_SESSION["SESS_USERNAME"]) ){
//redirect
returnheader("login.php");
}
?>
最佳答案
如本question所述
(...)将您链接到生成的会话ID的Cookie是
客户端。如果该Cookie更改为无效格式(有人
尝试利用某些东西)PHP会注意到这一点。
关于php - 交通繁忙如何导致“ session ID太长或包含非法字符”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26391479/