Thanks Anthony for reply! I used session=None because SQLFORM was not 
working on disabling browser cookies.

Why can't you use cookies?

Currently I am using session and cookies, but I am worried about the users 
who disable/block their browser cookies (don't know  % of such users). 

I disabled my browser cookies from  browser settings, then I am not able to 
submit form successfully. So how can I make my web2py application(/SQLFORM) 
to work for users who disable their browser cookies? 
SQLFORM will not work if browser cookies are disabled?


Thank You
- Gaurav Vichare


On Friday, December 30, 2016 at 7:58:15 PM UTC+5:30, Anthony wrote:
>
> By default, forms include a hidden _formkey field, with the formkey also 
> stored in the session. Upon submission, if the submitted formkey does not 
> match one in the session, the submission is rejected -- this prevents CSRF 
> attacks as well as double submission. If you set session=None, you disable 
> this functionality. In that case, you must create your own mechanism to 
> prevent CSRF attacks and double submissions (could be tricky without 
> sessions/cookies).
>
> Why can't you use cookies?
>
> Anthony
>
> On Friday, December 30, 2016 at 4:34:38 AM UTC-5, Gaurav Vichare wrote:
>>
>>
>> After disabling firefox browser cookies, SQLFORM is unable to accept the 
>> form, values are not inserted in db, also it does not show any errors. It 
>> just submits the form and returns new empty form. Does SQLFORM work only 
>> when cookies are enabled?
>>
>> I am able to submit the form successfully by adding argument  session=
>> None and formname=None to SQLFORM.proccess(), but it adds another issue- 
>> form double submission. when page is refreshed after submission, it 
>> resubmits the values.
>>
>> How to use SQLFORM when cookies are disabled, also prevent double 
>> submission?
>>
>> Code:
>>
>> #models/db.py
>> db.define_table("person", Field("name", "string"))
>> # controllers/default.py
>> def add_person():
>>     form = SQLFORM(db.person)    # if form.process(session=None, 
>> formname=None).accepted:
>>     if form.process().accepted:
>>         response.flash = "form accepted"
>>     elif form.errors:
>>         response.flash = "form has errors"
>>     return dict(form=form)
>>
>>
>> <!-- views/default/add_person.html -->
>> {{extend "layout.html"}}
>>
>> {{=form}}
>>
>>
>>
>> Thank You
>>
>> - Gaurav Vichare
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to