Наличие проблемы с сессией PHP - PullRequest
0 голосов
/ 11 октября 2011

Получение следующих предупреждающих сообщений при загрузке страницы.Я не понимаю, что это такое?

Предупреждение: session_start () [function.session-start]: невозможно отправить ограничитель кэша сеанса - заголовки уже отправлены (вывод начался с / home / heimann / public_html / admin /login.php: 9) в /home/heimann/public_html/admin/login.php в строке 47

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с / home / heimann / public_html /admin / login.php: 9) в /home/heimann/public_html/admin/login.php в строке 52

код php

//line 9 <?php 

$admin = 'http://'. $_SERVER['HTTP_HOST'] . '/admin/';

$db = new MySQLi('localhost', 'heimann_admin', '0579ural', 'heimann_content') or die($db->error);

$db->set_charset('utf8');

$username=$db->escape_string($_POST['username']);

$password=$db->escape_string($_POST['password']);

$submit=$db->escape_string($_POST['submit']);



if($username && $password && $submit=='Giriş'){

    $result=$db->query("SELECT id, username, password FROM users WHERE username='$username' AND password='$password'");

    $count=$result->num_rows;

    if($count>0)

    {

        while($row=$result->fetch_object()){

        $dbusername=$row->username;

        $dbpassword=$row->password;

        $dbuserid=$row->id;

        }

        if($username==$dbusername && $password==$dbpassword){

        //line 47 session_start();

        $_SESSION['username']=$dbusername;
        $_SESSION['userid']=$dbuserid;

        //line 52 header('location:'.$admin);

        }

        else message("Şifrə səhvdir");

    }
    else {message("Bazada belə login və şifrə kombinasiyası yoxdur");}

}

else {message("Giriş parametrlərindən biri daxil edilməyib");}
?>


<? 
function message($text){
    global $admin;
    echo '<div class="message">'.$text. '</br><a href="'.$admin.'">Geri</a></div>';
}

?>

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Чтобы избежать кэширования на клиенте , функция session_start отправляет некоторые заголовки HTTP клиенту.Однако в любом HTTP-ответе заголовки располагаются перед содержимым.Ваш скрипт уже отправил некоторый контент, когда вы вызываете session_start (), поэтому он больше не может отправлять заголовки.

Вы можете вызывать session_start () ранее в вашем файле, чтобы он отправлял заголовки перед любым контентом,или вы можете использовать буферизацию вывода , чтобы сохранить содержимое в буфере.

1 голос
/ 11 октября 2011

у вас есть вывод до session_start, это запрещено. Если вы не можете изменить вывод перед session_start, вы можете использовать ob_start(); и ob_flush(); для кэширования вывода.

0 голосов
/ 11 октября 2011

Если вы уже что-то выводили до запуска вашего PHP-кода, что, вероятно, и является причиной проблемы, у PHP возникают проблемы с некоторыми функциями, вызываемыми после того, как вывод уже запущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...