Предупреждение: session_start (): Не удается отправить cookie сеанса - уже отправленные заголовки (вывод запущен в [duplicate]

21

Следующее предупреждение появляется в странице входа : Работает в локальном хосте, но не на удаленном хосте

Предупреждение: session_start () [function.session-start]: не удается отправить cookie сеанса - уже отправленные заголовки (вывод запущен в строке 8)

Предупреждение: session_start () [function.session-start]: не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в строке 8)

index.php

<?php
session_start();
if(isset($_SESSION['usr']) && isset($_SESSION['pswd'])){
header('Location: content.php');}
?>
<body>
<center>
<form method='post' action='login.php'>
<!– in this example I link it with login.php to check the password & username–>
<table>
<tr><td>Username:</td><td><input type='text' name='usr'></td></tr>
<tr><td>Password:</td><td><input type='password' name='pswd'></td>
</tr>
<tr><td><input type='submit' name='login' value='Login'></td>
<td><input type='reset' name='reset' value='Reset'></td></tr>
</table>
</form>
</center>
</body>  

content.php

<body>
<a href="resumedownload.php">Click here to Download to Resume</a>
<?php
session_start();
if(!isset($_SESSION["usr"]) || !isset($_SESSION["pswd"])){
 header('Location: index.php');}
include 'logoff.php';
?>
</body>

login.php

<body>
<?php
session_start();
if($_REQUEST['usr']=='suman.trytek' && $_REQUEST['pswd']=='solutions'){
$_SESSION['usr'] = 'suman.trytek';
$_SESSION['pswd'] = 'solutions';
header('Location: content.php');
}
else{
header('Location: index.php');
}
?>
</body>
    
задан Geetha 03.02.2014 в 08:20
источник
  • Найти ответ здесь: stackoverflow.com/questions/8028957/... –  Mario Radomanana 03.02.2014 в 08:22
  • из-за отправки нескольких заголовков, так что вы можете использовать их сверху после <? php ob_start (); –  Vikas Gautam 03.02.2014 в 08:25
  • В моем случае мне пришлось установить кодировку файла без спецификации. –  Wessam El Mahdy 06.05.2016 в 07:55

3 ответа

45

Всегда перемещайте session_start(); в начало страницы.

<?php
@ob_start();
session_start();
?>
    
ответ дан Krish R 03.02.2014 в 08:23
  • поблагодарить u @Krish R за его работу –  Geetha 03.02.2014 в 10:28
  • Спасибо @krish R, спас мою кожу! : D –  Nicholas Mordecai 05.12.2014 в 18:05
  • Убедитесь, что вы не сохраняете спецификацию (также называемую подписями Unicode). Я пробовал все, и проблема была проблемой. Это обычное явление, если вы используете файлы UTF-8. –  JohnH 19.12.2016 в 19:42
5
  1. session_start () должен быть в верхней части вашего источника, без html или другого вывода для использования!
  2. вы можете отправлять session_start () только один раз
  3. таким образом if(session_status()!=PHP_SESSION_ACTIVE) session_start()
ответ дан Frank 03.02.2014 в 09:00
  • stackoverflow.com/questions/6249707/... –  mvladk 21.05.2015 в 13:29
2

Вы не можете session_start (); когда ваш буфер уже частично отправлен.

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

ответ дан Spoutnik16 03.02.2014 в 08:32