Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать данные из формы двумя методами GET и POST сразу
 
 автор: Dinya_1   (13.10.2009 в 19:15)   письмо автору
 
 

Здравствуйге.
Как передать данные из формы двумя методами 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) { 
  
//код формы, значениями полей которой служат 
  //инициализированные переменные - 
  //по умолчанию они пусты, при получении формы и возврате ошибок 
  //будут содержать уже введенное пользователем   

  Ответить  
 
 автор: neadekvat   (13.10.2009 в 19:27)   письмо автору
 
   для: 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 :)

  Ответить  
 
 автор: Trianon   (13.10.2009 в 20:04)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 19:15)
 

передаваемое по вызову "Location:" передается отнюдь не из формы. И тут уж какие параметры укажете - те и получится принять. Через GET, естественно.

  Ответить  
 
 автор: Dinya_1   (13.10.2009 в 21:21)   письмо автору
 
   для: 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) {  
  
//код формы, значениями полей которой служат  
  //инициализированные переменные -  
  //по умолчанию они пусты, при получении формы и возврате ошибок  
  //будут содержать уже введенное пользователем    


  Ответить  
 
 автор: neadekvat   (13.10.2009 в 21:25)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 21:21)
 

А на что еще должна идти проверка?

  Ответить  
 
 автор: Dinya_1   (13.10.2009 в 21:42)   письмо автору
 
   для: neadekvat   (13.10.2009 в 21:25)
 

Если var до этого не было откуда же ей взяться? или в var можно подставить любое число, лиж бы результат был на той странице на котор.идет переадрес. Да?

  Ответить  
 
 автор: neadekvat   (13.10.2009 в 21:44)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 21:42)
 

Как это откуда?
Вот же его создают:
script.php?var
Это и есть $_GET['var']
И не обязательно подсталвять какие-то цифирки или еще что-то. Переменная уже объявлена, просто она имеет нулевое значение

  Ответить  
 
 автор: Trianon   (13.10.2009 в 21:43)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 21:21)
 

так у Вас в перенаправлении только var и указан. Больше проверять нечего.

  Ответить  
 
 автор: Dinya_1   (13.10.2009 в 21:55)   письмо автору
 
   для: 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) { 

  
//код формы, значениями полей которой служат 
  //инициализированные переменные - 
  //по умолчанию они пусты, при получении формы и возврате ошибок 
  //будут содержать уже введенное пользователем   

?>

  Ответить  
 
 автор: neadekvat   (13.10.2009 в 21:58)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 21:55)
 

.

  Ответить  
 
 автор: Trianon   (13.10.2009 в 22:50)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 21:55)
 

при чем тут форма?

  Ответить  
 
 автор: dios™   (13.10.2009 в 22:09)   письмо автору
 
   для: Dinya_1   (13.10.2009 в 19:15)
 

есть такая замечательная суперглобальная переменная $_REQUEST, содержащая как POST-, так и GET-данные.

  Ответить  
 
 автор: neadekvat   (13.10.2009 в 22:11)   письмо автору
 
   для: dios™   (13.10.2009 в 22:09)
 

Спрашивалось, как передать, а не как принять

  Ответить  
 
 автор: Рома   (13.10.2009 в 22:51)   письмо автору
 
   для: neadekvat   (13.10.2009 в 22:11)
 

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

  Ответить  
 
 автор: Trianon   (13.10.2009 в 23:08)   письмо автору
 
   для: Рома   (13.10.2009 в 22:51)
 

>готов поспорить, что можно обойтись одним.

придется обойтись одним.
Еще никому не удавалось выполнить один запрос сразу двумя методами :))

  Ответить  
 
 автор: Рома   (13.10.2009 в 23:23)   письмо автору
 
   для: Trianon   (13.10.2009 в 23:08)
 

почему же так сразу?
a если action="post.php?mod=roma", тогда post данные будут приниматься в случае, если if($_GET['mod'] == 'roma'), и хоть это очень неудобно, можно настроить программу на такую обработку.

>Еще никому не удавалось выполнить один запрос сразу двумя методами :))

Вообще то удавалось :)) Нерентабельно. Попробуйте.

  Ответить  
 
 автор: neadekvat   (13.10.2009 в 23:48)   письмо автору
 
   для: Рома   (13.10.2009 в 23:23)
 

Отчего ж?
У меня, например, есть страница index.php?act=edit
Куда же мне еще отправлять отредактированные данные из формы, кроме как не на index.php?act=edit, т.к. на index.php обработчика нет, тут только $_GET['act'] обрабатывается

  Ответить  
 
 автор: Trianon   (13.10.2009 в 23:49)   письмо автору
 
   для: Рома   (13.10.2009 в 23:23)
 

>почему же так сразу?
>a если action="post.php?mod=roma", тогда post данные будут приниматься в случае, если if($_GET['mod'] == 'roma'),

не в случае,если $_GET['mod'] == 'roma', а сопровождаясь данными в URL запроса.

Метод все равно останется POST, хотя mod и осядет в $_GET-массиве.


В данном же случае автор страдает над чистым методом GET, к которому данные в теле запроса не пристегнуть всяко.

  Ответить  
 
 автор: Рома   (14.10.2009 в 00:08)   письмо автору
 
   для: Trianon   (13.10.2009 в 23:49)
 

>не в случае,если $_GET['mod'] == 'roma', а сопровождаясь данными в URL запроса.

>Метод все равно останется POST, хотя mod и осядет в $_GET-массиве.

А если посмотреть с другой стороны, разве action="post.php?mod=roma" не отправляет GET данных? Ведь GET массив имеет входящий параметр. Значит хоть и не явно указанный формой, имеет место GET метод передачи данных.

  Ответить  
 
 автор: Trianon   (14.10.2009 в 00:45)   письмо автору
 
   для: Рома   (14.10.2009 в 00:08)
 

Вы посмотрите со стророны http-протокола, в рамках которого эти самые методы определены.
Тогда всё станет ясно.
GET-параметр еще можно назвать GET-параметром. Но всяко не GET-методом.

  Ответить  
 
 автор: Рома   (14.10.2009 в 00:48)   письмо автору
 
   для: Trianon   (14.10.2009 в 00:45)
 

придется купить книжку по протоколам...

  Ответить  
 
 автор: Trianon   (14.10.2009 в 01:19)   письмо автору
 
   для: Рома   (14.10.2009 в 00:48)
 

последняя тема со ссылками на текст и перевод стандарта.

  Ответить  
 
 автор: Рома   (13.10.2009 в 22:52)   письмо автору
 
   для: neadekvat   (13.10.2009 в 22:11)
 

сорри, это я автору...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования