Re: [Zope] Re: FSSession newbie problem

2000-06-12 Thread Marcello Lupo

Hi,
well the system run now but as i told before if i put a dtml-call
FSSession in all my pages, FSSession open one session for page
everytime i load it. So the cart result everytime containing only the
last item and the files created contain the values.
If i put dtml-call FSSession only in the first document of the e-comm
section it works well, but the file created do not contain the values,
seems to remain in MEMORY.

Should I make some kind of call to FSSession UID in the pages to let the
FSSession to recover the right session and not to open a new one?
Becouse the problem seems to be in fact that the FSSession is not able
to recover the correct ID of the file (from cookie).

I made some try and if i use the site passing via Roxen web server
through the PCGI the cookie is all another becouse the browser has a
cookie that was set from another application on the same server so the
browser seems to pass only that cookie and not the SessionUID cookie.
I tried to clean all my cookies and it worked fine if a go directly to
my pages not passing from the pages that generate the other cookie.

If i pass directly from the Zope port to access the resource it is ok...

Have some ideas to let the browser pass the cookie in a right way? 
I think we can work on the PATH but i don't know how.
Thanks for help.
Bye

Hung Jung Lu wrote:
 
 From: Pavlos Christoforou [EMAIL PROTECTED]
 On Fri, 9 Jun 2000, Marcello Lupo wrote:
   1) Is necessary to call FSSession in every document of the site Yes it
 is neccessary beacuse HTTP is stateless. It will only start a new
 session if FSSession cannot find a valid UID either through a cookie or a
 FORM or as part of te URL
 
 Pavlos: this is the part that is confusing to newbies. FSSession can be made
 in such a way that this initial call can be avoided. HappySession works that
 way: no need for explicit initialization. Matter of fact, in the very first
 call to the HappySession (any dictionary method), it does the initialization
 itself behind the scene. FSSession can do the same thing.
 
 It's a minor detail, but anything to make a newbie's life easier is worth
 it. :)
 
 regards,
 
 Hung Jung
 
 
 Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Re: FSSession newbie problem

2000-06-12 Thread Hung Jung Lu

From: Marcello Lupo [EMAIL PROTECTED]
Have some ideas to let the browser pass the cookie in a right way?
I think we can work on the PATH but i don't know how.

Okie, you have a cookie problem.

You should definitely solve your cookie problem, if you can. But you can 
also use cookie-less sessions by tweaking the URL: you can append SessionUID 
form variable for all your links, and also use hidden fields for all your 
FORM requests.

FSSession and SQLSession both come with URL-modifier feature. For FSSession, 
instead of a link like:

  a href="dtml-var my_url" ...

you would use

  a href="dtml-var "FSSession.url(my_url)"" ...

And for forms, you have to remember to place a hidden field:

  form ...
  input type=hidden name="SessionUID" value="dtml-var 
"FSSession.getName()""
  ...
  /form

regards,

Hung Jung



Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




[Zope] Re: FSSession newbie problem

2000-06-09 Thread Marcello Lupo

Well... the statements are not in the same file but in two different
files. 
This are the statements, the dtml-call FSSession is in the
standard_html_header.


Method list_products:

dtml-var standard_html_header
dtml-unless "FSSession.has_key('carrello')"
dtml-call "FSSession.set('carrello',{})"
/dtml-unless

form action="aggiungi_prodotto" name="carrello" method="get"
target="Carrello"
input type="hidden" name="ID" value="dtml-if
"FSSession.has_key('ID')"dtml-call
"FSSession['ID']+1"dtml-else1/dtml-if"
input type="hidden" name="codice_famiglia" value="dtml-var cod_prod"
input type="hidden" name="codice_prodotto" value="dtml-var
cod_ident"
input type="hidden" name="nome_prodotto" value="dtml-var
nome_prod_it"
input type="hidden" name="prezzo" value="dtml-var prez_lire"
input type="hidden" name="quantita_prodotto" value="1"
input type="image" name="acquista" value="acquista"
src="/ecom/images/freccia2.jpg" border="0"
/form
dtml-var standard-html-footer

Method aggiungi_prodotto:

dtml-var standard_html_header
dtml-var "REQUEST.form"br  # CHECK It prints out fine the form
dictionary!!

