2012-05-19 7 views
0

Не могли бы вы помочь? На моем веб-сайте не установлен следующий простой файл cookie. Хотя некоторые другие сценарии входа, но этот не работает. БлагодаряCookie не установлен

test.php

... 

<form action="test2.php" method="post"> 
     Email: <br /> 
     <input type="email" name="email" value=""/> <br /> 
     <input type="submit" name="submit" value="Next"/> 
</form> 

... 

test2.php

<?php ob_start(); ?> 

<?php 
// call the header of the page 
require('header.html'); 

// connect to database 
require "connect.php"; 
?> 

<?php 
    $email = $_POST['email']; 

    // set cookie 
    $one_hour = time() + 3600; 
    $set = setcookie(user_email, $email, $one_hour); 

    if($set == TRUE) { 
     print '<p> Cookie set</p>'; 
    } else { 
     print '<p> Cookie not set</p>'; 
    } 

// call footer of the page 
require('footer.html'); 
?> 

<?php ob_flush(); ?> 

После выполнения вышеуказанных сценариев, я получаю эту ошибку:

Предупреждение: Не удается изменить информацию в заголовке - заголовки уже отправлено (вывод запущен в /websites/public_html/test2.php:1) в /websites/public_html/test2.php в строке 16

Cookie не установлен

  • PS: Строка 16 на моем скрипте "$ комплект = SetCookie (email_noaccount, $ электронная почта, $ час);"
+0

Вы должны отделить PHP код тега? Новая строка на стороне тега означает «echo», 'before' setcookie', которые делают ошибку –

+1

возможным дубликатом [Заголовки уже отправлены PHP] (http://stackoverflow.com/questions/8028957/headers-already-sent -by-php) – mario

+0

Как сказано в предупреждении, ваша проблема находится в строке 1, а не в строке 16. – mario

ответ

2

просто изменить выше код в следующим образом и попробовать, положить ob_start() после того, как требуется()

<?php 
require "connect.php"; 
require('header.html'); 
?> 
<?php ob_start(); ?> 
+0

Нет разницы. :( –

+0

отредактировал ответ, попробуйте – mack

0

Вы посылаете содержимое в буфер вывода, прежде чем необходимо:

<?php ob_start(); ?> 
    <--- right here 
<?php 
// call the header of the page 
require('header.html'); 

// connect to database 
require "connect.php"; 
?> 
    <--- and right here 
<?php 
    $email = $_POST['email']; 

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

В идеале вы не хотите смешивать два. Обработка на стороне сервера должна произойти до того, как будет создан выход, тогда выход будет построен с использованием результатов обработки и отправлен клиенту.

+0

По-прежнему, та же ошибка :( –

Смежные вопросы