在我位于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/

10-11 21:50