Accueil > > > HTTP ET LA MÉTHODE POST
HTTP ET LA MÉTHODE POST
Information sur la source
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
- <?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>';
- ?>
<?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 :)
Historique
- 18 décembre 2005 23:03:13 :
- - enlevage de "/r/n" inutiles et trompeurs
- ajout de mots clefs
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
formulaire a envois double [ par Henixiz ]
est ce que cest possible d'envoyer un formulaire a 2 e-mail a la fois !voici mon code source<? $Emaildest="mon_email@et_la.net"; function Formulai
Différence entre post et get? [ par chris81 ]
bonjour,pourriez vous m'expliquer la difference entre post et get mis a part le fait que le get met les valeurs dans la barre d'adreese.mercihttp://ww
Incompatibilité Mac/PC ... Help [ par Nownow ]
Etant obligés de travailler sous mac, nous travaillons notre page d'affichage php de notre newletter au bloc note. Nous avons cependant voulu fai
Formulaire+base de données [ par CHABRY ]
Salut! J'ai un formulaire dans lequel je vais saisir les informations sur un livre, et à partir d'un liste nommeé operation, je peux c
http post et receive [ par DevelMan ]
Bonjour,Je dois ecrire un prog pour recevoir des donnees via http.tout fonctionne bien, sauf si les donnees contiennent des caracteres du genre '
probleme entre formulaire et base de donnees [ par mictif ]
j'ai un probleme avec mon formulaire que je veux enregistrer dans ma base de données voici l'erreur : Notice: Undefined index: code in g:\easyp
données post data et http_referrer [ par crazykamel ]
Bonjour !Comment faire pour valider un mini formulaire que j'appelle par un include sur toutes les pages (recommander un site) sans recharger les
Problème de formulaire puis requete [ par pbreaker ]
Bonjour voila je sai pas ce quie ce passe avec ce formulaire mais rien marche alors qu'il me semble correcteDonc y aurai t il qq un qui peu
envoi de pi??ce jointe par mail [ par arnold002 ]
Bonjour ¨¤ tous,J'ai un gros probl¨¨me pour envoyer une pi¨¨ce jointe par email.Voici mon code : <?php$bouton <FONT c
Données d'une textarea [ par Xaviou ]
Bonjour,J'ai besoin d'un petit coup de pouce:Je crée un formulaire "Contacts" dont voici le source:<table align="center" border=0 cellspacing=
|
Derniers Blogs
PARUTION DE MON LIVRE SUR WPF 4PARUTION DE MON LIVRE SUR WPF 4 par odewit
La 2e édition de mon livre sur WPF sort aujourd'hui en version numérique et lundi en version papier :-)
L'ouvrage présente de façon approfondie les fonctionnalités de WPF 4 : graphisme 2D et 3D, animation, multimédia, interfaces utilisateur, databind...
Cliquez pour lire la suite de l'article par odewit EDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTINGEDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTING par Matthieu MEZIL
Une des raisons pour lesquelles j'adore l'Entity Framework est la puissance de son mapping. Beaucoup de développeurs pour ne pas dire la plus part n'en n'ont pas conscience. Pour rappel, j'ai réalisé des videos (en anglais) sur le mapping . Certains scena...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES[WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES par jay
Lorsque l'on développe des applications .NET, les exceptions non gérées dans des threads ont le désagréable effet de terminer le processus courant.
Dans l'exemple suivant.......(read more) ...
Cliquez pour lire la suite de l'article par jay WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS)WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS) par coq
Ceux d'entre nous qui analysent des dumps d'applications .NET (notamment ceux créés via WER après un crash) en dehors de l'environnement initial ont probablement tous été confrontés au moins une fois au message suivant, à la saisie d'une commande SOS ...
Cliquez pour lire la suite de l'article par coq
Logiciels
Microsoft Office (2010)MICROSOFT OFFICE (2010)Microsoft Office 2010 offre de nouveaux moyens flexibles et puissants pour optimiser votre travai... Cliquez pour télécharger Microsoft Office SeaMonkey (2.0.7)SEAMONKEY (2.0.7)Le projet SeaMonkey est issu d'un effort communautaire pour developper une application tout en un... Cliquez pour télécharger SeaMonkey Safari (5.0.2)SAFARI (5.0.2)Le navigateur d'Apple a lui aussi été mis à jour, aussi bien dans sa mouture Windows que celle po... Cliquez pour télécharger Safari Mozilla FireFox (4.0 béta 5)MOZILLA FIREFOX (4.0 BéTA 5)Firefox 4.0 béta 5
L'une des nouveautés visibles les plus attendues réside sans doute dans l'a... Cliquez pour télécharger Mozilla FireFox Mozilla Firefox (3.6.9)MOZILLA FIREFOX (3.6.9)Firefox 3.6.9 corrige les problèmes suivants :
* Introduced support for the X-FRAME-OPTION... Cliquez pour télécharger Mozilla Firefox
|