Simple Cookie Script: Not recognising Cookie

J

Jimbo

Hi I have a simple Python program that assigns a cookie to a web user
when they open the script the 1st time(in an internet browser). If
they open the script a second time the script should display the line
" You have been here 2 times." , if they open the script agai it
should show on the webpage "You have been here 3 times" and so on.

But for some reason, my program is not assigning or recognising an
assigned cookie & outputing the line "You have been here x times". I
have gone over my code for like 2 hours now I cant figure out what is
going wrong??

Can you help me figure out whats wrong? I have my own cgi server that
just runs on my machine so its not that its the code to recognise/
assign a cookie

Code:
#!/usr/bin/env python

import Cookie
import cgi
import os

HTML_template = """
<html>
  <head>

  </head>
  <body>
    <p> %s </p>
  </body>
</html>
"""

def main():

    # Web Client is new to the site so we need to assign a cookie to
them
    cookie = Cookie.SimpleCookie()
    cookie['SESSIONID'] = '1'
    code = "No cookie exists. Welcome, this is your first visit."

    if 'HTTP_COOKIE' in os.environ:
        cookie = Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])
        # If Web client has been here before
        if cookie.has_key('SESSIONID'):
            cookie['SESSIONID'].value = int(cookie['SESSIONID'].value)
+1
            code = "You have been here %s times." %
cookie['SESSIONID'].value
        else:
            cookie = Cookie.SimpleCookie()
            cookie['SESSIONID'] = '1'
            code = "I Have a cookie, but SESSIONID does not exist"

    print "Content-Type: text/html\n"
    print HTML_template % code


if __name__ == "__main__":
    main()
 
P

Pierre Quentel

Hi I have a simple Python program that assigns a cookie to a web user
when they open the script the 1st time(in an internet browser). If
they open the script a second time the script should display the line
" You have been here 2 times." , if they open the script agai it
should show on the webpage "You have been here 3 times" and so on.

But for some reason, my program is not assigning or recognising an
assigned cookie & outputing the line "You have been here x times". I
have gone over my code for like 2 hours now I cant figure out what is
going wrong??

Can you help me figure out whats wrong? I have my own cgi server that
just runs on my machine so its not that its the code to recognise/
assign a cookie

Code:
#!/usr/bin/env python

import Cookie
import cgi
import os

HTML_template = """
<html>
  <head>

  </head>
  <body>
    <p> %s </p>
  </body>
</html>
"""

def main():

    # Web Client is new to the site so we need to assign a cookie to
them
    cookie = Cookie.SimpleCookie()
    cookie['SESSIONID'] = '1'
    code = "No cookie exists. Welcome, this is your first visit."

    if 'HTTP_COOKIE' in os.environ:
        cookie = Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])
        # If Web client has been here before
        if cookie.has_key('SESSIONID'):
            cookie['SESSIONID'].value = int(cookie['SESSIONID'].value)
+1
            code = "You have been here %s times." %
cookie['SESSIONID'].value
        else:
            cookie = Cookie.SimpleCookie()
            cookie['SESSIONID'] = '1'
            code = "I Have a cookie, but SESSIONID does not exist"

    print "Content-Type: text/html\n"
    print HTML_template % code

if __name__ == "__main__":
    main()

Hi,

You are confusing the cookie sent by the browser to the server - you
get it by os.environ['HTTP_COOKIE'] - and the one sent by the server
to the browser : it it sent in the response headers

You can change method main() like this :

def main():

# defaut cookie to send if web Client is new to the site
set_cookie = Cookie.SimpleCookie()
set_cookie['SESSIONID'] = 1
code = "No cookie exists. Welcome, this is your first visit."

if 'HTTP_COOKIE' in os.environ:
cookie = Cookie.SimpleCookie(os.environ['HTTP_COOKIE'])
if cookie.has_key('SESSIONID'):
# web client has been here before : increment number of
visits
set_cookie['SESSIONID'] = int(cookie['SESSIONID'].value)
+1
code = "You have been here %s times." %
cookie['SESSIONID'].value
else:
code = "I Have a cookie, but SESSIONID does not exist"

print "Content-Type: text/html"
print set_cookie.output() # send cookie to web client
print
print HTML_template % code

- Pierre
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,705
Latest member
Stefkari24

Latest Threads

Top