<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[effectuer une requête POST]]></title><description><![CDATA[<p dir="auto">Bonjour à tous,<br />
Je vais vous partagez un bout de code (que vous pouvez transformer en fonction) assez utile pour faire des requêtes POST (non pas avec du html) tout en PHP <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/2764.png?v=b824361be89" class="not-responsive emoji emoji-android emoji--heart" style="height:23px;width:auto;vertical-align:middle" title="&lt;3" alt="❤" /></p>
<p dir="auto">à quoi ça sert?<br />
quand vous désirez faire un système distant un peu sécurisé ou quand quelqu'un vous ennuie et qu'il n'a pas d'anti-robot sur sa page d'inscription...</p>
<pre><code>/*
	Contexte: ayant bricolé un serveur apache et installé PHP avec beaucoup de mal vous n'arrivez pas à installer un serveur SMTP (gestion d'envoie et de réception d'email).
	Alors pour pallier à ce problème vous utilisez un script distant sur un ftp ayant un serveur smtp vous devez effectuer une requête POST avec des variable: l'espéditeur, le destinataire, le sujet ($sujet), le contenu ($content) et une clé de sécurité. le serveur répond "OK" si l'envoie c'est fait, on récupère la réponse dans la variable $result
*/
	$data = array(
		'exp' =&gt; "contact@mars073.be",		// expéditeur
		'dest' =&gt; "john.smith@hotmail.com",	// destinataire
		'subject' =&gt; $sujet,			// sujet
		'content' =&gt; $content,			// contenu du mail
		'key' =&gt; 0258410025412002541200255210	// clé de sécurité
	);
	$url = "http://mars073.be/smtp.phps";		// url sur la quelle il faut envoyer la requête
	$data_url = http_build_query($data);
	$data_len = strlen($data_url);
	$x = array ('content'=&gt;file_get_contents ($url, false, stream_context_create (array ('http'=&gt;array ('method'=&gt;'POST',
					'header'=&gt;"Connection: close\r\nContent-Type: application/x-www-form-urlencoded\r\n".
									"Content-Length: $data_len\r\n",
		'content'=&gt;$data_url)))),
	'headers'=&gt;$http_response_header
	);
	$result = $x['content'];

	if ($result == "OK") {
		echo "L'envoie a été un succés.";
	} else {
		echo "t'as foiré #YOLO.";
	}
</code></pre>
<p dir="auto">Bonne programmation à tous!<br />
Cordialement,<br />
Mars073</p>
]]></description><link>http://new.melinyel.net/topic/467/effectuer-une-requête-post</link><generator>RSS for Node</generator><lastBuildDate>Fri, 22 May 2026 16:53:35 GMT</lastBuildDate><atom:link href="http://new.melinyel.net/topic/467.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Apr 2014 11:17:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to effectuer une requête POST on Thu, 05 Mar 2015 20:59:41 GMT]]></title><description><![CDATA[<p dir="auto">Pour complèter le topic, je vous propose une méthode alternative : CURL</p>
<p dir="auto">Avantages :</p>
<p dir="auto">beaucoup plus rapide surtout pour les gros fichiers</p>
<p dir="auto">plus d'options : possibilité de faire des requètes en https signées par certificat.</p>
<p dir="auto">Inconvéniant :</p>
<p dir="auto">la librairie php5_curl doit être dispo sur votre serveur.</p>
<p dir="auto">Je vous partage un exemple :</p>
<pre><code>&lt;?php

class Post_curl
{
	/* Attributs
	 * ******************************************************************************************** */

	private $url = NULL;
	private $data = NULL;

	/* Constructeurs et assesseurs
	 * ******************************************************************************************** */

	/**
	 * Constructeur
	 * @param string $url
	 * @param array $data
	 */
	public function __construct($url = FALSE, $data = FALSE)
	{
		if ($url)
		{
			$this-&gt;setUrl($url);
		}
		if ($data)
		{
			$this-&gt;setData($data);
		}
	}

	/**
	 * Set Url
	 * @param string $url 
	 */
	public function setUrl($url)
	{
		$this-&gt;url = trim($url);
	}

	/**
	 * Set data
	 * @param array $data 
	 */
	public function setData($data)
	{
		if (is_object($data))
		{
			$this-&gt;data = get_object_vars($data);
		}
		else
		{
			$this-&gt;data = $data;
		}
		$this-&gt;data = $this-&gt;encodeData($this-&gt;data);
	}

	/* Methodes publiques
	 * ******************************************************************************************** */

	/**
	 * Envoi de la requete
	 * @return mixed : Resultats de la requete
	 */
	public function send()
	{
		$return = FALSE;
		if (is_null($this-&gt;url))
		{
			throw new Exception("URI not found");
		}
		else if (is_null($this-&gt;data))
		{
			throw new Exception("Data not found");
		}
		else
		{
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $this-&gt;url);
			curl_setopt($ch, CURLOPT_POST, $this-&gt;rcount($this-&gt;data));
			curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this-&gt;data));
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
			$return = curl_exec($ch);
		}
		return ($return) ? $return : curl_error($ch);
	}

	/* Methodes privees
	 * ******************************************************************************************** */

	/**
	 * Fonction d'encodage des caracteres
	 * @param array $data
	 * @return array 
	 */
	private function encodeData($array)
	{
		foreach ($array as &amp;$value)
		{
			if (is_array($value))
				$this-&gt;encodeData($value);
			else if (!mb_detect_encoding($value, 'UTF-8', true))
				$value = utf8_encode($value);
		}
		return $array;
	}

	/**
	 * Nombre d'elements d'un tableau recursivement
	 * @param array $array
	 * @return int
	 */
	private function rcount($array)
	{
		$count = 0;
		if (is_array($array))
		{
			foreach ($array as $value)
			{
				if (!is_array($value))
				{
					$count++;
				}
				else
				{
					$count = ($count + $this-&gt;rcount($value));
				}
			}
		}
		return $count;
	}

}

/* End of file Post_curl.class.php */
</code></pre>
]]></description><link>http://new.melinyel.net/post/15950</link><guid isPermaLink="true">http://new.melinyel.net/post/15950</guid><dc:creator><![CDATA[sugatasei]]></dc:creator><pubDate>Thu, 05 Mar 2015 20:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to effectuer une requête POST on Tue, 08 Apr 2014 15:43:52 GMT]]></title><description><![CDATA[<p dir="auto">Merci pour ce partage, c'est sympathique.</p>
]]></description><link>http://new.melinyel.net/post/5097</link><guid isPermaLink="true">http://new.melinyel.net/post/5097</guid><dc:creator><![CDATA[Vans]]></dc:creator><pubDate>Tue, 08 Apr 2014 15:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to effectuer une requête POST on Tue, 08 Apr 2014 12:32:53 GMT]]></title><description><![CDATA[<p dir="auto">Merci du partage <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=b824361be89" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /><br />
+1 rep. ^^</p>
<p dir="auto">Simple, mais néanmoins pratique.</p>
]]></description><link>http://new.melinyel.net/post/5086</link><guid isPermaLink="true">http://new.melinyel.net/post/5086</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Tue, 08 Apr 2014 12:32:53 GMT</pubDate></item></channel></rss>