2009-08-21 2 views
1

В настоящее время я пытаюсь получить скрипт для отправки формы на страницу, которая является внешней для моего сайта, но также отправит мне ответы на вопросы, предоставленные клиентом. Функция mail() отлично работала для почты ... но как мне взять эти значения и отправить их на внешнюю страницу?Отправить форму и отправить ее по электронной почте с помощью PHP

Благодарим за помощь!

ответ

2

Если вы получите форму, чтобы отправить в сценарий, можно было бы сначала отправить электронную почту, а затем использовать cURL, чтобы сделать запрос HTTP на внешнюю страницу, POSTING значения, которые вы хотите отправить. Это не сработает, если внешний сайт полагается на любые файлы cookie, которые есть у пользователя, поскольку запрос выполняется с вашего веб-сервера.

например.

<?php 
//data to post 
$data = array('name' => 'tom', 'another_form_field'=>'a'); 

//external site url (this should be the 'action' of the remote form you are submitting to) 
$url = "http://example.com/some/url"; 

$curl = curl_init($url); 

curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 

//make curl return the content returned rather than printing it straight out 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

$result = curl_exec($curl); 

if ($result === false) { 
    //curl error 
} 

curl_close($curl); 

//this is what the webserver sent back when you submitted the form 
echo $result; 
+0

Ненавижу, чтобы спросить, но как я могу это сделать? –

+0

Удивительный, пример работал как сон, спасибо! –

-2

Для POST, вам необходимо установить внешнюю страницу как действие обработки:

<form action="http://external-page.com/processor.php" method="POST"> 
    <!-- Form fields go here ---> 
</form> 

Если это GET, вы можете либо изменить метод формы для GET, или создать собственную строку запроса:

<a href="http://external-page.com/processor.php?field1=value1&field2=value2">submit</a> 

Edit: Я просто понял, вы, вероятно, хотите, чтобы отправить их из вашего класса обработки PHP. В этом случае, вы можете использовать установить заголовок расположения со строкой пользовательского запроса:

header("Location: http://external-page.com/processor.php?field1=value1&field2=value2"); 
+0

Нет, это не проблема. В настоящее время форма уже делает вышеуказанное, чтобы отправить форму отправки, в которой есть почтовая функция. Так как я могу отправить его на внешнюю страницу тоже? –

0

Вы можете отправить пользовательский запрос HTTP POST из сценария, который вы используете для отправки электронной почты. Попробуйте установить fsockopen, чтобы установить соединение, а затем отправить собственный HTTP-запрос, содержащий данные, которые вы только что получили от формы.

Редактировать:

Немного конкретнее. Пример this, который показывает вам, как отправить простой HTTP-запрос POST. Просто семя его с $_POST массив как это:

do_post_request(your_url, $_POST); 

и что следует сделать трюк. Впоследствии вы могли бы дополнительно оценить ответ, чтобы проверить, все ли в порядке.

+0

Это похоже не сработало ... –

0

Вам нужно будет прорваться через источник внешней формы, чтобы определить HTML name соответствующих полей и будет ли форма отправлена ​​с использованием GET или POST.

Если форма использует метод GET, вы можете легко генерировать строки запроса, которая использует такой же вид, как и по форме: http://example.com/form.php?name1=value1&name2=value2 ...

Если, с другой стороны, форма использует метод POST, вам 'll должен сгенерировать запрос HTTP POST, используя что-то вроде библиотеки cURL (http://us2.php.net/curl).

Смежные вопросы