|
|
|
|
|
для: cheops
(26.04.2011 в 10:19)
| | Спасибо большое. Код заработал. | |
|
|
|
|
|
|
|
для: Денис Аверин
(26.04.2011 в 10:13)
| | Нет, здесь проблема именно в логики подстановки значений. Возьмите вот эти строки
<?php
...
$_COOKIE['user'] = $_POST['name'];
$_POST['comment'] = "Текст комментария";;
...
?>
| и оберните их проверкой
<?php
...
if(!empty($_POST))
{
$_COOKIE['user'] = $_POST['name'];
}
else
{
$_POST['comment'] = "Текст комментария";
}
...
?>
| А лучше вообще не использовать $_COOKIE['user'] в качестве промежуточного значения. Т.е. поступить как то так
<?php
session_start();
if(empty($_POST))
{
$_POST['name'] = $_COOKIE['user'];
$_POST['comment'] = "Текст комментария";
}
else
{
setcookie('user', $_POST['name'], mktime(0,0,0,1,25,2015));
}
?>
<form name="comm" action="main.php" method="POST">
<table>
<tr><td>Имя:</td><td><input type="text" name="name" value="<?php echo $_POST['user']; ?>" size="35" maxlength="30"></td></tr>
<tr><td>Комментарий:</td><td><textarea name="comment" cols="56" rows="15" wrap="virtual"><?php echo $_POST['comment']; ?></textarea></td></tr>
<tr><td> </td><td><input type="submit" value="Сохранить комент"></td></tr>
</table>
</form>
<a href="second.php">Перейти к странице second.php</a>
|
PS Кстати, перед выводом значений вроде $_POST['user'] в окно браузера их лучше всегда обрабатывать при помощи функции htmlspecialchars().
[поправлено модератором: новая ветка про обработку данных до и после помещения в базу данных выделена в новую тему] | |
|
|
|
|
|
|
|
для: cheops
(26.04.2011 в 10:03)
| | Убрал строку $_COOKIE['user'] = $_POST['name']. Теперь значение выводится только на другой странице. при этом значение также теряется, если несколько раз переходишь по страницам.
А может быть так, что проблема кроется в php.ini? Я там ничего не изменял, кроме уровня обработки ошибок. | |
|
|
|
|
|
|
|
для: Денис Аверин
(26.04.2011 в 09:42)
| | Этого будет достаточно
<?php
//session_start(); для куки необязательна
if (!isset($_POST['name'])) $_POST['name'] = '';
setcookie('user', $_POST['name'], mktime(0,0,0,1,25,2015));
//$_COOKIE['user'] = $_POST['name']; В куки данные вроде таким способом не заносятся
$_POST['comment'] = "Текст комментария";;
?> | |
|
|
|
|
|
|
|
для: Денис Аверин
(26.04.2011 в 09:42)
| | >$_COOKIE['user'] = $_POST['name'];
Помоему вы просто затираете значение вот этой строкой, т.е. значение в cookie есть, но когда вы обращаетесь к странице в первый раз в $_POST['name'] пустая строка, которую вы присваиваете $_COOKIE['user'], поэтому все последующие обращения к $_COOKIE['user'] также дают пустую строку. | |
|
|
|
|
|
|
| Написал небольшой код, который должен запоминать имя пользоватеся в cookie. Проблема заключается в том, при повторном возвращении на страницу теряются значения из cookie.
Вот код двух файлов:
Файл main.php.
<?php
session_start();
if (!isset($_POST['name'])) $_POST['name'] = '';
setcookie('user', $_POST['name'], mktime(0,0,0,1,25,2015));
$_COOKIE['user'] = $_POST['name'];
$_POST['comment'] = "Текст комментария";;
?>
<form name="comm" action="main.php" method="POST">
<table>
<tr><td>Имя:</td><td><input type="text" name="name" value="<?php echo $_COOKIE['user']; ?>" size="35" maxlength="30"></td></tr>
<tr><td>Комментарий:</td><td><textarea name="comment" cols="56" rows="15" wrap="virtual"><?php echo $_POST['comment']; ?></textarea></td></tr>
<tr><td> </td><td><input type="submit" value="Сохранить комент"></td></tr>
</table>
</form>
<a href="second.php">Перейти к странице second.php</a>
|
Файл second.php:
<?php
session_start();
if (!isset($_POST['name'])) $_POST['name'] = '';
if (!isset($_COOKIE['user'])) $_COOKIE['user'] = '';
echo 'cookie '.$_COOKIE['user'].'<br>';
echo 'formname '.$_POST['name'].'<br>';
?>
<a href="main.php">Назад</a>
|
Не могу понять в чем проблема. Кука устанавливается и даже выводится на странице second.php, но при возвращении на страницу с формой - значение теряется. | |
|
|
|
|