Cookies and Python
Newhard, Nick
nnewhard at origin.ea.com
Mon Mar 6 19:27:23 EST 2000
This is my first post to the Python List. Be gentle.
I am relatively new to Python, but even more green when it comes to HTML and
CGI. In the code snippet below, I am trying to create an index.cgi file
that looks for a username cookie and if it doesn't find one, provides and
processes a form for the username and then saves a cookie. (Yes, I realize
there is some redundant cookie setting code in there.)
The problem is, the cookie never seems to get saved between browser sessions
. The odd thing is, an earlier version worked, placing the cookie in a file
(roughly) called nnewhard at myservername[1].txt I've since tried to
duplicate the smaller, working version to no avail.
The IE 5.x browser is running under Windows 98 and I check the
\Windows\Cookies subdirectory for a cookie. The server is the latest Apache
under RedHat Linux.
#!/usr/bin/python
import os, cgi, Cookie, time
# Setup the HTML page
print "Content-type: text/html"
print
print "<HTML><HEAD><TITLE>None</TITLE></HEAD><BODY>"
# create a CGI form
form = cgi.FieldStorage()
# Create a cookie expiration date 10 years from now
ckExpires = time.gmtime(time.time())
ckExpires = (ckExpires[0] + 10,) + ckExpires[1:]
# Create a cookie
# If the env. var. HTTP_COOKIE does not exist, then
# we create an empty cookie.
ck = Cookie.Cookie( os.environ.get("HTTP_COOKIE", "") )
# Check for a saved cookie entry
try:
ckUserName = ck["username"].value
except:
print "Cookie has no username<BR>"
# Check CGI form for a corresponding post parameter
try:
ckUserName = form["username"].value
except:
# Send a form request to the client for a username
print """
<pre>Enter your desired username:</pre>
<form action="index.cgi" method="POST">
<input type="text" name="username">
</form>
"""
else:
print "Incoming form post has username: %s<BR>" % ckUserName
ck["username"] = ckUserName
ck["username"]["expires"] = time.strftime("%a, %d-%b-%Y %T GMT",
ckExpires)
ck["username"]["path"] = "/"
else:
print "Cookie has username: %s<BR>" % ckUserName
ck["username"] = ckUserName
ck["username"]["expires"] = time.strftime("%a, %d-%b-%Y %T GMT",
ckExpires)
ck["username"]["path"] = "/"
# End the HTML page
print "</BODY></HTML>"
More information about the Python-list
mailing list