Как написать скрипт php / htaccess для перенаправления переменных формы на другой веб-сайт

Эй, вот моя проблема: я сделал вспышку, и я не могу ее изменить. У этой вспышки была форма, которая отправляла данные в мой поддомен .. Мне пришлось удалить субдомен, и у меня появился новый веб-сайт, проблема в следующем: как перенаправить данные формы со старого сайта на новый? Во вспышке у меня была форма отправки данных: subdomain.site.ro/subscribe.php, у меня все еще есть этот файл, и я мог бы написать скрипт в нем, но имена полей – это что-то вроде: field [name], и ​​я могу Не обрабатывайте их, поэтому я должен отправить их в исходный скрипт, который теперь находится на другом сайте: othersite.ro/subscribe.php.

Поэтому я должен написать сценарий, который передает переменные post / get в новый скрипт (на новом веб-сайте) или написать файл .htaccess, который перенаправляет переменные post / get на новый веб-сайт

Кто-нибудь может мне помочь? Я долго искал, и я не мог найти ничего полезного. Я был бы признателен, если бы вы хотя бы попытались помочь. Спасибо, Дэн

Ok Теперь я могу выполнить переменные со сценарием ниже (с формой html). Но Flash не отправляет никаких переменных в скрипт. я пробовал много вещей, и я все еще пытаюсь … какие-то идеи? если да, пожалуйста, дайте мне знать. Спасибо, Дэн

<?php if(isset($_POST['key']['yourmom'])) echo 'Your mom is '.$_POST['key']['yourmom'].' and your face '.$_POST['key']['yourface']; ?> <form method="post"> <input type="hidden" name="key[yourmom]" value="lol"> <input type="hidden" name="key[yourface]" value="failed"> <input type="submit"> </form> 

 <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://othersite.ro/subscribe.php"); header("Connection: close"); exit; ?> 

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

 <?php $ch = curl_init('http://othersite.ro/subscribe.php'); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, "key1=val1&key2=val2&key3=val3"); curl_exec ($ch); curl_close ($ch); ?> 

yup «Дав» ответил правильно.

также, если вы получили сообщение о том, что заголовки уже отправлены, просто поместите «ob_start ();» прямо под открытием «<? php» – то есть, если вы планируете положить это колено глубоко в другой php-скрипт.

вам нужно перебрать переменные $_POST и $_GET (массивы), чтобы получить все переменные:

 <?php header("HTTP/1.1 301 Moved Permanently"); $poststring=""; foreach ($_POST as $variable=>$value) { $poststring.=$variable."=".$value."&"; } header("Location: http://othersite.ro/subscribe.php?".$poststring); header("Connection: close"); exit; ?> 

то же относится к переменным GET (просто используйте $ _GET таким же образом)

 <?php if(isset($_POST['key']['yourmom'])) echo 'Your mom is '.$_POST['key']['yourmom'].' and your face '.$_POST['key']['yourface']; ?> <form method="post"> <input type="hidden" name="key[yourmom]" value="lol"> <input type="hidden" name="key[yourface]" value="failed"> <input type="submit"> </form> 

скопируйте приведенный выше код и запустите его .. вместо $ _POST ['value'] это просто $ _POST ['key'] ['value']

так что <input name = 'something' = $ _POST ['something'] совпадает с <input name = 'key [bla]' = $ _POST ['key'] ['bla']

Правильный способ сделать это – изменить запись DNS, чтобы ваш старый субдомен указывал на ваш новый. Затем все просто отправляется в новый домен, хотя и с одним и тем же путем. Но это звучит не так, как вы можете это сделать.

Альтернативой является эмулировать POST, что ваше флеш-приложение представлено с помощью curl. Просто возьмите строку запроса url (GET) и отправьте POST. Не имеет значения, что ваши имена полей: $ _POST ['key'] ['value'].

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'othersite.ro/subscribe.php?'.$_SERVER['QUERY_STRING']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); curl_setopt($ch, CURLOPT_USERAGENT, 'Redirect Fix'); $result = curl_exec($ch); curl_close($ch); 

Вы даже можете вернуть переменную $ result в ваше флеш-приложение. Тогда у вас просто есть сервер в промежуточных данных маршрутизации вперед и назад. Вы можете удалить строку CURLOPT_USERAGENT, вы просто используете ее, если хотите указать настраиваемый агент, обычно это строка идентификатора браузера.