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 :

[cURL] Expiration de la session


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut [cURL] Expiration de la session
    Bonjour,

    Je fais un peu de cURL depuis tout à l'heure et il y a quelque chose que je ne comprend pas.
    Avec cURL je lis le contenu d'une page après avoir simulé une connexion (en envoyant les données qu'il faut en POST)
    En parallèle je dois naviguer sur le vrai site (celui que je lis avec cURL)
    Or, plus je lis cette page avec cURL, plus il y a de chance que la session sur le vrai site arrive à expiration.
    Normalement lors d'une consultation normale de ce site, la session arrive à expiration après plusieurs heures. Or, quand je lance la page PHP qui lit ce site grâce à cURL (après connexion), la session du vrai site expire après quelques minutes.

    A quoi ce phénomène est-il du et comment le corriger?

    Merci d'être clair plutôt qu'évasif car je suis un novice.

    Merci d'avance pour vos réponses.

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 702
    Par défaut
    cURL est un client comme un autre de la même façon qu'un navigateur. donc normalement il ne devrait pas y avoir de différence

  3. #3
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut
    Oui mais le fait est là.
    N'y aurait-il pas un rapport avec l'utilisation des cookies?

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 702
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 702
    Par défaut
    tu utilises quoi pour garder la session entre 2 appels de cURL ? les cookies ou bien le passage par l'URL ?

  5. #5
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut
    J'utilise les cookies

  6. #6
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut
    J'ajoute des éléments supplémentaires car mon problème n'est toujours pas résolu.

    Quand j'ouvre le site sur Firefox puis sur IE je dois me connecter à chaque fois et donc la première session (ici Firefox) expire car on s'est connecté depuis un autre navigateur.
    Si la connexion avec cUrl est similaire à celle d'un navigateur il n'y a en effet rien d'étonnant à ce que la session de Firefox expire (comme je me suis connecté depuis un autre "navigateur")

    Je pense donc qu'il faudrait lors de la connexion utiliser la connexion déjà existante si elle existe plutôt que de me reconnecter. Est-ce possible?
    De plus ce que j'aimerais c'est que ma page générée avec cUrl après simulation de connexion au site possède des liens vers le vrai site.
    Or, jusqu'alors quand je clique sur les liens je suis obligé de me reconnecter (alors que je l'ai déjà fait avec cUrl)

    Pour résumer :
    Comment puis-je utiliser la session existante tout du long, c'est à dire que :
    - si j'ouvre ma page cUrl qui contient des liens vers le vrai site et que je ne me suis pas déjà connecté sur le site, je n'ai pas besoin de me reconnecter pour accéder au contenu
    - si j'ouvre ma page cUrl alors que je me suis déjà connecté normalement sur le site, cela n'est pas considéré comme une deuxième connexion mais une reprise de la connexion existante. En outre, comme dans le premier point, les liens ne posent pas problème.

    Ainsi cUrl serait "un prolongement" du site et on n'aurait qu'à se connecter une fois.

    Si je ne suis pas clair n'hésitez pas à me faire des remarques, sinon j'attends impatiemment vos réponses.

    Je met ici le code qui me permet d'effectuer la connexion si ça peut aider :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    session_start();
     
    ///////////////////////////////////////////////
    // Curl Get
    ///////////////////////////////////////////////
     
    function curl_get($url, $cookiefile, $referer = "") {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_REFERER, $referer);
        curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
        $data = curl_exec($curl);
        curl_close($curl);
        return $data;
    }
     
    ///////////////////////////////////////////////
    // Curl Post
    ///////////////////////////////////////////////
     
    function curl_post($url, $cookiefile, $post, $referer = "") {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_REFERER, $referer);
    	curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
        curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
        $data = curl_exec($curl);
        curl_close($curl);
        return $data;
    }
     
    ///////////////////////////////////////////////
    // Neopets Login
    ///////////////////////////////////////////////
     
    function neopets_login($username, $password, $cookiefile) {
    	$arrayPost = array();
    	$arrayPost["username"] = $username;
    	$arrayPost["password"] = $password;
    	$arrayPost["destination"] = "/index.phtml";
        $url = "http://www.neopets.com/login.phtml";
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $arrayPost);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($curl);
        curl_close($curl);
        return $data;
    }
     
    ///////////////////////////////////////////////
    // Connexion à Neopets
    ///////////////////////////////////////////////
     
    function neopets_connect($cookiefile){
    	$username = "user";
    	$password = "password";
    	//Connection
    	$data = neopets_login($username, $password, $cookiefile);
    	//On met la page en français
    	$page = "http://www.neopets.com/index.phtml";
    	$arrayPost = array();
    	$arrayPost["lang"] = "fr";
    	$data = curl_post("http://www.neopets.com/index.phtml",$cookiefile,$arrayPost);
    	return $data;
    }
     
    ///////////////////////////////////////////////
    // Décoder la page
    ///////////////////////////////////////////////
     
    function decodePage($data){
    	$result = utf8_decode($data);
    	return $result;
    }
     
    $cookiefile = tempnam("", "neopets_");
    neopets_connect($cookiefile);
    Merci d'avance (c'est vraiment un langage fantastique cUrl !)

Discussions similaires

  1. expiration d'une session
    Par Akramweb dans le forum Langage
    Réponses: 13
    Dernier message: 09/05/2011, 11h43
  2. [Cookies] Expiration d'une session et message
    Par zatoichi27 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2008, 13h14
  3. [Sessions] Expiration de la session
    Par furtif1 dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 19h49
  4. Réponses: 1
    Dernier message: 09/11/2006, 18h45
  5. Réponses: 5
    Dernier message: 28/05/2006, 14h18

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