Problem checking an existing browser cookie
MRAB
python at mrabarnett.plus.com
Sun Aug 29 22:43:07 EDT 2010
More information about the Python-list mailing list
Sun Aug 29 22:43:07 EDT 2010
- Previous message (by thread): Problem checking an existing browser cookie
- Next message (by thread): Problem checking an existing browser cookie
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 30/08/2010 03:07, Nik the Greek wrote: > On 30 Αύγ, 04:51, MRAB<pyt... at mrabarnett.plus.com> wrote: >> On 30/08/2010 02:14, Νίκος wrote: >> >>> On 29 Αύγ, 21:44, MRAB<pyt... at mrabarnett.plus.com> wrote: >>>> On 29/08/2010 06:34, Νίκος wrote: >> >>>>> On 28 Αύγ, 23:15, MRAB<pyt... at mrabarnett.plus.com> wrote: >>>>>> On 28/08/2010 20:37, Íßêïò wrote: >> >>>>>>> On 22 Áýã, 10:27, Íßêïò<nikos.the.gr... at gmail.com> wrote: >>>>>>>> On 16 Áýã, 14:31, Peter Otten<__pete... at web.de> wrote: >> >>>>>>>>> Íßêïò wrote: >>>>>>>>>> # initializecookie >>>>>>>>>> cookie=Cookie.SimpleCookie() >>>>>>>>>> cookie.load( os.environ.get('HTTP_COOKIE', '') ) >>>>>>>>>> mycookie =cookie.get('visitor') >> >>>>>>>>>> if ( mycookie and mycookie.value != 'nikos' ) or re.search( r'(cyta| >>>>>>>>>> yandex|13448|spider|crawl)', host ) is None: >>>>>>>>>> blabla... >>>>>>>>>> ======================== >> >>>>>>>>>> I checked and Chrome has acookienames visitor with a value ofnikos >>>>>>>>>> within. >>>>>>>>>> So, i have to ask why the if fails? >> >>>>>>>>> Maybe it's because != != == >> >>>>>>>> Iwant ti if code block to be executed only if the browsercookienames >>>>>>>> visitor fetched doesnt cotnain the vbalue of 'nikos' >> >>>>>>>> Is there somethign wrong with the way i wrote it? >> >>>>>>> Please do help me with this too becaus eif i dont solve this my >>>>>>> website keeps count my each visit like iam a guest visitor! >> >>>>>> Print out mycookie, repr(mycookie.value) (unless mycookie is None) and >>>>>> repr(host). Then follow the code yourself to see whether the condition >>>>>> is True. >> >>>>> print mycookie outputs 'None' >> >>>>> Thts weird because i check with the browser and the cookie is there! >> >>>> Just because you can see it doesn't mean your code can. >> >>>>> print repr(host) outputs '78-236-176.adsl.cyta.gr' >> >>>>> repr(mycookie.value) (unless mycookie is None) >> >>>>> and also >> >>>>> print mycookie.value gives an error too. Maybe there is not a value >>>>> method? >> >>>> If mycookie is None, then it's not surprising that doesn't have 'value'. >> >>>> In summary, mycookie is None, so: >> >>>> mycookie and mycookie.value != 'nikos' >> >>>> is false (actually None, which is treated as false). >> >>>> host == '78-236-176.adsl.cyta.gr', so: >> >>>> re.search(r'(cyta|yandex|13448|spider|crawl)', host) >> >>>> finds 'cyta' and the search returns a match. >> >>>> false or false == false >> >>>> blabla... isn't executed. >> >>> Lets forget the 2nd or argument, ill put it off >> >>> so we have this now >> >>> if ( mycookie and mycookie.value != 'nikos' ): >>> #do stuff as long as there ins't a cookie names visitor with a >>> value of nikos in the broswer >> >>> What does it mean practically that the mycookie equals to None? >>> That mycookie doesnt exist? >> >>> How should i write this if block to mkake sure it checks whether or >>> not the cookie exists? >> >> Under what conditions do you want to execute the block? >> >> This: >> >> mycookie and mycookie.value != 'nikos' >> >> will be true if: >> >> there _is_ a cookie, but its value isn't 'nikos' >> >> I think that you want is to execute the block if someone else is >> visiting. Correct? > > Yes that exactyl right! > > To make sure a cookie is set i have a script names koukos.py > containing this: > > ============================== > #!/usr/bin/python > # -*- coding: utf-8 -*- > > import cgitb; cgitb.enable() > import cgi, os, Cookie > > > # initialize cookie > cookie = Cookie.SimpleCookie() > cookie.load( os.environ.get('HTTP_COOKIE', '') ) > mycookie = cookie.get('visitor') > > htmlBody = [] > > # if visitor cookie does exist > if ( mycookie and mycookie.value == 'nikos' ): > htmlBody.append('ΑΠΟ ΤΗΝ ΕΠΟΜΕΝΗ ΕΠΙΣΚΕΨΗ ΣΟΥ ΘΑ ΣΕ ΥΠΟΛΟΓΙΖΩ ΩΣ > ΕΠΙΣΚΕΠΤΗ ΑΥΞΑΝΟΝΤΑΣ ΤΟΝ ΜΕΤΡΗΤΗ!') > cookie['visitor'] = 'nikos' > cookie['visitor']['expires'] = -1 #this cookie will expire > now > else: > htmlBody.append('ΑΠΟ ΔΩ ΚΑΙ ΣΤΟ ΕΞΗΣ ΔΕΝ ΣΕ ΕΙΔΑ, ΔΕΝ ΣΕ ΞΕΡΩ, ΔΕΝ > ΣΕ ΑΚΟΥΣΑ! ΘΑ ΕΙΣΑΙ ΠΛΕΟΝ Ο ΑΟΡΑΤΟΣ ΕΠΙΣΚΕΠΤΗΣ!!') > cookie['visitor'] = 'nikos' > cookie['visitor']['expires'] = 60*60*24*30*12 > > htmlBody.insert(0, 'Content-type: text/html; charset=UTF-8\n') > > print(cookie) > print('\n'.join(htmlBody)) > ============================= > > Which i seicth on and off according to my desire if i want to be > counted or not! > >> How do you know when it _is_ you? There'll be a cookie which says it's >> you? >> >> If so, then you want to execute the block if there isn't any cookie, or >> if there's a cookie but it doesn't say it's you: >> >> not mycookie or mycookie.value != 'nikos' > > i tried this as you suggested: > > if ( not mycookie or mycookie.value != 'nikos' ) or re.search( r'(msn| > yandex|13448|spider|crawl)', host ) is None: > > but the counter keeps increasing although the cookie named visitor on > my browser exist and also has the valuie of 'nikos'. > > Why it keeps increasing? Doesn't the if code "sees" that the cookie > with a value of "nikos" is present!?!! Previously your regex was r'(cyta|yandex|13448|spider|crawl)' and you said that host was '78-236-176.adsl.cyta.gr', so it matched. Now your regex is r'(msn|yandex|13448|spider|crawl)'. If host is still '78-236-176.adsl.cyta.gr' then of course it doesn't match, so the condition is true.
- Previous message (by thread): Problem checking an existing browser cookie
- Next message (by thread): Problem checking an existing browser cookie
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list