Aller au contenu

Transmission du tableau $_POST


Sujets conseillés

Posté

Salut,

Je voudrais savoir s'il est possible de "relayer" le tableau $_POST ?

Si on a un formulaire ayant comme cible a.php, peut-on faire un test, puis renvoyer le formulaire sur b.php, pour que les données POST soient récupérées et traitées par b.php ?

Posté

Salut marvin :)

Pourquoi ne pas faire le test directement sur b.php puis continuer le traitement du formulaire ? ne serait-ce pas plus simple ? :huh:

Posté

Je ne connais pas de solution satisfaisante à ce problème. A ma connaissance, ça nécessite qu'après le test, la page a.php envoie un formulaire vers b.php.

Les champs de ce formulaire de a.php peuvent être cachés (hidden) et être des recopies des champs du formulaire initial, mais pour que ce nouveau formulaire soit soumis, il faut obligatoirement un clic du visiteur sur un bouton submit côté client. J'imagine que cette pseudo-solution ne te convient pas.

Il y a bien sûr la possibilité de faire un submit automatique en javascript... mais c'est du javascript donc ça ne marchera pas à tous les coups.

A défaut il y a le passage par GET.

Désolé je n'ai pas mieux.

Posté

_AT_MS-DOS : non ce n'est pas possible. La page a.php n'est en fait qu'un aiguillage qui doit permettre, en examinant une donnée post, de savoir si le reste des informations est destiné à b.php OU à c.php.

_AT_Jan : bon ben apparemment, pas de solution satisfaisante à mon problème. Sniff

Posté

Ne serait-il pas plus judicieux d'examiner les données dans a.php puis d'inclure dans celui-ci (en fonction des données) b.php ou c.php qui effectuera par la suite le traitement en fonction ?

Posté

voila comment envoyer une requete POST, tu peux t'en inspirer peut etre que ca repond a ta question:

<?
// Les données envoyées en POST sous forme d'url
$data = 'txt1='.urlencode($txt1).'&txt2='.urlencode($txt2).'&id='.$id_session;

// monfichier.php3 est l'URL du fichier devant recevoir la requete POST
$message  = "POST /monfichier.php3 HTTP/1.0\r\n";
$message .= "Content-type: application/x-www-form-urlencoded\r\n";
$message .= "Content-length: ".strlen( $data )."\r\n";
$message .= "\r\n";
$message .= $data."\r\n";

// monserveur correspond au serveur qui doit recevoir la requete
$fd = fsockopen( "monserveur", 80 );
fputs($fd,$message);
fclose($fd);
?>

Posté

Il est possible de relayer des variables $_POST, comme si elles venaient d'un formulaire classique, et ceci sans clic supplémentaire de l'utilisateur.

Ceci dit, la meilleure solution serait a priori de faire ca en include..

J'te ponds un exemple, et je reviens ;)

Posté

<?

$dom = "www.domaine.com";
$url = "/repertoire/page.php";

$query = "nom=galle&prenom=nico&truc=machin";
$headers = "POST $url HTTP/1.1\r\n";
$headers .= "HOST: $dom \r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: " . strlen($query) . "\r\n\r\n";

$fp = fsockopen ($dom, 80, $errno, $errstr, 30);
fputs ($fp, $headers . $query);
while ( !feof($fp) ) {
$response = fread($fp,1024);
print $response;
}
fclose($fp);

?>

La seule chose à faire en supp., ca serait de passer les variables par 'urlencode', pour éviter les problèmes d'encodage de caractères. Mais le principe est là.

Testé, ca marche ;)

_AT_Rportal, c'est bien là que je l'ai pris (aussi :D )

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...