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

Réseau/Web Python Discussion :

cgi et cookies


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut cgi et cookies
    Bonjours,

    Je fais un programme en python qui est exécuté sur un serveu avec cgi. Je me heurte à un problème :
    L'utilisateur se connecte au site, mais pour la suite j'aurais besoin de pouvoir écrire et lire des cookies mais je ne sais pas comment faire.

    j'ai trouvé ça :

    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
    #! /usr/local/bin/python
    #
     
    import Cookie
     
    import os
    import ughtml
     
    # Create a cookie dictionary object
    c1 = Cookie.Cookie()
     
    # Create a cookie in c1
    # This will be temporary and will disappear when the session is closed
    c1["cracker"] = "hello"
    # The RFC says you should always set this but it seems to work ok without it
    c1["cracker"]["version"] = 1
     
    # Create another one
    c1["bisquit"] = "whatever"
    # Make the browser store it for one hour
    c1["bisquit"]["max-age"] = 3600	# Time to keep, in seconds
    c1["bisquit"]["expires"] = 3600	# Obsolete, but Netscape still seems to require it
    c1["bisquit"]["version"] = 1
     
    # Print the headers that sets the cookies
    print c1
     
    # Print an ordinary html page
    ughtml.printContentType()
    ughtml.printHeaders("ug's Python cookie test")
     
    # Print the cookie headers, as they were returned
    print "<h3>Cookies set by this script</h3>"
    print "<pre>"
    print c1
    print "</pre>"
     
    # Load and print any cookies that were received
    print "<h3>Received cookies</h3>"
    try:
        cookie = os.environ["HTTP_COOKIE"]
    except KeyError:
        print "No cookies were received"
    else:
        print "HTTP_COOKIE="+cookie
        print "<p>"
        c2 = Cookie.Cookie()
        c2.load(os.environ["HTTP_COOKIE"])
        print "<pre>"
        print c2
        print "</pre>"
     
        print "If you run it more than once within"
        print "a session, the cookies set by this script"
        print "will also be received from the browser."
     
    # Finish the page
    ughtml.printFooter()
    pensez vous que pour dans mon cas ça marche ?


    merci

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Armadeus Voir le message
    pensez vous que pour dans mon cas ça marche ?
    Pourquoi ne pas tout simplement essayer ?

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    c'est ce que je fais depuis tout à l'heur, et j'obtient l'erreur :

    Warning (from warnings module):
    File "C:\Python25\lib\Cookie.py", line 710
    DeprecationWarning)
    DeprecationWarning: Cookie/SmartCookie class is insecure; do not use it
    Je me suis dit que le faite que je test en local pouvait poser un problème (mais aprés réflexion je pense que non ^^)

    J'ai essayé de mettre ce brin de code dans mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        import Cookie
        c1 = Cookie.Cookie()
        if c1.has_key("d"):
            print c1["d"]
        else:
            c1["d"] = "hello"
            print "cookie crée"
        print c1
    Et résultat j'ai toujours "cookie crée" quand je réactualise la page

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Armadeus Voir le message
    c'est ce que je fais depuis tout à l'heur, et j'obtient l'erreur
    Ah voila, comme ça c'est clair.

    Tout est dans le message d'erreur: ce n'est pas sécurisé, ne t'en sers plus.
    DeprecationWarning: Cookie/SmartCookie class is insecure; do not use it
    De plus ce n'est pas vraiment une erreur, mais un avertissement.

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Ok merci,

    Et donc comment pourrais-je faire pour lire/écrire sur les cookies ?

    merci

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ca c'est lié au protocole HTTP. Tu peux trouver plein de ressources sur internet à ce sujet.

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Juste une petite question qui me turlupine :

    c'est le serveur ou le client qui éxécute le script (je pense que c'est le serveur mais je ne suis pas sûre ^^)

    merci

  8. #8
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Les cookies servent à sauvegarder un paramètre émis par le serveur.
    C'est donc du serveur qu'il provient.

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    J'ai réussi à faire marcher mon script mais je ne vois pas apparaître les cokies que je viens de crée (en utilisant pour les voirs par exemple firefox). Si je crés un cookie sur une console et que j'essai de l'ouvrir depuis une autre, là aussi, il n'y a rien.

    Si vous avez une idée sur mon prooblème ...


    Merci

    PS : Et si je voulais par exemple l'IP du client, comment pourrais-je faire ? (en python bien-sur)

  10. #10
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Armadeus Voir le message
    Si je crés un cookie sur une console et que j'essai de l'ouvrir depuis une autre, là aussi, il n'y a rien.
    Sur une console... Pourrais-tu nous montrer le code où tu donnes le cookie ?

    PS : Et si je voulais par exemple l'IP du client, comment pourrais-je faire ? (en python bien-sur)
    Dépendant du serveur que tu utilises, tu peux disposer de la variable d'environnement REMOTE_ADDR (et si mes souvenirs sont justes).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.getenv("REMOTE_ADDR")

  11. #11
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Tout d'abord désolé du temps de réponse ...



    J'ai compris la petite erreur que j'ai faite en testant mon script sur console

    J'ai donc refait un script que voici :

    #!/usr/bin/python

    # -*- coding: cp1252 -*-



    print "Content-type: text/html\n\n"



    import Cookie
    c1 = Cookie.Cookie()

    if c1.has_key("T"):
    print "cookies present | "

    else:
    c1["T"] = "hello"
    print "cookies non present, creation | "

    print " cookie : "+str(c1["T"])+" | "


    print " | fin"
    L'orsque je le test, j'ouvre la page une fois dans un premier onglet, reponse cookies non present, creation |

    et j'en réouvre une deuxième dans un deuxième onglet (sans même fermer le premier) et là j'obtient la même chose au lieu de cookies present |


    Où est mon erreur ?

    PS : si vous voulez tester le script : http://armadeus.alwaysdata.net/test3.py

Discussions similaires

  1. Problème avec les CGI et les Cookies.
    Par Invité dans le forum Ada
    Réponses: 8
    Dernier message: 29/06/2012, 15h45
  2. cookie en CGI C++
    Par Argol_Medusa dans le forum C++Builder
    Réponses: 1
    Dernier message: 23/08/2007, 06h29
  3. Réponses: 6
    Dernier message: 28/10/2002, 11h34
  4. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  5. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

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