Envoyez des données en POST avec header()

Résolu
issanasralli Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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.

A voir également:

4 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
3
issanasralli Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci bien Pitet, c'est tout à fait claire!
Mais est il possible d'utiliser les sockets ou bien les cURL pour atteindre mon objectif?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
0
issanasralli Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   2
 
1000 merci pour votre aide Pitet !!! ça marche bien!!!
0
issanasralli Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   2
 
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
);
}

?>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
0
gign44 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   5
 
en post tu ne peux pas,
bonne continuation
1
issanasralli Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   2
 
C'est du GET, c'est pas de POST.
0
gign44 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour,

En théorie je dirais oui, il te suffit d'essayer ;)


header('Location: http://site2.com/tapage.php?tonpost='.$tavariable)

A tester ;)

Cordialement
-1