Войти

Показать полную графическую версию : Как сделать post без переадресации на страницу запроса?


Андрей_Угаров@vk
04-07-2013, 12:41
Здравствуйте. Мучаюсь этой проблемой уже несколько дней.
Так вот, необходимо чтобы после ввода данных в форму, информация отправлялась обработчику с помощью post запроса, чтобы переход был не на страницу запроса, а на другую страницу с предлагаемым товаром.
Попробовал это как-то реализовать :
<?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
Тут похоже никто ничего не знает.(
Тоже меня данный вопрос интересует.

mar
04-07-2013, 16:51
Андрей_Угаров@vk,
не совсем понятно, что именно Вам нужно.

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

2) Если обработка должна происходить на той же странице 1, а уже после этого нужно организовать переход на страницу 2, то после обработки формы надо вписать:

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


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

Андрей_Угаров@vk
04-07-2013, 18:11
Видимо ,я плохо объяснил.
Мне нужен скрипт php ,который будет являться обработчиком для формы, который в свою очередь перенаправляет post запрос на другой обработчик(который я изменить я не имею права, так как обработчик сайта nethouse.ru).
Так нужно для того чтобы использовать информацию с первоначальной формы для отправки данных для подписки и переадресовать на другой сайт(а не переадресовывать на страницу подписки).

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

Андрей_Угаров@vk
04-07-2013, 22:09
Придумал возможный способ решения(работает)

<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
Андрей_Угаров@vk, вот пример отправки POST с использованием CURL:
$auth_log = 'pupkin';
$auth_pass = 'root';
$ch = curl_init();
@curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
//curl_setopt($ch, CURLOPT_PROXY, 'Прокси, если нужно');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$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($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.0; U; en-GB) Presto/2.9.168 Version/11.50');
curl_setopt($ch, CURLOPT_HEADER, 0); // 1, если нужны заголовки
curl_setopt($ch, CURLOPT_NOBODY, 1); // 0, если не нужен контент
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie_'.$auth_log.'.tmp'); // эти две строки нужны, если запросов будет
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie_'.$auth_log.'.tmp'); // несколько и нужно хранить куки сайта :)
curl_setopt($ch, CURLOPT_URL, 'http://example.org/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login='.$auth_log.'&password='.$auth_pass.'&remember_me=1&submit=1');
$result = curl_exec($ch);

А что делать с $result - решать вам (это про "Он передают данные") =)
[hr]Спасибо , но там долго разбираться.) »
Эх, поправить пару строк...

Андрей_Угаров@vk
05-07-2013, 12:44
Спасибо , но там долго разбираться.)

Я пытался доделать свой вариант:
Вставил в 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
$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 в одном скрипте?




© OSzone.net 2001-2012