为什么我使用相同的代码得到会话错误?

时间:2014-10-03 21:41:43

标签: php html

我的网站上有3种表格,所有表格都有效,直到有一天。我不知道发生了什么,但我得到会话错误;我的意思是,每当我有一个包含会话标记的PHP脚本时,我就会收到错误,例如,这是我在<html>标记上的开始:

<?php

// Make the page validate
ini_set('session.use_trans_sid', '0');

// Create a random string, leaving out 'o' to avoid confusion with '0'
$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4));

// Concatenate the random string onto the random numbers
// The font 'Anorexia' doesn't have a character for '8', so the numbers will only go up to 7
// '0' is left out to avoid confusion with 'O'
$str = rand(1, 7) . rand(1, 7) . $char;

// Begin the session
session_start();

// Set the session contents
$_SESSION['captcha_id'] = $str;

?>

当我在我的网站上测试时,我得到:

  

警告:session_start():无法发送会话缓存限制器 - 已在/home4/domain/public_html/adres/contact.php中发送的标头(输出从/home4/domain/public_html/adres/contact.php:2开始)第16行

究竟是session_start()所在的部分?之前的代码结构相同 - 发生了什么?

2 个答案:

答案 0 :(得分:2)

在打开<?php代码之前检查您是否有空格或换行符。

答案 1 :(得分:1)

标头已经发送“表示您的PHP脚本已经发送了HTTP标头,因此它现在无法对它们进行修改。

在调用session_start之前,请检查您是否发送了任何内容。更好的是,只需将session_start作为你在PHP文件中做的第一件事(所以把它放在绝对的开头,在所有HTML等之前)。