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

Web Perl Discussion :

[CGI][Sessions][serveur INTRASTORE]


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut [CGI][Sessions][serveur INTRASTORE]
    Bien le bonjour a tous et a toutes,

    J'essaye donc de faire fonctionner des sessions sur un serveur intrastore, mais évidemment ca foire!

    Voici mon code de création du cookie : (les **** sont la pour masquer des champs confidentiels...)

    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
    #!/usr/local/bin/perl
     
    sub BEGIN {
        $ENV{DISPLAY} = "*****" ;
    }
     
    use CGI::Session;
    use CGI;
     
    # Initiation de la session
    $session = new CGI::Session("driver:File",undef,{'Directory'=>'/****/tmp'});
     
    # Inscription de la variable dans la session sur le serveur
    $session->param('status','logged');
    $session->expire('+5m');
     
    # Envoi du cookie reliant l'utilisateur à sa session serveur
    $id = $session->id();
    $host = $ENV{'HTTP_HOST'};
    print "Set-Cookie: session=$id; domain=.$host; path=/\n";
     
    exit(0);
    Tous simple... Et comme erreur, j'en recois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > perldebug ****.cgi
    Can't call method "param" on an undefined value at ****.cgi line 14.
    DESTROY created new reference to dead object 'CGI::Session' during global destruction
    J'ai cette erreur que ce soit en ligne de commande ou par le oueb...
    Je précise qu'il n'y a aucun probleme de droits d'acces, que j'ai repris le code de cpan.org et que j'ai essayé de mettre undef a la place de "driver:File"

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Essaie plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session = new CGI::Session();
    Et veux-tu gérer ta session uniquement par cookies ? Ou bien côté serveur aussi ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    A vrai dire, je m'en fout... Le but seul et unique (et j'aurais surement du commencer par la) c'est de savoir si il y a eu une authentification ou pas...

    Je m'explique :

    Je joue avec des fichiers .acl, donc pour un utilisateur, j'ai certains droits. Je me sert de ces droits pour afficher (web) les possibilités de cet utilisateurs.
    Exemple :
    Anatole:lr
    Jules:lrw

    Anatole pourra browser les clients et en voir les informations sans pouvoir les modifier alors que Jules, oui!

    Le probleme, c'est qu'il ne faut pas oublier Mr anonyme... qui lui aussi a des droits...

    Lorsque j'appelle une page comme ceci : http://monsite.com/script.pl , alors il n'y a pas authentification si par contre j'appelle http://monsite.com/AUTH/script.pl , la il faut s'authentifier mais anonyme est possible si il est dans .acl !
    Donc j'ai besoin de savoir a n'importe quel moment si le client du poste X s'est authentifié ou pas pour placer AUTH dans les liens et afficher correctement la page... Et pour répondre avant qu'on me pose la question, je ne mets pas directement AUTH dans les liens sinon la fenetre d'authentification fait du pop-up a chaque fois et c'est ch*ant...

    Je sais c'est long et ch*ant a lire, mais il fallait que j'explique quand meme...

    Ps : ca plante aussi avec CGI::Session(); et toujours le meme message...

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Pour une de mes applis, j'ai fait comme ceci :
    - un seul script perl gère tout;
    - je teste la présence d'un "cookie" http avant chaque appel à la méthode header;
    - à chaque clic dans la page affichée, j'envoie des "param";
    - en fonction du "param", j'ai besoin de savoir si l'utilisateur est authentifié, donc je contrôle le contenu du cookie http, ou je redirige vers la fonction d'authentification si le cookie n'existe pas et j'en crée un à partir du login/pass saisi si les paramètres rentrés sont corrects.

    Je fais tout ceci avec le module CGI. Je t'invite à lire la doc dont le lien est dans ma signature et n'oublie pas use strict, c'est vital

  5. #5
    Invité
    Invité(e)
    Par défaut
    Moi aussi, je n'utilise que CGI. Regarde en signature le code de l'appli que je tente de mettre sur pied. Je créé les cookies via le module CGI uniquement, en y inscrivant le nom du user authentifié.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Effectivement, maintenant ca plante plus...

    Reste a savoir pourquoi il crée pas le cookie alors que je l'ai dans l'en-tete...

    j'ai donc créé un script qui crée le cookie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use CGI;
     
    $query = new CGI;
     
    $cookie = $query->cookie(-name=>'sessionID',
                            -value=>'xyzzy',
                            -expires=>'+1h',
                            -path=>'/opt/****/tmp',
                            -secure=>0);
    print $query->header(-cookie=>$cookie);
     
     
    print "cookie créé!";
    et pour le récupérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    use CGI;
     
    $query = new CGI;
    $cookie = $query->cookie(-name => "sessionID");
     
    print "récupération de $cookie";
    Mais évidemment ca affiche "récupération de " et rien de plus...
    L'en-tete HTTP de la page de création :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Date: Wed, 3 May 2006 11:34:24 GMT, Wed, 03 May 2006 11:34:24 GMT
    Server: IntraStore/2003
    Connection: Keep-Alive
    Content-Type: text/html; charset=ISO-8859-1
    Content-Length: 22
    Last-Modified: Wed, 3 May 2006 11:19:24 GMT
    Expires: Wed, 3 May 2006 11:19:24 GMT
    Set-Cookie: sessionID=xyzzy; path=/opt/****/tmp; expires=Wed, 03-May-2006 12:34:24 GMT
     
    200 OK
    Par contre, sur l'en-tete de la récupération, j'ai que dalle qui parle de cookie... Et j'ai rien non plus dans le dossier temporaire...

    je trouve vraiment pas ce qui bloque

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation de CGI::Session
    Par nixonne dans le forum Web
    Réponses: 5
    Dernier message: 09/05/2006, 22h20
  2. scripts cgi sur serveur apache
    Par jejerome dans le forum Apache
    Réponses: 1
    Dernier message: 26/02/2006, 18h10
  3. cgi::session
    Par lolodev dans le forum Web
    Réponses: 5
    Dernier message: 04/12/2005, 21h26
  4. [installation de modules]CGI::Session
    Par bakonu dans le forum Web
    Réponses: 5
    Dernier message: 05/10/2005, 14h54
  5. Module CGI::Session
    Par dclink dans le forum Modules
    Réponses: 2
    Dernier message: 02/02/2004, 12h56

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