2013-06-16 2 views
1

Хорошо, что я делаю, у меня есть текстовое поле и кнопка отправки, которая отправляется на текущую страницу. Пользователь может указать свое имя в нем. Создает файл cookie, и этот файл cookie будет отображать свое имя на странице после нажатия кнопки submit.Как сохранить имя в файле cookie и повторить его?

Но я не могу сделать это в одном обновлении страницы.

Вот то, что я до сих пор:

<?php 
error_reporting(E_ALL^E_NOTICE); 
?> 

<form action="#" method="post"> 
Name: <input type="text" name="fname"> 
<input type="submit"> 
</form> 

<?php 
$post = $_POST["fname"]; 

$expire=time()+60*60*24*30; 
setcookie("user", $post, $expire); 

echo $_COOKIE["user"]; 
?> 

Спасибо!

+0

вы можете разместить все сотрудничества de вместо этого вы используете? – Perry

+0

Обновлен со всем кодом. –

ответ

2

После того, как печенье было установлено, что они могут быть доступны на следующая загрузка страницы с $_COOKIE или $HTTP_COOKIE_VARS массива:

<?php 
    if (isset($_POST['fname'])) { 
     $post = $_POST["fname"]; 

     $expire=time()+60*60*24*30; 
     setcookie("user", $post, $expire); 
     header("Location: index.php"); //notice the redirect? 
    } 
?> 

<form action="" method="post"> 
    Name: <input type="text" name="fname"> 
    <input type="submit"> 
</form> 

<?php if (isset($_COOKIE['user'])) { 
    echo $_COOKIE["user"]; 
    } 
?> 
+1

Не используйте '$ HTTP_COOKIE_VARS', потому что это устарело. В вашем примере вы используете '$ _COOKIE' wat правильно. – Perry

+0

@Perry Спасибо за эту информацию. –

+0

Спасибо, это был тот, который работал лучше всего. –

1

печенье должно быть установлено перед выводом любого содержания (HTML)

<?php 
error_reporting(E_ALL^E_NOTICE); 

if(isset($_POST['fname'){ 
    $post = $_POST["fname"]; 

    $expire=time()+60*60*24*30; 
    setcookie("user", $post, $expire); 

    echo $_COOKIE["user"]; 
} 
?> 
<form action="#" method="post"> 
Name: <input type="text" name="fname"> 
<input type="submit"> 
</form> 
+0

Как этот ответ принят? Вы не можете устанавливать файлы cookie и ECHO без обновления страницы. –

1

Попробуйте этот код я также добавить некоторые проверки:

<?php 
error_reporting(E_ALL^E_NOTICE); 

if ($_SERVER['REQUEST_METHOD'] === 'post' && isset($_POST['fname']) && !empty($_POST['fname'])) { 
$post = $_POST["fname"]; 

$expire=time()+60*60*24*30; 
setcookie("user", $post, $expire); 
} 
?> 

<form action="#" method="post"> 
Name: <input type="text" name="fname"> 
<input type="submit"> 
</form> 

<?php if (isset($_COOKIE['user'])) { 
echo $_COOKIE["user"]; 
} else { 
echo 'There is no firstname.'; 
} 
?> 
Смежные вопросы