Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement web
  4. PHP
  5. effectuer une requête POST

effectuer une requête POST

Planifié Épinglé Verrouillé Déplacé PHP
4 Messages 4 Publieurs 4.3k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • mars073M Hors-ligne
    mars073M Hors-ligne
    mars073
    a écrit sur dernière édition par
    #1

    Bonjour à tous,
    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 ❤

    à quoi ça sert?
    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...

    /*
    	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' => "[email protected]",		// expéditeur
    		'dest' => "[email protected]",	// destinataire
    		'subject' => $sujet,			// sujet
    		'content' => $content,			// contenu du mail
    		'key' => 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'=>file_get_contents ($url, false, stream_context_create (array ('http'=>array ('method'=>'POST',
    					'header'=>"Connection: close\r\nContent-Type: application/x-www-form-urlencoded\r\n".
    									"Content-Length: $data_len\r\n",
    		'content'=>$data_url)))),
    	'headers'=>$http_response_header
    	);
    	$result = $x['content'];
    
    	if ($result == "OK") {
    		echo "L'envoie a été un succés.";
    	} else {
    		echo "t'as foiré #YOLO.";
    	}
    

    Bonne programmation à tous!
    Cordialement,
    Mars073

    votes-45296e7.png

    Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.
    signature.png
    Signature aléatoire, proposez vous aussi une signature ici!

    1 réponse Dernière réponse
    1
    • AzadA Hors-ligne
      AzadA Hors-ligne
      Azad
      a écrit sur dernière édition par
      #2

      Merci du partage 🙂
      +1 rep. ^^

      Simple, mais néanmoins pratique.

      Administrateur du forum.

      Contactez-moi par message privé ou par mail.

      1 réponse Dernière réponse
      0
      • VansV Hors-ligne
        VansV Hors-ligne
        Vans
        a écrit sur dernière édition par
        #3

        Merci pour ce partage, c'est sympathique.

        1 réponse Dernière réponse
        0
        • sugataseiS Hors-ligne
          sugataseiS Hors-ligne
          sugatasei
          a écrit sur dernière édition par
          #4

          Pour complèter le topic, je vous propose une méthode alternative : CURL

          Avantages :

          beaucoup plus rapide surtout pour les gros fichiers

          plus d'options : possibilité de faire des requètes en https signées par certificat.

          Inconvéniant :

          la librairie php5_curl doit être dispo sur votre serveur.

          Je vous partage un exemple :

          <?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->setUrl($url);
          		}
          		if ($data)
          		{
          			$this->setData($data);
          		}
          	}
          
          	/**
          	 * Set Url
          	 * @param string $url 
          	 */
          	public function setUrl($url)
          	{
          		$this->url = trim($url);
          	}
          
          	/**
          	 * Set data
          	 * @param array $data 
          	 */
          	public function setData($data)
          	{
          		if (is_object($data))
          		{
          			$this->data = get_object_vars($data);
          		}
          		else
          		{
          			$this->data = $data;
          		}
          		$this->data = $this->encodeData($this->data);
          	}
          
          	/* Methodes publiques
          	 * ******************************************************************************************** */
          
          	/**
          	 * Envoi de la requete
          	 * @return mixed : Resultats de la requete
          	 */
          	public function send()
          	{
          		$return = FALSE;
          		if (is_null($this->url))
          		{
          			throw new Exception("URI not found");
          		}
          		else if (is_null($this->data))
          		{
          			throw new Exception("Data not found");
          		}
          		else
          		{
          			$ch = curl_init();
          			curl_setopt($ch, CURLOPT_URL, $this->url);
          			curl_setopt($ch, CURLOPT_POST, $this->rcount($this->data));
          			curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->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 &$value)
          		{
          			if (is_array($value))
          				$this->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->rcount($value));
          				}
          			}
          		}
          		return $count;
          	}
          
          }
          
          /* End of file Post_curl.class.php */
          
          1 réponse Dernière réponse
          1

          Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

          Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

          Grâce à votre participation, ce message peut devenir encore meilleur 💗

          S'inscrire Se connecter
          Répondre
          • Répondre à l'aide d'un nouveau sujet
          Se connecter pour répondre
          • Du plus ancien au plus récent
          • Du plus récent au plus ancien
          • Les plus votés


          • Se connecter

          • Connectez-vous ou inscrivez-vous pour faire une recherche.
          Powered by NodeBB Contributors
          • Premier message
            Dernier message
          0
          • Catégories
          • Récent
          • Mots-clés
          • Populaire
          • Web
          • Utilisateurs
          • Groupes