2013-08-31 68 views
0

我试图处理无效的会话ID,但是PHP一直送我这个错误:处理无效的会话ID

<b>Warning</b>: 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 <b>/home3/mn0198/razorphyn/products/support/index.php</b> on line <b>21</b><br /> 

这是我的代码:

ob_start(); 
ini_set('session.auto_start', '0'); 
ini_set('session.save_path', 'php/config/session'); 
ini_set('session.hash_function', 'sha512'); 
ini_set('session.gc_maxlifetime', '1800'); 
ini_set('session.entropy_file', '/dev/urandom'); 
ini_set('session.entropy_length', '512'); 
ini_set('session.gc_probability', '20'); 
ini_set('session.gc_divisor', '100'); 
ini_set('session.cookie_httponly', '1'); 
ini_set('session.use_only_cookies', '1'); 
ini_set('session.use_trans_sid', '0'); 
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { 
    ini_set('session.cookie_secure', '1'); 
} 
if(isset($_COOKIE['RazorphynSupport']) && !empty($_COOKIE['RazorphynSupport']) && !preg_match('/^[a-z0-9]{26,40}$/',$_COOKIE['RazorphynSupport'])){ 
    setcookie('RazorphynSupport','',time()-3600); 
} 
session_name("RazorphynSupport"); 
session_start(); 
ob_end_flush(); 

有什么不对?

+0

是有你在运行时设置,而不是设置的所有这些会话设置的原因他们在你的php.ini? –

+0

@PatrickEvans因为它应该分发给任何需要它的人,我不知道用户的能力 – Razorphyn

回答

1

变化

setcookie('RazorphynSupport','',time()-3600); 

unset($_COOKIE['RazorphynSupport']); 

这样PHP是强制生成一个新的ID