|
|
|
| Здравствуйге.
Как передать данные из формы двумя методами GET и POST сразу.
Дело в том, что не получается переадресация header("location : script.php?var"); из ниже приведенного обработчика, вот я и думаю может как то из формы нужно двумя методами отправлять?
<form action="add_form1.php" method="post" enctype="multipart/form-data" name="form1">
<label>
<input type="text" name="name" maxlength="15">
</label>
<div align="center">
<input class="form_sabmit" type="submit" name="button" id="button" value="Отправить" >
</div>
</form>
|
<?
//первый блок - окончание работы
//в этом блоке можно сделать и инициализацию переменных, например:
$name = isset($_POST['name']) ? $_POST['name'] : "";
if (isset($_GET['var'])) { //проверяем, было ли перенаправление
echo "All OK!";
//можно и завершить все
exit;
//второй блок - прием формы и проверка
} else if (isset($_POST['submit'])) {
//проверяем все поля формы
$error = "";
if ($name...) ...
//если все ОК, запись и переход
header("location : script.php?var");
}
//третий блок - вывод формы по умолчанию и ошибках
if (!isset($_GET['var']) || $error) {
//код формы, значениями полей которой служат
//инициализированные переменные -
//по умолчанию они пусты, при получении формы и возврате ошибок
//будут содержать уже введенное пользователем
}
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 19:15)
| |
<form action="add_form1.php?act=value" method="post" enctype="multipart/form-data" name="form1">
|
После этого доступна переменная $_GET['act'], которая имеет значение value. Можно отправлять без =value, тогда $_GET['act'] будет isset, но в то же время будет empty :) | |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 19:15)
| | передаваемое по вызову "Location:" передается отнюдь не из формы. И тут уж какие параметры укажете - те и получится принять. Через GET, естественно. | |
|
|
|
|
|
|
|
для: Trianon
(13.10.2009 в 20:04)
| | ни как не могу понять в этом примере, если перенаправление идет на страницу script.php?var, почему тогда проверка происходит толоко на var if (isset($_GET['var'])) {...... ?
<?
//первый блок - окончание работы
//в этом блоке можно сделать и инициализацию переменных, например:
$name = isset($_POST['name']) ? $_POST['name'] : "";
if (isset($_GET['var'])) { //проверяем, было ли перенаправление
echo "All OK!";
//можно и завершить все
exit;
//второй блок - прием формы и проверка
} else if (isset($_POST['submit'])) {
//проверяем все поля формы
$error = "";
if ($name...) ...
//если все ОК, запись и переход
header("location : script.php?var");
}
//третий блок - вывод формы по умолчанию и ошибках
if (!isset($_GET['var']) || $error) {
//код формы, значениями полей которой служат
//инициализированные переменные -
//по умолчанию они пусты, при получении формы и возврате ошибок
//будут содержать уже введенное пользователем
}
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 21:21)
| | А на что еще должна идти проверка? | |
|
|
|
|
|
|
|
для: neadekvat
(13.10.2009 в 21:25)
| | Если var до этого не было откуда же ей взяться? или в var можно подставить любое число, лиж бы результат был на той странице на котор.идет переадрес. Да? | |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 21:42)
| | Как это откуда?
Вот же его создают:
script.php?var
Это и есть $_GET['var']
И не обязательно подсталвять какие-то цифирки или еще что-то. Переменная уже объявлена, просто она имеет нулевое значение | |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 21:21)
| | так у Вас в перенаправлении только var и указан. Больше проверять нечего. | |
|
|
|
|
|
|
|
для: Trianon
(13.10.2009 в 21:43)
| | Не могли б вы еще вот здесьпосмотреть. (моя пробная формочка с обработчиком),
ни как не получается сбросить POST и перенаправить на др.страницу
форма
<form action="add_proverka_location.php" method="post" enctype="multipart/form-data" name="img_test">
<label>
<input type="text" name="zagolov" id="zagolov" maxlength="15">
</label>
<div align="center">
<input class="form_sabmit" type="submit" name="button" id="button" value="Отправить" >
</div>
</form>
|
Обработчик
<?php include ("blocks/bd.php");
$zagolov = isset($_POST['zagolov']) ? $_POST['zagolov'] : "";
if (isset($_GET['var'])) { //проверяем, было ли перенаправление
echo "All OK!";
//можно и завершить все
exit;
//второй блок - прием формы и проверка
} else if (isset($_POST['button'])) {
//проверяем все поля формы
$error = "";
//если все ОК, запись и переход
$result00 = mysql_query ("INSERT INTO razdel (`zagolov`) VALUES ('$zagolov')",$db);
header("location : http://localhost/moy_test/proverka_location.php?var");
}
if (!isset($_GET['zagolov']) || $error) {
//код формы, значениями полей которой служат
//инициализированные переменные -
//по умолчанию они пусты, при получении формы и возврате ошибок
//будут содержать уже введенное пользователем
}
?>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 21:55)
| | . | |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 21:55)
| | при чем тут форма? | |
|
|
|
|
|
|
|
для: Dinya_1
(13.10.2009 в 19:15)
| | есть такая замечательная суперглобальная переменная $_REQUEST, содержащая как POST-, так и GET-данные. | |
|
|
|
|
|
|
|
для: dios™
(13.10.2009 в 22:09)
| | Спрашивалось, как передать, а не как принять | |
|
|
|
|
|
|
|
для: neadekvat
(13.10.2009 в 22:11)
| | Вы бы лучше попытались объяснить необходимость передачи данных сразу двумя методами. готов поспорить, что можно обойтись одним. | |
|
|
|
|
|
|
|
для: Рома
(13.10.2009 в 22:51)
| | >готов поспорить, что можно обойтись одним.
придется обойтись одним.
Еще никому не удавалось выполнить один запрос сразу двумя методами :)) | |
|
|
|
|
|
|
|
для: Trianon
(13.10.2009 в 23:08)
| | почему же так сразу?
a если action="post.php?mod=roma", тогда post данные будут приниматься в случае, если if($_GET['mod'] == 'roma'), и хоть это очень неудобно, можно настроить программу на такую обработку.
>Еще никому не удавалось выполнить один запрос сразу двумя методами :))
Вообще то удавалось :)) Нерентабельно. Попробуйте. | |
|
|
|
|
|
|
|
для: Рома
(13.10.2009 в 23:23)
| | Отчего ж?
У меня, например, есть страница index.php?act=edit
Куда же мне еще отправлять отредактированные данные из формы, кроме как не на index.php?act=edit, т.к. на index.php обработчика нет, тут только $_GET['act'] обрабатывается | |
|
|
|
|
|
|
|
для: Рома
(13.10.2009 в 23:23)
| | >почему же так сразу?
>a если action="post.php?mod=roma", тогда post данные будут приниматься в случае, если if($_GET['mod'] == 'roma'),
не в случае,если $_GET['mod'] == 'roma', а сопровождаясь данными в URL запроса.
Метод все равно останется POST, хотя mod и осядет в $_GET-массиве.
В данном же случае автор страдает над чистым методом GET, к которому данные в теле запроса не пристегнуть всяко. | |
|
|
|
|
|
|
|
для: Trianon
(13.10.2009 в 23:49)
| | >не в случае,если $_GET['mod'] == 'roma', а сопровождаясь данными в URL запроса.
>Метод все равно останется POST, хотя mod и осядет в $_GET-массиве.
А если посмотреть с другой стороны, разве action="post.php?mod=roma" не отправляет GET данных? Ведь GET массив имеет входящий параметр. Значит хоть и не явно указанный формой, имеет место GET метод передачи данных. | |
|
|
|
|
|
|
|
для: Рома
(14.10.2009 в 00:08)
| | Вы посмотрите со стророны http-протокола, в рамках которого эти самые методы определены.
Тогда всё станет ясно.
GET-параметр еще можно назвать GET-параметром. Но всяко не GET-методом. | |
|
|
|
|
|
|
|
для: Trianon
(14.10.2009 в 00:45)
| | придется купить книжку по протоколам... | |
|
|
|
|
|
|
|
для: Рома
(14.10.2009 в 00:48)
| | последняя тема со ссылками на текст и перевод стандарта. | |
|
|
|
|
|
|
|
для: neadekvat
(13.10.2009 в 22:11)
| | сорри, это я автору... | |
|
|
|