Как мне $ _POST в цикле - PullRequest
       2

Как мне $ _POST в цикле

2 голосов
/ 23 июня 2011

Мой текущий хост не разрешает удаленный доступ к MySQL, поэтому мне нужно обойти его, установив скрипт1 на сервере1, а также скрипт2 на сервере2. Я пытаюсь отправить данные поста в script2, который затем берет эти данные и помещает их в mysql. Чтобы не усложнять свой вопрос, я сократил код до следующего:

script1

for ( $counter = $counternumbernao; $counter <= $amountofcomments; $counter += 1) 
{
echo'
<form action="http://server2.x.com/form-receive.php" method="post">
<INPUT TYPE=HIDDEN NAME="comment_content" value=$comment_content>
<INPUT TYPE=HIDDEN NAME="comment_date" value=$comment_date">
<input type="submit" />
</form>
';
}

Как я могу изменить этот код, чтобы каждый раз, когда происходит цикл, он автоматически отправлял данные $ _POST в script2, который затем помещал их в mysql? Я не думал, что нужно было включать script2, поскольку это не важно для этой проблемы.

Ответы [ 5 ]

3 голосов
/ 23 июня 2011

Почему бы не использовать cURL для отправки данных FORM на сервер2.Это позволяет отправлять HTTP-запросы.Попробуйте следующий скрипт:

$url = "http://server2.x.com/form-receive.php";
$postvars = "comment_content=$comment_content&comment_date=$comment_date";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS ,$postvars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_HEADER ,0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);  
$data = curl_exec($ch);
2 голосов
/ 23 июня 2011

Чтобы это происходило автоматически, а конечный пользователь не знал об этом, лучше всего было бы использовать CURL (http://php.net/manual/en/book.curl.php).

Вот пример того, как это будет выглядеть:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://server2.x.com/form-receive.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'foo' => 'bar',
    // Put data from $_POST here
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
1 голос
/ 28 июля 2011

Помните, что простое отображение формы никогда не приведет к тому, что данные формы будут отправлены на какой-либо сервер. Все, что вы получаете от вашего php-кода, будет отправлено только веб-браузеру (или любому пользовательскому агенту), который запросил php-страницу.

Я голосую за ответы, предлагающие cURL.

Когда вы используете cURL, как в примере Джека Мердока, сама команда cURL работает как пользовательский агент HTTP и отправляет запрос POST на http://server2.x.com/form-receive.php. Поэтому в form-receive.php вам нужно всего лишь написать какую-нибудь обычную php-программу для чтения данных из массива $ _POST и чтения / записи в базу данных. Таким образом, вы на самом деле собираетесь построить веб-сервис на сервере 2.

0 голосов
/ 23 июня 2011

Попробуйте использовать метод JQuery и post () (http://api.jquery.com/jQuery.post/) затем просто сгенерируйте массив JS со всеми записями, затем запустите его в цикле и НАСЛАЖДАЙТЕСЬ! Возможно, это решение будет быстрее, чем зацикливание / обновление только в PHP.

0 голосов
/ 23 июня 2011

Что-то вроде этого:

echo '<form action="http://server2.x.com/form-receive.php" method="post">';
for ( $counter = $counternumbernao; $counter <= $amountofcomments; $counter += 1) 
{
    echo'
    <INPUT TYPE=HIDDEN NAME="comment_content[]" value=$comment_content>
    <INPUT TYPE=HIDDEN NAME="comment_date[]" value=$comment_date">
    <input type="submit" />
    ';
}
echo '</form>';

Затем скрипт получения формы получит массивы данных в $ _POST ['comment_content'] и $ _POST ['comment_date'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...