|
Technical Interview Questions
C++ Interview Questions
Php Interview Questions
Xml
Interview Questions
C Interview Questions
.........More
Soft Skills
Communication Skills
Leadership Skills
.........More
|
|
Python Interview Questions and Answers
How to use Cookies for Web python ?
HTTP is said to be a stateless protocol. What this means
for web programmers is that every time a user loads a
page it is the first time for the server. The server
can't say whether this user has ever visited that site,
if is he in the middle of a buying transaction, if he
has already authenticated, etc.
A cookie is a tag that can be placed on the user's
computer. Whenever the user loads a page from a site the
site's script can send him a cookie. The cookie can
contain anything the site needs to identify that user.
Then within the next request the user does for a new
page there goes back the cookie with all the pertinent
information to be read by the script.
* Set the Cookie;
There are two basic cookie operations. The first is to
set the cookie as an HTTP header to be sent to the
client. The second is to read the cookie returned from
the client also as an HTTP header.
This script will do the first one placing a cookie on
the client's browser:
#!/usr/bin/env python
import time
# This is the message that contains the cookie
# and will be sent in the HTTP header to the client
print 'Set-Cookie: lastvisit=' + str(time.time());
# To save one line of code
# we replaced the print command with a '\n'
print 'Content-Type: text/html\n'
# End of HTTP header
print '<html><body>'
print 'Server time is', time.asctime(time.localtime())
print '</body></html>'
The Set-Cookie header contains the cookie. Save and run
this code from your browser and take a look at the
cookie saved there. Search for the cookie name,
lastvisit, or for the domain name, or the server IP like
10.1.1.1 or 127.0.0.1.
The Cookie Object
The Cookie module can save us a lot of coding and errors
and the next pages will use it in all cookie operations.
#!/usr/bin/env python
import time, Cookie
# Instantiate a SimpleCookie object
cookie = Cookie.SimpleCookie()
# The SimpleCookie instance is a mapping
cookie['lastvisit'] = str(time.time())
# Output the HTTP message containing the cookie
print cookie
print 'Content-Type: text/html\n'
print '<html><body>'
print 'Server time is', time.asctime(time.localtime())
print '</body></html>'
It does not seem as much for this extremely simple code,
but wait until it gets complex and the Cookie module
will be your friend.
* Retrieve the Cookie;
The returned cookie will be available as a string in the
os.environ dictionary with the key 'HTTP_COOKIE':
cookie_string = os.environ.get('HTTP_COOKIE')
The load() method of the SimpleCookie object will parse
that string rebuilding the object's mapping:
cookie.load(cookie_string)
Complete code:
#!/usr/bin/env python
import Cookie, os, time
cookie = Cookie.SimpleCookie()
cookie['lastvisit'] = str(time.time())
print cookie
print 'Content-Type: text/html\n'
print '<html><body>'
print '<p>Server time is', time.asctime(time.localtime()),
'</p>'
# The returned cookie is available in the os.environ
dictionary
cookie_string = os.environ.get('HTTP_COOKIE')
# The first time the page is run there will be no
cookies
if not cookie_string:
print '<p>First visit or cookies disabled</p>'
else: # Run the page twice to retrieve the cookie
print '<p>The returned cookie string was "' +
cookie_string + '"</p>'
# load() parses the cookie string
cookie.load(cookie_string)
# Use the value attribute of the cookie to get it
lastvisit = float(cookie['lastvisit'].value)
print '<p>Your last visit was at',
print time.asctime(time.localtime(lastvisit)), '</p>'
print '</body></html>'
When the client first loads the page there will be no
cookie in the client's computer to be returned. The
second time the page is requested then the cookie saved
in the last run will be sent to the server.
* Morsels
In the previous cookie retrieve program the lastvisit
cookie value was retrieved through its value attribute:
lastvisit = float(cookie['lastvisit'].value)
When a new key is set for a SimpleCookie object a Morsel
instance is created:
>>> import Cookie
>>> import time
>>>
>>> cookie = Cookie.SimpleCookie()
>>> cookie
<SimpleCookie: >
>>>
>>> cookie['lastvisit'] = str(time.time())
>>> cookie['lastvisit']
<Morsel: lastvisit='1159535133.33'>
>>>
>>> cookie['lastvisit'].value
'1159535133.33'
Each cookie, a Morsel instance, can only have a
predefined set of keys: expires, path, commnent, domain,
max-age, secure and version. Any other key will raise an
exception.
#!/usr/bin/env python
import Cookie, time
cookie = Cookie.SimpleCookie()
# name/value pair
cookie['lastvisit'] = str(time.time())
# expires in x seconds after the cookie is output.
# the default is to expire when the browser is closed
cookie['lastvisit']['expires'] = 30 * 24 * 60 * 60
# path in which the cookie is valid.
# if set to '/' it will valid in the whole domain.
# the default is the script's path.
cookie['lastvisit']['path'] = '/cgi-bin'
# the purpose of the cookie to be inspected by the user
cookie['lastvisit']['comment'] = 'holds the last user\'s
visit date'
# domain in which the cookie is valid. always stars with
a dot.
# to make it available in all subdomains
# specify only the domain like .my_site.com
cookie['lastvisit']['domain'] = '.www.my_site.com'
# discard in x seconds after the cookie is output
# not supported in most browsers
cookie['lastvisit']['max-age'] = 30 * 24 * 60 * 60
# secure has no value. If set directs the user agent to
use
# only (unspecified) secure means to contact the origin
# server whenever it sends back this cookie
cookie['lastvisit']['secure'] = ''
# a decimal integer, identifies to which version of
# the state management specification the cookie
conforms.
cookie['lastvisit']['version'] = 1
print 'Content-Type: text/html\n'
print '<p>', cookie, '</p>'
for morsel in cookie:
print '<p>', morsel, '=', cookie[morsel].value
print '<div style="margin:-1em auto auto 3em;">'
for key in cookie[morsel]:
print key, '=', cookie[morsel][key], '<br />'
print '</div>
'
Notice that print cookie automatically formats the expire
date.
Page Numbers : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
HTML Interview
Questions for more HTML Interview Questions with Answers
Check
Job Interview Questions
for more Interview Questions with Answers
|