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

Langage PHP Discussion :

Aide script php/curl [Débutant(e)]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut Aide script php/curl
    Bonsoir tout le monde,

    Je ne sais pas vraiment si je suis au bon endroit pour poser ce sujet ..
    Alors voilà, je suppose que vous devez certainement connaître le site : https://www.newbiecontest.org/
    Je travaille actuellement sur le 1er exercice de la rubrique programmation, histoire d'apprendre les bases, en suivant les infos récolté sur le web j'ai pu ensuite en apprendre plus sur le protocole http, les requete GET et POST .. ainsi que le fonctionnement de la librairie cURL.
    J'ai donc codé ce script; cependant lorsque je le lance en local, je n'ai qu'une page blanche en retour ..
    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
      <html>
    	<body>
    		<title>Newbie</title>
    <?php
     
    $content = file_get_contents("https://www.newbiecontest.org/epreuves/prog/prog1.php/");
    $url="https://www.newbiecontest.org/epreuves/prog/prog1.php";
    header("https://www.newbiecontest.org/epreuves/prog/verifpr1.php?solution=nombre/");
     
    // Tableau contenant les options de téléchargement
    $options=array(
    		CURLOPT_URL				=> $url, // Url cible 
    		CURLOPT_RETURNTRANSFER	=> true, // Retourner le contenu dl dans une chaine
    		CURLOPT_HEADER	 		=> false // Ne pas inclure l'entête de réponse du serveur
    );
     
    ////////// MAIN
     
    // Création d'une nouvelle ressource cURL
    $CURL=curl_init();
    //Erreur suffisante pour justifier un die()
    if(empty($CURL)){die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.")}
     
          // Configuration des options de téléchargement
    	  curl_setopt_array($CURL, $options);
     
    	  // Exécution de la requête
    	  $content=curl_exec($CURL);     // Le contenu dl est enregistré dans la variable $content
     
    	  // Si il s'est produit une erreur lors du téléchargement
    	  if(curl_errno($CURL)){
    			 // Le message d'erreur correspondant est affiché
    			 echo "ERREUR curl_exec : ".curl_error($CURL);
    	  }
     
    // Fermeture de la session cURL
    curl_close($CURL);
     
    ?>
     
    	</body>
    </html>
    J'aimerais avoir votre avis, vos critiques sur ce code

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Quel est ton but exactement ?

    Si c'est télécharger le contenu de la page https://www.newbiecontest.org/epreuves/prog/prog1.php/ alors tu le fais déjà avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = file_get_contents("https://www.newbiecontest.org/epreuves/prog/prog1.php/");
    Pas besoin de CURL pour ça. (c'est d'ailleurs assez rare d'avoir besoin de CURL pour des opérations de base puisque tu peux quasi tout faire avec les stream de php).

    Ton appel à header() n'a aucun sens.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Bien merci pour ta réponse grunk.

    Etant novice j'ai un peu de mal, je pensais que l'utilisation de cURL pouvait apporté un complément au langage php; et donc renvoyé la valeur télécharger depuis https://www.newbiecontest.org/epreuves/prog/prog1.php/

    Je peux donc effectuer le renvoi de la valeur en question avec un stream php ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    CURL peut avoir de l'intérêt dans certains cas complexes. Mais quand il sagit de fait un simple GET ou POST avec ou sans identifiant les streams suffisent amplement.
    Tu peux aller plus loin avec les streams en leur ajoutant un context : http://php.net/manual/en/function.st...ext-create.php

    Pour en revenir à ton code dans l'état , le file_get_contents est équivalent au code CURL.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Je réponds un peu tard, désolé grunk, j'ai chopé une grippe carabinée la semaine dernière ..

    Bien, en gros ce qu'il me reste à faire dans mon code c'est de tout simplement retourné la valeur téléchargé par file_get_contents sur une nouvelle page
    Je t'avoue un peu que j'suis un peu paumé, j'ai tenté avec la fonction explode, la syntaxe preg_match_all ..
    Et je vois pas trop non plus comment renvoyer le nombre sous la forme de : verifpr1.php?solution=nombre

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Je suis pas bien sur de comprendre ce que tu veux faire.

    Télécharger le contenu d'une page peut se faire via un file_get_contents() (ou avec CURL)
    Envoyer du contenu sur une URL en POST ou en GET peut se faire via un file_get_contents() (ou avec CURL).

    Je vois que sur les url fournies , il y'a une histoire de session , il faut donc peut être passer un cookie avec des requêtes.

    Bref sans le détai lexact de ce que tu veux faire dur de t'aider plus
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Tu as raison, je me suis mélangé les pinceaux depuis le début avec ce topic ...

    C'est très simple; je souhaite résoudre ce problème sur newbie-contest:
    Ouvrez la page prog1.php.
    Elle vous attribue alors un nombre aléatoire que vous devez renvoyer à la page verifpr1.php en moins de 1 seconde.
    Vous devez renvoyer ce nombre sous la forme : verifpr1.php?solution=nombre. Il est nécessaire de coder un programme en local pour réussir cette épreuve.

    Etant débutant, notamment en programmation web, j'ai un peu de mal avec le php et concernant cette exercice j'avais besoin d'un petit coup de pouce car je ne voyais pas quelle fonction pouvait m'aider à renvoyer à la page verifpr1.php le nombre aléatoire.
    J'ai compris qu'avec file_get_contents ( ), on téléchargeais le contenu de la page. Il ne me reste plus cas utilisé la fonction file_put_contents ( ) pour envoyer du contenu sur une URL en POST ou GET.

    Il ne me reste plus cas me mettre également aux fourneaux pour cette histoire de cookies à passer ... ( Bon elle était simple celle là .. )

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Je t'ai dis une bêtise , c'est bien file_get_contents qu'il faut utiliser dans tous les cas.

    Un exemple rapide extrait de la doc php et utilisant un cookie :

    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
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: fr\r\n" .
                  "Cookie: foo=bar\r\n"
      )
    );
     
    $context1 = stream_context_create($opts);
    $nombre= file_get_contents('http://www.example.com/prog1.php', false, $context);
     
     
    $opts = array(
      'http'=>array(
        'method'=>"POST",
        'header'=>"Accept-language: fr\r\n" .
                  "Cookie: foo=bar\r\n"
      )
    );
    $context2 = stream_context_create($opts);
    $result = file_get_contents('http://www.example.com/verifpr1.php?solution='.$nombre, false, $context);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    D'accord; donc si j'ai bien tout suivi la fonction file_get_contents permet aussi bien de télécharger le contenu de la page que de renvoyer ce contenu sur une autre session ?

    Il faut que j'arrive à décortiquer le code que tu viens de m'envoyer, je ne connais pas encore tout les éléments dessus ..

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Si tu travail sur un fichier file_get_contents va lire son contenu.
    Si tu travail avec une url file_get_contents fait exactement la même chose , sauf que, pour "ouvrir" l'url et lire son contenu il faut la demander au serveur et donc envoyer une requête http.

    Si tu ne modifie pas le context du flux (au contraire de mon code précédent) la requête http est complètement transparente et tu ne sais pas ce qui se passe.

    Dans ton cas tu vas avoir besoin de modifier le context pour faire du GET ou du POST , passer un cookie , éventuellement ajouter une entête , etc ...
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Si tu ne modifie pas le context du flux (au contraire de mon code précédent) la requête http est complètement transparente et tu ne sais pas ce qui se passe.

    Dans ton cas tu vas avoir besoin de modifier le context pour faire du GET ou du POST , passer un cookie , éventuellement ajouter une entête , etc ...
    Je pense avoir compris le mécanisme de cette opération ..

    Il ne me reste plus qu'à étudier/regarder comment envoyer une requete GET ou POST, passer un cookie et également regarder comment ajouter une entête ..

Discussions similaires

  1. [eCommerce] Aide scripts php
    Par Yoyo69100 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 07/07/2011, 16h27
  2. Aide script PHP
    Par popsantiago dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2006, 23h18
  3. A l'aide svp j'ai de gros problemes sur un script php
    Par schtek2 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 02h25
  4. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 19h08

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