On Jan 1, 2011, at 11:33 AM, Arun K.Rajeevan wrote:
> I'm doing following code now, and is working.
> as you can see, no checking on arguments.
> 
> Please show me how to do (or what to check)  any checks on arguments.
> 
> #----------------------------------------------------------------------------------
> def user():
>     import gluon
>     request.args = gluon.storage.List(request.raw_args.split('/')[:])
>     return dict(form=auth())
> #----------------------------------------------------------------------------------

args_match = re.compile(r'([\w@ -][=.]?)+$')

def user():
    import gluon
    request.args = gluon.storage.List(request.raw_args.split('/')[:])
    for arg in request.args:
        if not args_match.match(arg):
            raise HTTP(400, thread.routes.error_message % 'invalid request',
                  web2py_error='invalid args')
    return dict(form=auth())

I don't think you need the [:], since split() will give you a new list already.


About the regexes.

r'([\w@ -][=.]?)+$'

\w is any alphanumeric or underscore

It basically says you can have any of the characters shown in the two sets of 
brackets, with the restriction that you can only have one '=' or '.' in a row.

I'm not sure why some characters (like ':') aren't allowed.

Reply via email to