dtml-in "REQUEST.form.items()"
dtml-var sequence-item
/dtml-in # CHECK It prints out fine the form
variable!!


dtml-call "FSSession['carrello'].update(REQUEST.form)"
br
dtml-var ID
dtml-var codice_famiglia
dtml-var codice_prodotto
dtml-var nome_prodotto
dtml-var prezzo
dtml-var quantita_prodotto    Them works fine!!

br
dtml-var "FSSession('carrello')"br   It prints out "None"
dtml-var standard_html_footer


The FSSession is in the same folder of my two methods, may be this a
problem?
I tried out the code in a single page and it works fine if you limit to
create the variable 'carrello' in the FSSession. I checked the session
file and it contains :
--cut here
(dp1
S'carrello'
p2
(ds.
 cut here--
The problem is when i try to update the variable 'carrello' with
something. 

I tryed the code you gave to me and it works so i think that the problem
is that i initialize the variable in a method and update it in another
one.
Probably the second method point to a different session file than the
first.

Well thank you for help, for now i will make all in one method and of
you have some ideas to solve it it will be appreciated.

Bye.
Marcello

Hung Jung Lu wrote:
 
 --- In [EMAIL PROTECTED], Marcello Lupo [EMAIL PROTECTED] wrote:
 and macically i obtain the same error.
 this is the code i used:
 dtml-call FSSession
 dtml-unless "FSSession.has_key('cart')"
 dtml-call "FSSession.set('cart',{})"
 /dtml-unless
 
 dtml-call "FSSession['carrello'].update(REQUEST.form)"
 
 I have tried your code with 'cart' everywhere, and it worked just fine. Can
 you print out the form variables?  Are all the statements inside the same
 DTML file? It really works fine. Also, make sure that FSSession is in a
 parent folder of your DTML method. (Root folder is usually a good idea.) Is
 your machine cookie-enabled?
 
 
 dtml-var standard_html_header
 dtml-call FSSession
 dtml-unless "FSSession.has_key('cart')"
   dtml-call "FSSession.set('cart',{})"
 /dtml-unless
 dtml-call "FSSession['cart'].update(REQUEST.form)"
 dtml-var "FSSession['cart']"
 dtml-var standard_html_footer
 
 
 If you still have problems, you can try SQLSession or HappySession. For
 beginners I would recommend HappySession so you don't need to worry about
 the details of FSSession or SQLSession.
 
 Download HappySession from
 http://www.zope.org/Members/hungjunglu/Products/HappySession
 
 Add an HappySession instance in your Zope hierarchy. Then try:
 
 
 dtml-var standard_html_header
 dtml-unless "SESSION.has_key('cart')"
   dtml-call "SESSION.set('cart',{})"
 /dtml-unless
 dtml-call "SESSION['cart'].update(REQUEST.form)"
 dtml-var "SESSION['cart']"
 dtml-var standard_html_footer
 
 
 regards,
 
 Hung Jung
 
 
 Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Re: FSSession newbie problem

2000-06-09 Thread Pavlos Christoforou

On Fri, 9 Jun 2000, Marcello Lupo wrote:

 dtml-var "FSSession('carrello')"br   It prints out "None"

I supose you mean  ...FSSession['carrello'] ..
 
 The FSSession is in the same folder of my two methods, may be this a
 problem?

No it should not

 one.
 Probably the second method point to a different session file than the
 first.

I also have dtml-call FSSession in my standard html header and I never
had problems. I will try a few tests when I return. Please keep me posted
if you continue having troubles.

Pavlos


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Re: FSSession newbie problem

2000-06-09 Thread Pavlos Christoforou

On Fri, 9 Jun 2000, Marcello Lupo wrote:


 
 1) Is necessary to call FSSession in every document of the site or is
 sufficient on the first page (home page of the e-com for example)?
  Becouse i noticed (obviously) that every time it open a file the HD.
 And i think this is a problem because every time it initialize a new
 session passing the new cookie to the Browser (i think).

Yes it is neccessary beacuse HTTP is stateless. It will only start a new
session if FSSession cannot find a valid UID either through a cookie or a
FORM or as part of te URL

 
 2) How may i change the value of an element in a dictionary contained in
 FSSession?
 
   Example: I have the object 'carrello' as in the examples before that
 contain a dictionary passed to it from the form.
   I store the quantity of the item ordered in the value
 'quantita_prodotto' in the object 'carrello'.
   If a user add another piece of that item i need to update the
 'quantita_prodotto' summing to it the new item.
   I think this is possible but i ignore the syntax to do this.
 

