Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как сделать post без переадресации на страницу запроса? (http://forum.oszone.net/showthread.php?t=263736)

Андрей_Угаров@vk 04-07-2013 12:41 2179165

Как сделать post без переадресации на страницу запроса?
 
Здравствуйте. Мучаюсь этой проблемой уже несколько дней.
Так вот, необходимо чтобы после ввода данных в форму, информация отправлялась обработчику с помощью post запроса, чтобы переход был не на страницу запроса, а на другую страницу с предлагаемым товаром.
Попробовал это как-то реализовать :
HTML код:

<?php
$p0=$_REQUEST["name"];
$p1=$_REQUEST["email"];

echo "<html><body onLoad="document.getElementById('sbm').click()"><form action="http://site.net/subscribe/addsubscriber" method="POST"  name="form1"><input name='name' type='text' value='".$p0."' ><input name='email' type='text' value='".$p1."'><input type="submit" name="submit" id="sbm" value="submit"></form></body></html>";
$LOCATION="http://site.net";
header("Location:$LOCATION");
?>

На этот скрипт идет post запрос с формы. Этим скриптом пытаюсь отправить запрос на сам обработчик подписки.
И переадресовать на страницу на которую не шел post запрос.
Заранее благодарен.

Зоя_Зоя@vk 04-07-2013 16:24 2179321

Тут похоже никто ничего не знает.(
Тоже меня данный вопрос интересует.

mar 04-07-2013 16:51 2179342

Андрей_Угаров@vk,
не совсем понятно, что именно Вам нужно.

1) Если просто со страницы 1 форма должна уйти на страницу 2, и дальше все будет происходить там, то для этого служит <a href="http://htmlbook.ru/html/form/action">атрибут action</a>
HTML код:

<form action="2.php" method="post">
2) Если обработка должна происходить на той же странице 1, а уже после этого нужно организовать переход на страницу 2, то после обработки формы надо вписать:
PHP код:

header("Location: {$url}");
exit; 

или что-то еще?

Андрей_Угаров@vk 04-07-2013 18:11 2179399

Видимо ,я плохо объяснил.
Мне нужен скрипт php ,который будет являться обработчиком для формы, который в свою очередь перенаправляет post запрос на другой обработчик(который я изменить я не имею права, так как обработчик сайта nethouse.ru).
Так нужно для того чтобы использовать информацию с первоначальной формы для отправки данных для подписки и переадресовать на другой сайт(а не переадресовывать на страницу подписки).

В общем схема процесса такая:
Подписчик заполняет форум -> все передаются на php скрипт ,который мне нужен. Он передают данные для оформления подписки и в тоже время информацию передает по смс( смс я знаю как отправлять,это не нужно). Надо чтобы post запрос был без переадресации на страницу запроса .
Это возможно?

Андрей_Угаров@vk 04-07-2013 22:09 2179537

Придумал возможный способ решения(работает)

HTML код:

<html><body onload="someForm.submit();">
<form id="someForm" method="post" action="http://binwatch.net/subscribe/addsubscriber" class="">
<input type="hidden" name="name" id="name" value="Имя;" />
<input type="hidden" name="email" id="email" value="hello@yandex.ru" />
<input type="hidden" name="fmButton" value="Отправить" />
</form></body></html>

Только необходимо вставить этот код в php . И возможно ли в место значений Имя , hello@yandex.ru поставить переменные ,которые будут задаваться в php скрипте?

Только пожалуйста, не молчите. :help:

Habetdin 05-07-2013 02:26 2179599

Андрей_Угаров@vk, вот пример отправки POST с использованием CURL:
PHP код:

$auth_log 'pupkin';
$auth_pass 'root';
$ch curl_init();
@
curl_setopt($chCURLOPT_AUTOREFERER1);
@
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_HTTPPROXYTUNNEL0);
//curl_setopt($ch, CURLOPT_PROXY, 'Прокси, если нужно');
curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_HTTP);
curl_setopt($chCURLOPT_PROXYUSERPWD'');
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
$headers = array();
$headers[] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$headers[] = "Accept-Language: en-gb,en;q=0.9";
$headers[] = "Connection: keep-alive";
$headers[] = "Pragma: ";
curl_setopt($chCURLOPT_HTTPHEADER$headers);
curl_setopt($chCURLOPT_USERAGENT'Opera/9.80 (Windows NT 6.0; U; en-GB) Presto/2.9.168 Version/11.50');
curl_setopt($chCURLOPT_HEADER0); // 1, если нужны заголовки
curl_setopt($chCURLOPT_NOBODY1); // 0, если не нужен контент
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_COOKIEFILE'cookie_'.$auth_log.'.tmp'); // эти две строки нужны, если запросов будет
curl_setopt($chCURLOPT_COOKIEJAR'cookie_'.$auth_log.'.tmp'); // несколько и нужно хранить куки сайта :)
curl_setopt($chCURLOPT_URL'http://example.org/login');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS'login='.$auth_log.'&password='.$auth_pass.'&remember_me=1&submit=1');
$result curl_exec($ch); 

А что делать с $result - решать вам (это про "Он передают данные") =)

Цитата:

Цитата Андрей_Угаров@vk
Спасибо , но там долго разбираться.) »

Эх, поправить пару строк...

Андрей_Угаров@vk 05-07-2013 12:44 2179754

Спасибо , но там долго разбираться.)

Я пытался доделать свой вариант:
Вставил в php код добавил переменные , работает в таком виде:
PHP код:

<?php
$p0
=$_REQUEST["name"];
$p1=$_REQUEST["email"];

echo 
"<html>
<body onload=\"someForm.submit();\">

<form id=\"someForm\" method=\"post\" action=\"http://site.net/subscribe/addsubscriber\" class=\"\">
<input type=\"hidden\" name=\"name\" id=\"name\" value=\"$p0\" />

<input type=\"hidden\" name=\"email\" id=\"email\" value=\"$p1\" />
<input type=\"hidden\" name=\"fmButton\" value=\"Отправить\" />

</form></body></html>"
;
?>

А в таком виде выдает ошибку в 11 строке : Parse error: syntax error, unexpected T_VARIABLE
PHP код:

<?php
$p0
=$_REQUEST["name"];
$p1=$_REQUEST["email"];

echo 
"<html>
<body onload=\"someForm.submit();\">

<form id=\"someForm\" method=\"post\" action=\"http://site.net/subscribe/addsubscriber\" class=\"\">
<input type=\"hidden\" name=\"name\" id=\"name\" value=\"$p0\" />

<input type=\"hidden\" name=\"email\" id=\"email\" value=\"$p1\" />
<input type=\"hidden\" name=\"fmButton\" value=\"Отправить\" />

</form></body></html>"
;
$ip $_SERVER['REMOTE_ADDR'];

$referer $_SERVER['HTTP_REFERER'];
$headers .= "From: $p0 <$p1>\r\n";

$to "email@yandex.ru";
$subject "Новый подписчик!";

$message "site: $referer\nip: $ip\n$p0 : $p1";

mail($to,$subject,$message,$headers);
header("Location: http://site.net/");

exit;
?>

В чем ошибка? или невозможно отправлять post запрос и email в одном скрипте?


Время: 10:19.

Время: 10:19.
© OSzone.net 2001-