Http et la méthode post

Soyez le premier à donner votre avis sur cette source.

Vue 32 031 fois - Téléchargée 491 fois

Description

Il peut être intéressant de poster des données sans passer par un formulaire. En particulier, pour poster des données à un autre script, si celui-ci n'est pas sur votre site.

Il est possible d'envoyer la même chose que votre navigateur avec une socket. (il faut le module socket de php installé)

Exemple : envoyer des données à form2mail.pl sur FREE

Source / Exemple :


<?php
/*

  • $Id: httppost.func.php,v 1.1 2003/12/28 12:48 adadou Exp $
  • /
/*
  • Permet d'envoyer des données par la méthode http POST
  • @param string $Host : Hote du script destinataire
  • @param string $URI : URI du script qui recevra les données
  • @param string $Referer : page d'où sont émises les données
  • @param array $Post : tableau de varaibles à envoyer
  • @return array
  • /
function httpPost($Host, $URI, $Referer, $Post) { $Body = ''; foreach($Post as $key => $value) { $Body.= urlencode($key).'='.urlencode(stripslashes($value)).'&'; } $ContentLength = strlen($Body); // Generate the Request header $Request = "POST $URI HTTP/1.1\r\n"; $Request.= "Host: $Host\r\n"; $Request.= 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) '; $Request.= "Gecko/20021204\r\n"; $Request.= 'Accept: text/xml,application/xml,application/xhtml+xml,'; $Request.= 'text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,'; $Request.= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n"; $Request.= "Accept-Language: en-us, en;q=0.50\r\n"; $Request.= "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n"; $Request.= "Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n"; $Request.= "Keep-Alive: 300\r\n"; $Request.= "Connection: keep-alive\r\n"; $Request.= "Referer: $Referer\r\n"; $Request.= "Cache-Control: max-age=0\r\n"; $Request.= "Content-Type: application/x-www-form-urlencoded\r\n"; $Request.= "Content-Length: $ContentLength\r\n\r\n"; $Request.= "$Body\r\n"; // Open the connection to the host $socket = fsockopen($Host, 80, &$errno, &$errstr); if (!$socket) { $Result['errno'] = $errno; $Result['errstr'] = $errstr; return $Result; } else { $idx = 0; fputs($socket, $Request); while (!feof($socket)) $Result[$idx++] = fgets($socket, 128); fclose ($socket); return $Result; } } ?> /* form2mail.php */ <?php /*
  • Envoi d'un mail avec Form2Mail sur Free
  • /
include('httppost.func.php'); $URI = "/cgi-bin/form2mail.pl"; $Host = "perso0.free.fr"; /* envoi un mail à LOGIN@free.fr */ //$Referer = 'http://adpro22.free.fr/dummy/form2mail.php'; $Referer = 'http://LOGIN.free.fr/dummy/form2mail.php'; $post['email'] = 'email@test.com'; $post['message'] = 'Hello World :)'; $post['ip'] = $REMOTE_ADDR; echo '<pre>'; print_r(httpPost($Host, $URI, $Referer, $post)); echo '</pre>'; ?>

Conclusion :


J'utilise ce script sur mon site. Les visiteurs postent à partir d'un formulaire. Un script PHP récupère les données et en ajoute d'autres.

On peut aussi bien passer directement $_POST au script en faisant httpPost($Host, $URI, $Referer, $_POST) mais ça manque d'intérêt...

---
update:
Il faut mettre votre login free à la place de LOGIN dans $Referer, car si vous laissez adpro22, c'est moi qui recoit votre mail :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
super, je savais faire des requêtes HTTP 1.0, je cherchais comment faire des requêtes POST :-) j'ai lu (une partie j'ai pas eu le courage) de la RFC du HTTP 1.1, mais c terrible mdr :-P thx pr ça, je l'ajoute à mes favoris, je vais ajouter ça à ma classe sockets C++ ;-)

ciao

