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 :

[Système] Ouvrir une URL


Sujet :

Langage PHP

  1. #21
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Cela veut tout simplement dire que la librairie n'est pas installé...Mais tu as peut être une dernière chance : tenter l'installation cURL

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Kerod
    Cela veut tout simplement dire que la librairie n'est pas installé...Mais tu as peut être une dernière chance : tenter l'installation cURL
    Ben c marrant : ils disent que ces fonctions de curl ont ete ajoutées en php 4.0.2 et moi je suis en version 4.3.3 !!

    Donc logiquement , elles doivent etre indstallées non?

  3. #23
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ajoutés ne veut pas dire installé. Ca veut tout simplement dire que c'est disponible à partir de cette version de php.

    Mais bon refais le phpinfo et là tu sauras si c'est installé mais désactivé. Dans le cas contraire, je suis sur que tout est donné pour réaliser l'installation.

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Oki merci bcp en tt cas de vos aide, je fait et je vous tiens au courant...

  5. #25
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    CURL n'étant pas installé, il te reste les sockets. Voici une fonction que j'utilise quand je dois envoyer un header particulier:

    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
    function monFileGetContents($adresse){
      $page = '';
      $url = parse_url($adresse);
      $url['port']    = isset($url['port'])    ? $url['port']                : '80';
      $url['scheme']  = isset($url['scheme'])  ? strtoupper($url['scheme'])  : 'HTTP';
      $url['path']    = isset($url['path'])    ? $url['path']                : '/';
      if (isset($url['query'])) {
        $url['path'] .= '?'.$url['query'];
      }
      $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 10);
      if (!$fp) {
        echo "Erreur de socket: $errno - $errstr<br />\n";
        return FALSE;
      } else {
        $header  = 'GET '.$url['path'].' '.$url['scheme']."/1.1\r\n";
        $header .= 'Host: '.$url['host']."\r\n";
        $header .= "User-Agent: PHP Script\r\n";
        $header .= "Connection: Close\r\n\r\n";
        fputs($fp, $header);
        while (!feof($fp)) {
           $page.= fgets($fp, 256);
        }
        fclose($fp);    
        return $page;
      }
    }
     
    echo monFileGetContents('http://www.developpez.com');
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par ripat
    CURL n'étant pas installé, il te reste les sockets. Voici une fonction que j'utilise quand je dois envoyer un header particulier:

    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
    function monFileGetContents($adresse){
      $page = '';
      $url = parse_url($adresse);
      $url['port']    = isset($url['port'])    ? $url['port']                : '80';
      $url['scheme']  = isset($url['scheme'])  ? strtoupper($url['scheme'])  : 'HTTP';
      $url['path']    = isset($url['path'])    ? $url['path']                : '/';
      if (isset($url['query'])) {
        $url['path'] .= '?'.$url['query'];
      }
      $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 10);
      if (!$fp) {
        echo "Erreur de socket: $errno - $errstr<br />\n";
        return FALSE;
      } else {
        $header  = 'GET '.$url['path'].' '.$url['scheme']."/1.1\r\n";
        $header .= 'Host: '.$url['host']."\r\n";
        $header .= "User-Agent: PHP Script\r\n";
        $header .= "Connection: Close\r\n\r\n";
        fputs($fp, $header);
        while (!feof($fp)) {
           $page.= fgets($fp, 256);
        }
        fclose($fp);    
        return $page;
      }
    }
     
    echo monFileGetContents('http://www.developpez.com');
    ALors j'ai testé et voila ce que ca me donne :

    "HTTP/1.1 302 Object moved Connection: close Date: Tue, 08 Aug 2006 18:47:42 GMT Server: Microsoft-IIS/6.0 Location: /index.asp Content-Length: 131 Content-Type: text/html Set-Cookie: IDM=ab1cfe66ad4c8fc4cbca90463da0b02b; expires=Sun, 07-Aug-2011 22:00:00 GMT; path=/ Set-Cookie: ASPSESSIONIDAADSAQAA=INCEJNLCMCGDPDGOFALMAFGA; path=/ Cache-control: private Set-Cookie: BIGipServerpool_http_trokers=2181571924.20480.0000; path=/
    Object Moved
    This object may be found here.
    "

    Qu'est ce que cela signifie? Est ce normal? Pourquoi la page n'est qd meme pas afficher?

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Apparemment ce site dépose des cookies. Là je ne vois que CURL pour gérer ça avec CURLOPT_COOKIEJAR pour capturer le(s) cookies et CURLOPT_COOKIEFILE pour les renvoyer.

    De plus, il me semble que cette page est redirigée, si tu veux que CURL suive la redirection -> CURLOPT_FOLLOWLOCATION = true

    Il te faudra donc installer la lib CURL. Très utile par ailleurs.

    Certains sites sont très difficiles à consulter hors navigateur. Il faut parfois finasser. Je veux bien essayer de mon côté mais il me faudra ton url (par MP si confidentiel).
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    J'ai essayé sur l'url que tu m'a transmise par MP et c'était bien un problème de cookie et pas d'user-agent.

    La solution est valable pour tout site avec cookie. Pas seulement celui-ci.

    Méthode universelle:
    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
    $url = 'http://www.le-site-cible.com/index.asp?user=moi&pass=xxxx';
     
    // capture du cookie
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'monCookie.txt');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $page = curl_exec($ch);
    curl_close($ch);
     
    // ensuite on demande la page en injectant le cookie
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'monCookie.txt');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $page = curl_exec($ch);
    curl_close($ch);
    echo $page;
    Méthode rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // plus court et rapide, on joue sur la redirection.
    // Risque de ne pas marcher avec tous les sites avec cookies,
    // seulement ceux avec redirection.
     
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'monCookie.txt');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $page = curl_exec($ch);
    echo $page;
    Attention, important!

    Il faut faire un chmod 777 sur le répertoire ou tu mets le cookie. Ici dans l'exemple il est déposé dans le répertoire qui exécute le script mais tu pourrais le mettre ailleurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/var/cookies/monCookie.txt')
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Ok Donc merci pr vos aide respective... Jusque la tout marche!

    Mnt , jaimerai savoir comment faire pour envoyer un formulaire qui utilise la méthode POST.

    Cad, ke je suis en presence dun formulaire ki me dit de remplir plusieurs champs et a la fin jai un boutton ok mais ki n 'est pas du type submit...


    Donc je c pas cmt faire pr le valider automatiquement..

    Merci

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Il faut donc que tu ailles voir les sources de ce formulaire et que tu notes bien toutes les variables passées (input) y compris les hidden.

    Ensuite, avec ces variables, tu composes une chaîne $post qui sera envoyée par curl exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $post = 'var1=aaaaa&var2=22222&var3=aeiou&var4=012345';
     
    // rajouter les options curl suivantes
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    Attention, il faudra faire un urlencode() sur le contenu des variables si celles-ci contiennent des caractères spéciaux (espaces, accents etc...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $post = 'var1='.urlencode('avec des espaces').'&var2='.urlencode('autre variable')........
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    ok mais ds ces cas la, que devient la variable $url puiske celle ci contient deja qq veriable post?
    pk avant, $url = 'http://www.le-site-cible.com/index.asp?user=moi&pass=xxxx';
    mais now que je met ces variable ds $post, a koi est egal $url= ??

  12. #32
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Une requête HTTP ne peut contenir deux méthodes à la fois (GET et POST).

    Regarde bien les sources de ton formulaire et l'url du formulaire qui POSTe. Je suppose que l'indentification se fait par le cookie de session qui est capturé par les options curl COOKIEJAR/COOKIEFILE.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    voici ce que jai tente de faire en suivant tes conseils :

    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
     
    $post = 'LOGIN=lelogin&PASS=mdp&intN=&id='.urlencode(143574).'&type='.urlencode(3).'&SousSousType=&intCategEnvoi=&action=ADD&condition=&commentaire='.urlencode(produit en bon etat).'&refInterne=&prix1=20&prix2=05&type_envoi=&quantite=1&alerte=OK&intEtatVendeurNeu=&x=13&y=6';
     
    	$filename1 ="http://www.lesite.com/perso/vendre.asp?".$post;
     
     
    	$ch = curl_init($filename1);
    	// jai rajouté les options curl suivantes
    	curl_setopt($ch, CURLOPT_POST, 1);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
     
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_COOKIEJAR, 'monCookie.txt');
    	curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    	$page = curl_exec($ch);
    	echo $page;
    comme tu pe le constater, jai recuperer tous les champs donc et jai aussi laisser vide ceux qui ne sont pas obligatoire...

    Mais en vain , ca marche po...quen pense tu?

    y a surement des erreurs la dedans...

  14. #34
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Déjà, il y a ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urlencode(produit en bon etat)
    il y manque les quotes. Mais je suppose que tu t'en es aperçu.

    Ensuite, tu ne dois pas rajouter le POST derrière l'url. Curl s'en chargera lui-même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filename1 ="http://www.lesite.com/perso/vendre.asp";
    Pour le reste, que renvoie le serveur? Pour vérifier, rajoute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_HEADER, 1);
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    alors qd je fe tes modif, il me renvoie sur la page de log ! bizzard...surtout ke qd je tape l'url alors je n'arrive pas a valider l'offre, a mon avis cette url n'est pas valide...

    ensuite voila ce ke me renvoie la reponse :

    HTTP/1.1 100 Continue HTTP/1.1 200 OK Connection: close Date: Thu, 24 Aug 2006 08:37:17 GMT Server: Microsoft-IIS/6.0 Content-Type: text/html Set-Cookie: IDM=9ff65ce35b86072dcf250b6f5d9576fb; expires=Tue, 23-Aug-2011 22:00:00 GMT; path=/ Set-Cookie: ASPSESSIONIDQSSBATCB=OIPHJBNBOONHOCEKFFIOBOMN; path=/ Cache-control: private Set-Cookie: BIGipServerpool_http_trokers=2198349140.20480.0000; path=/


    Voila...

  16. #36
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    un ptit UP ... (mon ami ripat... )

  17. #37
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Là, je ne vois plus trop quoi te dire. Je t'ai donné tous mes petits trucs pour faire fonctionner Curl.

    Il y a peut-être un mécanisme de vérification de la page qui l'envoie le formulaire, ou du user agent. Pour ça regarde du côté des options
    CURLOPT_REFERER
    CURLOPT_USERAGENT

    Assure-toi ausisi que les cookies envoyés sont biens enregistrés sur ton serveur.

    Et contacte les auteurs du site pour connaître les mécanismes de validation d'un formulaire.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  18. #38
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par ripat
    Là, je ne vois plus trop quoi te dire. Je t'ai donné tous mes petits trucs pour faire fonctionner Curl.
    Merci bcp a toi c vrt tres tres simpas de mavoir autant aider
    Citation Envoyé par ripat
    Il y a peut-être un mécanisme de vérification de la page qui l'envoie le formulaire, ou du user agent. Pour ça regarde du côté des options
    CURLOPT_REFERER
    CURLOPT_USERAGENT
    ms que dois je ragarder exactement?
    Citation Envoyé par ripat
    Assure-toi ausisi que les cookies envoyés sont biens enregistrés sur ton serveur.
    De quel maniere?
    Citation Envoyé par ripat
    Et contacte les auteurs du site pour connaître les mécanismes de validation d'un formulaire.
    ok je v tenter den savoir un peu plus ...

    Encore merci c grace a des personnes comme toi que l'internet prend toutes sa signification

Discussions similaires

  1. Impossible d'ouvrir une URL à partir de l'applet
    Par hurikhan dans le forum Applets
    Réponses: 1
    Dernier message: 11/04/2007, 11h02
  2. Ouvrir une URL avec fopen
    Par dragonspyro93 dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2007, 23h20
  3. [ASP] Ouvrir une url
    Par castaka dans le forum ASP
    Réponses: 2
    Dernier message: 04/08/2005, 11h02
  4. Ouvrir une URL en C/C++ sous Win32
    Par pykoon dans le forum MFC
    Réponses: 7
    Dernier message: 26/04/2005, 09h08

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