繁忙的流量如何导致“会话ID太长或包含非法字符”

时间:2014-10-15 20:26:14

标签: php mysql session cookies error-log

在我关于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");
}

?>

1 个答案:

答案 0 :(得分:0)

如此question

中所述
  

(...)将您链接到生成的会话ID的cookie   客户端。如果该cookie更改为无效格式(某人是   试图利用某些东西)PHP会注意到它。