IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Extension CURL] passage paramètre en POST avec CURL


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 72
    Points : 54
    Points
    54
    Par défaut [Extension CURL] passage paramètre en POST avec CURL
    Bonjour à tous,
    J’ai deux pages, A et B.
    Depuis la page A, je dois accéder à la page B et récupérer certaines informations contenues dedans et ce en utilisant des requêtes Xpath.
    Pour l’accès à la page B, j’utilise l’extension CURL de PHP.
    Le problème est que la page B demande des données en POST, et je n’arrive pas à les faire passer.
    Aussi, la page B demande une authentification (donc une session active) donc je me dis peut être que c’est un problème de session (la session de A est différente de celle de B) et aussi quand j’affiche le contenu brut que j’ai récupéré de la page B j’ai le message suivant : « Votre session n'est pas active ou a expiré » et ce malgré que je me sois authentifier sur la page B, dans un autre onglet !
    PS : la page d’authentification de la page B est différente de la page d’où que je veux récupérer les informations.
    Voici le code CURL utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    public function getHtml($url, $data) {
     
    		curl_setopt_array($this->curl, array(
    				CURLOPT_URL					=> $url,
    				CURLOPT_RETURNTRANSFER		=> true,
    				CURLOPT_CONNECTTIMEOUT		=> 30,
    				CURLOPT_USERAGENT			=> "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Chrome/57.0.29",
    				CURLOPT_COOKIESESSION 		=> true,
    				CURLOPT_COOKIEFILE 			=> $this->session,
    				CURLOPT_COOKIEJAR 			=> $this->session,
    				CURLOPT_POST				=> true,
    				CURLOPT_POSTFIELDS			=> $data,
    				CURLOPT_FOLLOWLOCATION 		=> true,
    				CURLOPT_SSL_VERIFYPEER		=> false,
    			)
    		);
    		$out = curl_exec($this->curl);
    		// todo: gestion des erreurs ici
    		return $out;
    	}
     
    //exécution:
    $data = "codeuti=CRT&hdd_NbElement=0&hdd_ParModif=NO&hdd_Parametre=GEN&ot=1020431753";
     
    $url = "www.mapageB.com";
    $html = $simap->getHtml($url,$data);
    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 232
    Points : 15 525
    Points
    15 525
    Par défaut
    Les authentifications à base de sessions utilisent souvent un cookie.
    Si vous vous connectez dans votre navigateur, le cookie sera stocké par le navigateur et le serveur n'y aura donc pas accès.

    Pour vous connecter avec le serveur, vous devrez certainement faire une 1re requête avec nom d'utilisateur et mot de passe pour récupérer le cookie d'identification.
    Et ensuite vous utiliserez le cookie avec la 2e requête qui récupérera le contenu de la page B.

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Dans la discussion qui suit il y a un exemple de passage des données POST avec cURL.

    https://www.developpez.net/forums/d1...re-formulaire/
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 72
    Points : 54
    Points
    54
    Par défaut
    vous explication m'ont été très claires, mais ça ne marche toujours pas !

    voici le code que j'ai fait, et j'obtient toujours le message "session expirée ou inactive) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    class HtmlCurlReader {
     
    	protected $curl;
    	protected $session;
     
    	public function __construct() {
    		$this->curl = curl_init();
    	}
     
    	public function __destruct () {
    		curl_close($this->curl);
    	}
     
    	public function getHtml($url, $data, $cookie) {
    		$this->session = $cookie;
    		curl_setopt_array($this->curl, array(
    				CURLOPT_URL					=> $url,
    				CURLOPT_RETURNTRANSFER		=> true,
    				CURLOPT_CONNECTTIMEOUT		=> 30,
    				CURLOPT_USERAGENT			=> "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Chrome/57.0.29",
    				CURLOPT_COOKIESESSION 		=> true,
    				CURLOPT_COOKIEFILE 			=> $this->session,
    				CURLOPT_COOKIEJAR 			=> $this->session,
    				CURLOPT_POST				=> true,
    				CURLOPT_POSTFIELDS			=> $data,
    				CURLOPT_FOLLOWLOCATION 		=> true,
    				CURLOPT_SSL_VERIFYPEER		=> false,
    			)
    		);
     
    		$out = curl_exec($this->curl);
    		// todo: gestion des erreurs ici
    		return $out;
    	}
    	public function getSession()
    	{
    		return $this->session;
    	}
    }
     
    $res = new HtmlCurlReader();
     
    $data = "id=monidpass=monpass";
    $cookie = tmpfile();
    $url = "mon url de connexion";
     
     
    $html = $res->getHtml($url,$data, $cookie);
     
    $data2 = "champsun=1&champs_deux=2";
    $cookie2 = $res->getSession();
     
    $res2 = new HtmlCurlReader();
    $url2 = "www.mapageB.com";
    $html2 = $res2 ->getHtml($url2,$data2, $cookie2);
     
    echo $html2;

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/12/2016, 11h05
  2. [AJAX] Passage paramètres via post ineffectif
    Par laloune dans le forum jQuery
    Réponses: 2
    Dernier message: 03/06/2015, 08h45
  3. Redirection avec passage de paramètre en POST
    Par Florian.L dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/04/2012, 20h49
  4. [PHP 5.2] Post de Form avec Curl
    Par Zen_Fou dans le forum Langage
    Réponses: 14
    Dernier message: 04/11/2010, 14h08
  5. [cURL] Simuler Javascript (document.cookies) avec cURL
    Par bono2007 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 08/12/2007, 03h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo