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

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

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

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

Хорошо. Теперь я могу обрабатывать переменные с помощью скрипта ниже (с HTML-формой). Но флеш-память не посылает никаких переменных в скрипт. я много чего перепробовал и все еще пытаюсь .. какие-нибудь идеи? если да, пожалуйста, дайте мне знать. Спасибо, Dan

<?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>

Ответы [ 5 ]

1 голос
/ 11 сентября 2009
<?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://othersite.ro/subscribe.php");
    header("Connection: close");

    exit;
?>

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

<?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);
?>
0 голосов
/ 11 сентября 2009

Правильный способ сделать это - изменить запись 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 в ваше flash-приложение. Тогда у вас просто сервер посередине данных маршрутизации туда и обратно. Вы можете удалить строку CURLOPT_USERAGENT, просто используйте ее, если хотите указать пользовательский агент, обычно это строка идентификатора браузера.

0 голосов
/ 11 сентября 2009
<?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']

так как

0 голосов
/ 11 сентября 2009

вам нужно перебрать переменные (массивы) $_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 таким же образом)

0 голосов
/ 11 сентября 2009

да "Дав" ответил правильно.

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

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