|
|
|
| имеется такой скрипт файла test.php:
<?
if(isset($_GET['do'])) $do = $_GET['do']; else $do = '';
if(isset($_GET['text'])) $text = $_GET['text']; else $text = '';
if(isset($_GET['textarea'])) $textarea = $_GET['textarea']; else $textarea = '';
if($do == 'test'){
if(isset($_POST['submit'])){
$text = 'text';
$textarea = 'textarea';
}
$form = <<<HTML
<form name="form" method="post" action="test.php?do=test">
<input type="text" name="text" value="{$text}" /><br />
<textarea name="textarea" style="width:500px; height:200px">{$textarea}</textarea><br />
<input type="submit" name="submit" /><br />
</form>
HTML;
echo $form;
}
echo '<a href="test.php?do=test">link</a>';
?>
|
Когда нажимаю на ссылку, появляется форма, в полях пока ничего нет, затем нажимаю на кнопку, в полях появляется text и textarea, после этого по нажатию F5 (обновление страницы) всё равно появляются text и textarea, как будто я нажимаю кнопку submit. Подскажите как это исправить, чтобы по нажатию F5 происходило обновление test.php?do=test без вывода текста? | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 12:30)
| | value="{$text}" - убрать. value="" | |
|
|
|
|
|
|
|
для: Lors
(05.12.2010 в 12:38)
| | Порой люди такую х..й..ю говорят, что даже слов нет. | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 12:30)
| | Чтобы f5 не работало - надо делать переадресацию. В противном случаи при нажатии f5 браузер действительно снова как бы "нажимает кнопку". | |
|
|
|
|
|
|
|
для: neadekvat
(05.12.2010 в 12:40)
| | neadekvat, а как сделать переадресацию? | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 13:08)
| | Добавить к заголовкам параметр location:
header('location: адрес_страницы');
При этом следует отметить, что сначала отправляются заголовки, а потом тело страницы, следовательно, перед header() не может быть даже пробела или переноса строки (если вылезете headers already sent - значит что-то таки есть) | |
|
|
|
|
|
|
|
для: neadekvat
(05.12.2010 в 13:19)
| | что-то не получается, может не так прописал?
вот код:
<?
header('locaton: test.php?do=test');
if(isset($_GET['do'])) $do = $_GET['do']; else $do = '';
if(isset($_GET['text'])) $text = $_GET['text']; else $text = '';
if(isset($_GET['textarea'])) $textarea = $_GET['textarea']; else $textarea = '';
if($do == 'test'){
if(isset($_POST['submit'])){
$text = 'text';
$textarea = 'textarea';
}
$form = <<<HTML
<form name="form" method="post" action="test.php?do=test">
<input type="text" name="text" value="{$text}" /><br />
<textarea name="textarea" style="width:500px; height:200px">{$textarea}</textarea><br />
<input type="submit" name="submit" /><br />
</form>
HTML;
echo $form;
}
echo '<a href="test.php?do=test">link</a>';
?>
|
| |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 14:20)
| | А теперь подумайте, что вы сделали - переадресация будет происходить при любом обращении к скрипту. Разве вам это надо? А если нет - то как интерпритатор узнает, когда именно это надо делать? Вы сами должны поместить заголовок в нужное место кода. | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 14:20)
| | после выдачи заголовка переадресации имеет смысл сразу поставить exit() , поскольку остальной код исполняется в переадресуемом скрипте.
И тогда - если поставить - сразу видно, что Вы написали чушь. | |
|
|
|
|
|
|
|
для: Trianon
(05.12.2010 в 14:34)
| | А можно готовый код?
Куда только этот header не ставлю, всё равно при нажатии F5 текст остаётся в форме. | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 14:54)
| | Я прямо представляю, как вы с глазами срущей собаки туда-сюда ставите этот код.
Зачем?
Подумайте, в какой момент должна быть переадресация, когда надо перенаправить браузер на другую страницу, чтобы при нажатии f5 форма не отправлялась еще раз? | |
|
|
|
|
|
|
|
для: neadekvat
(05.12.2010 в 14:56)
| | что-то я вообще не могу понять этот header.
возьмём простой пример:
файл test.php:
<?
if(isset($_GET['do'])) $do = $_GET['do'];
if($do == 'test'){
header('locaton: test2.php');
}
echo '<a href="test.php?do=test">link</a>';
?>
|
сначало загружаем test.php, затем кликаем по ссылке, у нас получается если do равно test, включаем переадресацию на файл test2.php, проверил на сервере, никакой переадресации не происходит, а загружается test.php?do=test что я не так понимаю? | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 15:28)
| | location, бляха муха. | |
|
|
|
|
|
|
|
для: neadekvat
(05.12.2010 в 15:40)
| | sorry, короче я всё понял, блин бывает такое, из-за одной ошибки происходят не понятки.
thx. | |
|
|
|
|
|
|
|
для: defi
(05.12.2010 в 16:12)
| | neadekvat, запутался я окончательно, с fun. header я то разобрался, а вот внедрить в пример чёт не получается, вот пример по проще, если можно напишите plz с ответом:
<?
header("cache-control: no-cache");
if(isset($_POST['text'])) $text = $_POST['text']; else $text = '';
if(isset($_POST['submit'])){
$text = 'text';
}
$form = <<<HTML
<form name="form" method="post" action="test.php">
<input type="text" name="text" value="{$text}" /><br />
<input type="submit" name="submit" /><br />
</form>
HTML;
echo $form;
?>
|
| |
|
|
|
|
|
|
|
для: defi
(06.12.2010 в 13:02)
| | вото то что я написал:
<?
header("cache-control: no-cache");
if(isset($_POST['text'])) $text = $_POST['text']; else $text = '';
if(isset($_POST['submit'])){
$text = 'text';
}
$form = <<<HTML
<form name="form" method="post" action="test.php">
<input type="text" name="text" value="{$text}" /><br />
<input type="submit" name="submit" /><br />
</form>
HTML;
header('location: test.php');
echo $form;
?>
|
теперь вообще текст не выводится, после вывода формы тоже нельзя ставить header, дак куда его можно ещё вставить? | |
|
|
|
|
|
|
|
для: defi
(06.12.2010 в 13:15)
| | У вас с логикой скрипта проблемы.
Когда принимают некие _POST данные, то обрабатывают их и перенаправляют на другую страницу, например, с _GET параметрами о том, какое сообщение вывести пользователю.
А то, что делаете конкретно вы - вообще не имеет практического применения.
Обычно примерно так:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// обрабатываем данные, добавляем в бд/еще что-то
// перенаправляем пользователя
header('location: test.php?message=1');
die;
}
// здесь форма
|
| |
|
|
|