As you descripe in your example carrello is a dictinory. So one way is to
make quantitita_prodotto a list and append to it. Something like
untested

dtml-if "FSSession['carrillo'].has_key('quantita_prodotto')"
dtml-call 
"FSSession['carrillo']['quatita_prodotto'].append(REQUEST.form['quatita_prodotto'])"
dtml-else
!-- need to fake the = sign which cannot be used in DTML expr--
dtml-call "FSSession['carrillo'].update({'quatita_prodotto':[]})"

/dtml-if

plus some more logic to check if the variables are empty/correct etc ..

Pavlos


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Re: FSSession newbie problem

2000-06-09 Thread Hung Jung Lu

From: Pavlos Christoforou [EMAIL PROTECTED]
On Fri, 9 Jun 2000, Marcello Lupo wrote:
  1) Is necessary to call FSSession in every document of the site Yes it 
is neccessary beacuse HTTP is stateless. It will only start a new
session if FSSession cannot find a valid UID either through a cookie or a
FORM or as part of te URL

Pavlos: this is the part that is confusing to newbies. FSSession can be made 
in such a way that this initial call can be avoided. HappySession works that 
way: no need for explicit initialization. Matter of fact, in the very first 
call to the HappySession (any dictionary method), it does the initialization 
itself behind the scene. FSSession can do the same thing.

It's a minor detail, but anything to make a newbie's life easier is worth 
it. :)

regards,

Hung Jung


Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




Re: [Zope] Re: FSSession newbie problem

2000-06-09 Thread Pavlos Christoforou

On Fri, 9 Jun 2000, Hung Jung Lu wrote:

 Pavlos: this is the part that is confusing to newbies. FSSession can be made 
 in such a way that this initial call can be avoided. HappySession works that 

You are right. There is no real need for the initial call. It was
initially designed like this because I inherited directly from UserDict
and I was lazy to override every call to check whether FSSession was
initialized or not. Also and more important I wanted to be compatible with
SQLSession so the migrating users from one to the other will do so without
needing to change much of the code. The initial call is useful if you need
to pass parameters, like noCookie or _force_new_session etc etc.

Pavlos


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )




[Zope] Re: FSSession newbie problem

2000-06-08 Thread Hung Jung Lu

--- In [EMAIL PROTECTED], Marcello Lupo [EMAIL PROTECTED] wrote:
and macically i obtain the same error.
this is the code i used:
dtml-call FSSession
dtml-unless "FSSession.has_key('cart')"
dtml-call "FSSession.set('cart',{})"
/dtml-unless

dtml-call "FSSession['carrello'].update(REQUEST.form)"

I have tried your code with 'cart' everywhere, and it worked just fine. Can 
you print out the form variables?  Are all the statements inside the same 
DTML file? It really works fine. Also, make sure that FSSession is in a 
parent folder of your DTML method. (Root folder is usually a good idea.) Is 
your machine cookie-enabled?


dtml-var standard_html_header
dtml-call FSSession
dtml-unless "FSSession.has_key('cart')"
  dtml-call "FSSession.set('cart',{})"
/dtml-unless
dtml-call "FSSession['cart'].update(REQUEST.form)"
dtml-var "FSSession['cart']"
dtml-var standard_html_footer


If you still have problems, you can try SQLSession or HappySession. For 
beginners I would recommend HappySession so you don't need to worry about 
the details of FSSession or SQLSession.

Download HappySession from
http://www.zope.org/Members/hungjunglu/Products/HappySession

Add an HappySession instance in your Zope hierarchy. Then try:


dtml-var standard_html_header
dtml-unless "SESSION.has_key('cart')"
  dtml-call "SESSION.set('cart',{})"
/dtml-unless
dtml-call "SESSION['cart'].update(REQUEST.form)"
dtml-var "SESSION['cart']"
dtml-var standard_html_footer


regards,

Hung Jung


Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com


___
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )