【问题标题】:PHP Warning: session_start(): Cannot send session cache limiter - headers already sentwhile the session_start is added at top [duplicate]PHP警告:session_start():无法发送会话缓存限制器-当将session_start添加到顶部时已发送标头[重复]
【发布时间】:2020-02-24 18:26:13
【问题描述】:

我正在使用 PHP 进行开发。但在登录时,我收到错误,因为 PHP 警告:session_start(): 无法发送会话缓存限制器 - 标头已发送

这是我的会话文件并添加到页面顶部。

我的代码 - 连接配置.php

<?php
session_start();
//ob_start();
//error_reporting(1);
$server ='localhost';          
$user ='**********';          
$password ='*********';              
$database = '**********';

define ('DB_HOST', $server);
define ('DB_USER', $user);
define ('DB_PASSWORD', $password);
define ('DB_NAME', $database);

function get_connection()
{ 
    $connection=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
    // Check connection
    if (mysqli_connect_errno())
    {
        echo 'Failed to connect to MySQL: ' . mysqli_connect_error();
    }else
    {
        return $connection; 
    }
}
?>

在mysql_function.php中

<?php
require_once("connectin_config.php");

在function.php中

<?php
require('mysql_functions.php');

在 index.php 中

<?php
include('function/function.php');

登录.php

<?php
include('function/function.php');
$mess='';

if(isset($_POST['submit'])){

record_set('get_data','SELECT * FROM `admin` WHERE  `email`="'.$_POST['email'].'" and password="'.md5($_POST['password']).'"' );
    if($totalRows_get_data){
    $row_get_data= mysqli_fetch_assoc($get_data);
        $mess='login Successfully'; 
        $_SESSION['admin_id']=$row_get_data['id'];
        $_SESSION['admin_phone']=$row_get_data['phone'];
        $_SESSION['admin_fname']=$row_get_data['fname'];
        $_SESSION['admin_lname']=$row_get_data['lname'];
        $_SESSION['user_type']=$row_get_data['user_type'];
        $_SESSION['admin_image']=$row_get_data['image'];
        $_SESSION['admin_cdate']=$row_get_data['cdate'];
        reDirect('index.php'); 
    }else{



        $mess='Username or Password Invalid';
    }

}
?>

【问题讨论】:

标签: php session session-cookies


【解决方案1】:

我不能评论把你所有的 php 代码放在 &lt;!DOCTYPE html&gt; 之前或正文标签中!

确保&lt;? php tags 之间没有空格。包含文件的位置。

开启错误报告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

如果您在 localhost 上使用 wampserver,请检查 C:\wamp\logs\php_error.txt 中的 error_log 文件。

尝试测试isset($_SESSION) 如果它已经存在则不要使用session_start();

看起来你正在通过另一个文件开始第二个会话尝试像这样:

if(!isset($_SESSION)){ 
   session_start(); 
}

使用session_start() 先于其他任何东西。

【讨论】:

  • 尝试了您的解决方案。在页面加载时,第一行是 - 警告:session_start():无法发送会话缓存限制器 - 标头已发送(输出开始于 /home/project/public_html/admin/login.php:1)
  • @EhaneKalvein 请向我们展示完整的 login.php
  • login.php 对我来说看起来不错,而不是使用 md5 哈希,您应该使用 php 默认哈希类型,您可以添加 function.php 好吗?谢谢
  • 我的问题已解决 @Zelay 感谢您的帮助
猜你喜欢
  • 2014-06-04
  • 2018-01-29
  • 2016-05-28
  • 2013-09-11
  • 2020-07-02
  • 2016-12-14
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多