Come scrivere uno script php / htaccess per reindirizzare le variabili del modulo su un altro sito Web

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

Domanda

Ehi, ecco il mio problema: ho fatto un flash e non posso cambiarlo. Quel flash aveva un modulo che stava inviando dati al mio sottodominio. Ho dovuto rimuovere il sottodominio e ho ottenuto un nuovo sito Web, il problema è questo: come posso reindirizzare i dati del modulo dal vecchio sito a quello nuovo? Nel flash ho avuto il modulo di inviare i dati a: subdomain.site.ro/subscribe.php Ho ancora quel file lì e potrei scrivere uno script al suo interno ma i nomi dei campi sono qualcosa del tipo: field [name] e posso elaborarli, quindi devo inviarli allo script originale che adesso è su un altro sito: othersite.ro/subscribe.php.

Quindi, in pratica, devo scrivere uno script che passi le variabili post / get al nuovo script (sul nuovo sito Web) o scrivere un file .htaccess che reindirizzerà le variabili post / get sul nuovo sito web

Qualcuno può aiutarmi? sto cercando da molto tempo e non sono riuscito a trovare nulla di utile Le sarei grato se almeno provassi ad aiutare. Grazie, Dan

Ok Ora posso elaborare le variabili con lo script seguente (con un modulo html). Ma il flash non sta inviando alcuna variabile allo script. ho provato un sacco di cose e sto ancora provando .. qualche idea? se sì, per favore fatemi sapere. Grazie, 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>
È stato utile?

Soluzione

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

    exit;
?>

Se ciò non soddisfa ciò di cui hai bisogno, allora potresti provare a ricorrere a un po 'come un proxy tramite 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);
?>

Altri suggerimenti

yup " Dav " ha risposto correttamente.

inoltre, se viene visualizzato un errore che indica che le intestazioni sono già state inviate, basta inserire " ob_start (); " proprio sotto l'apertura " <? php " - cioè, se hai intenzione di mettere questo ginocchio in profondità in un altro script php.

è necessario passare in rassegna le variabili $_POST e $_GET (array) per ottenere tutte le variabili:

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

lo stesso vale per le variabili GET (basta usare $ _GET nello stesso modo)

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

copia il codice sopra ed eseguilo .. invece di $ _POST ['valore'] è solo $ _POST ['chiave'] ['valore']

così come < input name = 'qualcosa' = $ _POST ['qualcosa'] è uguale a < input name = 'key [bla]' = $ _POST ['key'] ['bla']

Il modo corretto per farlo sarebbe quello di cambiare il record DNS in modo che il tuo sottodominio precedente punti a quello nuovo. Quindi tutto viene appena inviato al nuovo dominio, anche se con lo stesso percorso. Ma non sembra che tu possa farlo.

L'alternativa è emulare il POST che l'app Flash ha inviato usando l'arricciatura. Basta prendere la stringa di query url (GET) e inviare il POST. Non importa che i nomi dei tuoi campi siano $ _POST ['chiave'] ['valore'].

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

Puoi persino restituire la variabile $ result alla tua app flash. Quindi hai solo un server nel mezzo di routing dei dati avanti e indietro. Puoi eliminare la riga CURLOPT_USERAGENT, devi solo usarlo se vuoi specificare un agente personalizzato, normalmente questa è la stringa identificativa del browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top