2011-11-07 3 views
1

Ce code, évidemment, redirige d'où il est (dans un gestionnaire 404) à un gestionnaire personnalisé 404.Comment transférer des données avec une redirection?

header('Location: index.php?option=com_content&view=article&id=4'); 

Outre l'ajout d'éléments supplémentaires à l'appel, par ex.

header('Location: index.php?option=com_content&view=article&id=4&param=foo'); 

Y a-t-il un autre moyen de transférer des données? Par exemple, existe-t-il un mécanisme d'envoi de données de formulaire avec le transfert de localisation?

Contexte: Windows7, IIS7, PHP 5, Joomla! 1,5

Répondre

0

Oui. Si vous redirigez vers un autre emplacement dans le même domaine et que tout ce dont vous avez réellement besoin est de rediriger les données, pensez à utiliser une redirection configurée avec le serveur Web. Je l'ai fait avec Apache. Avec IIS7 it shouldn't be too difficult. Si vous avez besoin de faire quelque chose d'autre (capturez ou manipulez les données avant de les transmettre), vous pouvez utiliser sessions, en enregistrant les données publiées dans la session plutôt que de les publier à nouveau dans le nouvel emplacement.

Si vous avez besoin de publier des données reçues à un nouvel emplacement (et surtout si le domaine est hors de votre contrôle) et rendre le résultat (ne pas se soucier de rediriger réellement dans le navigateur), alors cURL peut être utile.

Voici quelques exemples de code:

if(!empty($_GET['url'])) $url = $_GET['url']; 
else $url = 'localhost/default.php'; 

$post = array 
(
    'example_post_var_1' => 'foo', 
    'example_post_var_2' => 'bar' 
); 

$options = array 
(
    CURLOPT_POST => 1, 
    CURLOPT_HEADER => 0, 
    CURLOPT_URL => $url, 
    CURLOPT_FRESH_CONNECT => 1, 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_FORBID_REUSE => 1, 
    CURLOPT_TIMEOUT => 4, 
    CURLOPT_POSTFIELDS => http_build_query($post) 
); 

$ch = curl_init(); 
curl_setopt_array($ch, $options); 
if(!$result = curl_exec($ch)) 
{ 
    trigger_error(curl_error($ch)); 
} 

echo $result; 
curl_close($ch); 
exit(); 
+0

Alors laissez-moi comprendre. Vous semblez dire que je peux utiliser cURL pour rediriger vers une autre page, oui? Voulez-vous poster un lien vers un exemple? – bugmagnet

+0

Compris et woo hoo, vous ripper !! – bugmagnet

2

Session peut conserver les données sur les demandes.

Questions connexes