2010-06-09 1 views
0

С помощью PHP вы можете создать псевдо-форму submit без создания формы? Просто инициализируйте и объявите переменные, и они передают их на другую страницу с помощью методов POST или GET?Является ли emmulating форма представления возможной с PHP?

+0

Да, но вам, возможно, придется сами писать заголовки HTTP ... Я не знаю достаточно об этом, чтобы дать вам реальный ответ, но я знаю, что это возможно. – Earlz

+0

Какова цель этого вопроса? Какова цель такой эмуляции? –

+0

Целью этой эмуляции является передача массива или класса между страницами, не определенными в свойстве action формы. Переменная, передаваемая между страницами, будет использоваться при отображении на другой странице. –

ответ

4

Что вы ищете, это cURL, библиотека для создания таких запросов.

+0

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

+0

До тех пор, пока вы нажимаете скрипт через localhost, он должен выполняться как обычно. –

+3

Что вы хотите сделать, это передача сервера на сервер, просто происходит, что его тот же сервер. Если вы пытаетесь передать данные внутри себя, просто вызовите эту функцию/код с любой страницы PHP, которую вы хотите. Нет необходимости проходить через HTTP-протокол, чтобы поговорить с вашим собственным сервером. – Omar

0

Определенно. Вы можете сделать это, используя cURL, эта ссылка должна объяснить основы: http://curl.haxx.se/docs/httpscripting.html - но есть сотни учебных курсов cURL в Интернете, чтобы делать такие вещи.

После того, как вы приобретете cURL, это очень легко понять и использовать.

Вот пример кода:

<? 
define('POSTURL', 'http://www.test.com/search.php'); 
define('POSTVARS', 'listID=29&request=suba&SubscribeSubmit=Subscribe&EmailAddress=');// POST VARIABLES TO BE SENT 

$ch = curl_init(POSTURL); 
curl_setopt($ch, CURLOPT_POST  ,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS ,POSTVARS); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_HEADER  ,0); // DO NOT RETURN HTTP HEADERS 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL 
$data = curl_exec($ch); 

?> 

Нечто подобное должно работать.

+0

Это было мое понимание. CURL не предназначался для передачи данных на сервере, а вместо этого сервер к серверу. Спасибо за учебник. –

+0

Нет причин, по которым он не может использоваться для передачи данных на сервере. – ceejayoz

+0

Вы не сможете получать данные POST в любом месте без использования cURL или какой-либо другой библиотеки, я не знаю других, которые приближаются к cURL. –

0

Теоретически вы можете создавать внутренние запросы в Apache для отправки этой формы; на практике вам придется использовать PHP-обертку или завиток http-страниц PHP, как и другие.

0

Вы можете попробовать сделать что-то вроде этого

$_POST = array(
         'lname'=>urlencode($last_name), 
         'fname'=>urlencode($first_name), 
         'title'=>urlencode($title), 
         'company'=>urlencode($institution), 
         'age'=>urlencode($age), 
         'email'=>urlencode($email), 
         'phone'=>urlencode($phone) 
       ); 

$_GET = array(); // no get 
$_SERVER['REQUEST_METHOD'] = "POST"; 
$_SERVER['REQUEST_URI'] = '/anotherpage.php'; 
// set REQUEST_PATH, REQUEST_PATHINFO, REQUEST_SCRIPTNAME etc 
// now it will be like this anotherpage.php was requested with a form 
include("anotherpage.php"); 

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

+0

Мне нравится пример кода, который вы предоставили, но я вижу, как быстро все будет запутано. –

0

Я не уверен, что вы можете установить POST-параметры, но до тех пор, как GET приемлемо, вы можете сделать это очень легко (я не достаточно эксперт, чтобы опрокинуть это без тестирования и не пообещать никаких ошибок, так что вы необходимо проверить):

$url = "http://foo.com?" 
while(list($key, $value) = each($_POST) 
$url .= "$key" . "=" . $value . "&"; 
header(Location: $url); 

Это превратит ваш POST в GET.

+0

Я думал, что смогу сделать что-то подобное. Спасибо за пример кода. –

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