Comment écrire un script php / htaccess pour rediriger les variables de formulaire vers un autre site web

StackOverflow https://stackoverflow.com/questions/1410163

Question

C’est mon problème: j’ai flashé et je ne peux rien y changer. Ce flash avait un formulaire qui envoyait des données à mon sous-domaine .. Je devais supprimer le sous-domaine et j’ai un nouveau site Web. Le problème est le suivant: comment rediriger les données de formulaire de l’ancien site vers le nouveau? Dans le flash, j'avais le formulaire envoyer les données à: subdomain.site.ro/subscribe.php, j'ai toujours ce fichier là-bas et je pourrais écrire un script mais les noms de champs sont quelque chose comme: field [name] et je peux Ne les traitez pas, donc je dois les envoyer au script original qui est maintenant sur un autre site: othersite.ro/subscribe.php.

En résumé, je dois écrire un script qui transmet les variables post / get au nouveau script (sur le nouveau site Web) ou écrire un fichier .htaccess qui redirigera les variables post / get vers le nouveau site Web

Quelqu'un peut-il m'aider? Je cherche depuis longtemps et je n'ai rien trouvé qui puisse m'aider Je serais reconnaissant si vous pouviez au moins essayer d'aider. Merci, Dan

Ok, je peux maintenant traiter les variables avec le script ci-dessous (sous forme html). Mais le flash n'envoie aucune variable au script. J'ai essayé beaucoup de choses et j'essaie toujours .. des idées? si oui s'il vous plaît faites le moi savoir. Merci, 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>
Était-ce utile?

La solution

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

    exit;
?>

Si cela ne donne pas tout ce dont vous avez besoin, vous pouvez essayer de jouer le rôle de proxy par 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);
?>

Autres conseils

yup " Dav " répondu correctement.

De même, si vous obtenez une erreur disant que les en-têtes ont déjà été envoyés, mettez simplement & "ob_start (); &"; juste sous l'ouverture & "; <? php &"; - C’est-à-dire si vous envisagez de placer ce genou profondément dans un autre script php.

vous devez parcourir les $_POST et $_GET variables (tableaux) pour obtenir toutes les variables:

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

idem pour les variables GET (utilisez simplement $ _GET de la même manière)

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

copiez le code ci-dessus et exécutez-le .. au lieu de $ _POST ['valeur'], il ne s'agit que de $ _POST ['clé'] ['valeur']

comme < input name = 'quelque chose' = $ _POST ['quelque chose'] est identique à < input name = 'clé [bla]' = $ _POST ['clé'] ['bla']

La bonne façon de procéder consiste à modifier l’enregistrement DNS afin que votre ancien sous-domaine pointe vers le nouveau. Ensuite, tout est simplement soumis au nouveau domaine, mais avec le même chemin. Mais cela ne semble pas être le cas.

L’alternative consiste à émuler le POST soumis par votre application flash à l’aide de curl. Il suffit de saisir la chaîne de requête d'URL (GET) et de soumettre le POST. Peu importe que vos noms de champs soient $ _POST ['clé'] ['valeur'].

$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);

Vous pouvez même renvoyer la variable $ result à votre application flash. Ensuite, vous avez juste un serveur dans le milieu des données de routage en arrière. Vous pouvez supprimer la ligne CURLOPT_USERAGENT. Vous ne l'utilisez que si vous souhaitez spécifier un agent personnalisé. Normalement, il s'agit de la chaîne d'identification du navigateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top