session_start()无法正常工作并发出警告,尽管它位于页面顶部

时间:2015-06-04 07:53:05

标签: php session

此代码在Xampp中正常运行但在我将其上传到服务器后无法正常工作

<?php 
ob_start();
session_start();
if(session_status()!=PHP_SESSION_ACTIVE) { session_start();}
if(!isset($_SESSION['username']) || !isset($_SESSION['password']))
{
    header('location:login.php');
}
$connection=mysqli_query('localhost','username','password','dbname')
?>
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

页面已经加载正常,但它在页面顶部给出了错误,因为它是一个管理页面,除非设置了会话,否则它不能打开。这是我现在收到的警告。

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home3/index.php:1) in /home3/index.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home3/index.php:1) in /home3/index.php on line 7

3 个答案:

答案 0 :(得分:2)

使用以下代码,确保在<?php标记开始之前代码中没有剩余空格。

<?php  session_start();
ob_start();

请注意,会话只能在页面输出开始之前启动,并且相同的规则适用于php中的标题函数。

答案 1 :(得分:2)

session_start()应位于页面顶部

答案 2 :(得分:1)

首先,<?php之前和?>标记之后不应该有空格。

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

<?php 
 session_start();
 ob_start();

 if(session_status()!=PHP_SESSION_ACTIVE) { session_start();}

 if(!isset($_SESSION['username']) || !isset($_SESSION['password']))
 {
  header('location:login.php');
 }

 $connection=mysqli_query('localhost','username','password','dbname')
?>