je te mets 8, parce que suis content :-)
yomgui_95
Messages postés
9
Date d'inscription
jeudi 25 septembre 2003
Statut
Membre
Dernière intervention
1 décembre 2004
-
hum bo boulot ! ca a l air bien pratique en effet, et cela pourrait il permettre d avoir un guestbook avec un hebergeur ne supportant pas le chmod ??
en fait voila j ai script tout simple :
le formulaire :
[cpp]<form method= post action=writeguest.php
onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >


,
----
Mail :,
,
----
Message:, <textarea name=message rows=4 cols=47></textarea>




nom
|



</form>

<?php include("guestbook.doc"); ?>/cpp

et la ou ca traite les infos :
[cpp]<?
//Ouverture du fichier en écriture
$fp = fopen("guestbook.doc",a);

//On convertit les caracteres html
if ( !isset( $_POST['nom'] ) ||
!isset( $_POST['mail'] ) ||
!isset( $_POST['message'] ) )
exit( "marche pas on trafique pas mon formulaire!" );
$nom = htmlspecialchars( $_POST['nom'] );
$mail = htmlspecialchars( $_POST['mail'] );
$message = stripslashes(nl2br(htmlentities( $_POST['message'] )));
$d = date ( "d/m/Y H:i:s" );

$page = "";
$lemail = "[guestbook.php Retour au guestbook]

/cpp

enfin un fichier.doc stokant les msg ....
- comment se servir de cette methode post dans mon cas ??(place du script etc ..), mon hebergeur c est wanadoo...
- ou alors comment peut on se servir du script chmod () dans mon cas, si oui comment ?:(

voila merci d avance de vot aide :)
yomgui_95
Messages postés
9
Date d'inscription
jeudi 25 septembre 2003
Statut
Membre
Dernière intervention
1 décembre 2004
-
hum bo boulot ! ca a l air bien pratique en effet, et cela pourrait il permettre d avoir un guestbook avec un hebergeur ne supportant pas le chmod ??
en fait voila j ai script tout simple :
le formulaire :
[cpp]<form method= post action=writeguest.php
onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >


,
----
Mail :,
,
----
Message:, <textarea name=message rows=4 cols=47></textarea>




nom
|



</form>

<?php include("guestbook.doc"); ?>/cpp

et la ou ca traite les infos :
[cpp]<?
//Ouverture du fichier en écriture
$fp = fopen("guestbook.doc",a);

//On convertit les caracteres html
if ( !isset( $_POST['nom'] ) ||
!isset( $_POST['mail'] ) ||
!isset( $_POST['message'] ) )
exit( "marche pas on trafique pas mon formulaire!" );
$nom = htmlspecialchars( $_POST['nom'] );
$mail = htmlspecialchars( $_POST['mail'] );
$message = stripslashes(nl2br(htmlentities( $_POST['message'] )));
$d = date ( "d/m/Y H:i:s" );

$page = "";
$lemail = "[guestbook.php Retour au guestbook]

/cpp

enfin un fichier.doc stokant les msg ....
- comment se servir de cette methode post dans mon cas ??(place du script etc ..), mon hebergeur c est wanadoo...
- ou alors comment peut on se servir du script chmod () dans mon cas, si oui comment ?:(

voila merci d avance de vot aide :)
cs_BarbeRousse38
Messages postés
21
Date d'inscription
vendredi 19 décembre 2003
Statut
Membre
Dernière intervention
21 février 2007
-
yomgui_95 > c'est du PHP que l'on te propose, ça risque pas de fonctionner chez Wanadoo, ils ne supportent pas le PHP (ni même le SQL)

Avec Wanamou tu peut que avoir du html et du javascript, c'est domage. Mais essaye de leur écrire pour demander qu'il passent au PHP ;) on peut toujours éspérer.
ADPro22
Messages postés
127
Date d'inscription
mercredi 18 juillet 2001
Statut
Membre
Dernière intervention
27 octobre 2004
-
Attention, ce script n'est pas là pour traiter des données envoyées par la méthode post mais pour en envoyer. Dans ton script, tu veux traiter les données envoyées par le formulaire, par expédier ces données vers un autre script.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.