Envoyez des données en POST avec header()
Résolu
issanasralli
Messages postés
20
Statut
Membre
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
Bonjour,
Je veux savoir est-il possible d'envoyer des données en POST en appelant la page web "www.serv1.com/search.php" en utilisant la fonction header vers une page située dans autre serveur www.serv2.com/handle.php ??
J'ai cherché sur le net et j'ai trouvé une solution dont on utilise les sessions et je pense que ça ne convient pas avec mon problème.
Merci bien de me répondre.
Je veux savoir est-il possible d'envoyer des données en POST en appelant la page web "www.serv1.com/search.php" en utilisant la fonction header vers une page située dans autre serveur www.serv2.com/handle.php ??
J'ai cherché sur le net et j'ai trouvé une solution dont on utilise les sessions et je pense que ça ne convient pas avec mon problème.
Merci bien de me répondre.
4 réponses
-
Salut,
La fonction header() ne permet de gerer que les entêtes HTTP de réponse du serveur, tu ne peux donc pas l'utiliser pour créer une entête HTTP de requête (GET ou POST). Le header('Location: ...') est une réponse du serveur demandant au client de refaire une requête sur une autre page.
Pour effectuer une requête HTTP depuis ton serveur en php, tu dois utiliser un socket ou cURL.
Bonne journée-
-
Si ton objectif est d'envoyer une requête POST depuis un script php sur ton serveur, voici deux exemple avec cURL et socket :
http://dev.petitchevalroux.net/php/faire-une-requete-post-avec-curl-php.306.html
https://snipplr.com/view/70119
Bonne journée -
-
J'ai testé avec socket et ça marche bien avec des liens http mais ça marche pas avec un lien https, voilà mon code:
<?php
// submit these variables to the server
$i=12654862;
$post_data = array("cin"=>"$i");
// send a request to specified server
$result = do_post_request("https://www2.inscription.tn/ORegMx/servlet/AuthentificationEtud?ident=cin", $post_data);
echo $result["content"];
if($result["status"] == "ok"){
// result of the request
if(stripos($result["content"],'?????')!=0)
{
echo 'postif<br>';
$tabContent = explode("\n", $content);
echo $tabContent[141];
}
}
function do_post_request($url, $data, $referer = ""){
// convert the data array into URL Parameters like a=1&b=2 etc.
$data = http_build_query($data);
// parse the given URL
$url = parse_url($url);
// extract host and path from url
$host = $url["host"];
$path = $url["path"];
// open a socket connection with port 80, set timeout 40 sec.
$fp = fsockopen($host, 80, $errno, $errstr, 40);
$result = "";
if($fp){
// send a request headers
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
if($referer != "") fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($data)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
// receive result from request
while(!feof($fp)) $result .= fgets($fp, 128);
}else{
return array("status"=>"err", "error"=>"$errstr ($errno)");
}
// close socket connection
fclose($fp);
// split result header from the content
$result = explode("\r\n\r\n", $result, 2);
$header = isset($result[0]) ? $result[0] : "";
$content = isset($result[1]) ? $result[1] : "";
// return as structured array:
return array(
"status" => "ok",
"header" => $header,
"content" => $content
);
}
?> -
D'après le manuel php, il faut utiliser le protocole ssl avec le port par défaut 443 pour les requêtes https.
Tu peux trouver plus d'info dans les commentaires de cette page en cherchant "https" :
https://www.php.net/fsockopen
-
-
-
-
Bonjour,
En théorie je dirais oui, il te suffit d'essayer ;)
header('Location: http://site2.com/tapage.php?tonpost='.$tavariable)
A tester ;)
Cordialement