web.input()和web.data() 遇到特殊字符

使用web.py的时候,web.input()和web.data() 遇到特殊字符,处理方式就会出现差异。

web.input() 可以处理get和post方式传递的输入,对于特殊字符不会自动转码,hashlib.md5等函数如何处理还需要再研究。

web.data() 仅可以传递post方式传递的输入,对于特殊字符会自动转码, hashlib.md5等函数也就可以完美准确地处理了。

例如:

用户输入了[email protected],使用web.input 接收到的就是[email protected],而使用web.data接收到的就是test%40test.com,如果混用这两种方式,而且不做额外的编码和解码,就会出现信息不一致的情况。

我做项目的时候,注册的时候接收用户的输入,使用web.input 接收用户的输入,登陆的时候使用web.data接收用户的输入。结果是:只要用户的密码中包含了特殊字符,就会出现无法登陆的情况。

解决方案是:将注册环节接收用户输入的方式也改为web.data,一方面注册和登陆的接收方式一致了,一方面由于web.data方式会对特殊字符进行转码,避免了大部分潜在的问题!

补充:http://webpy.org/ web.py的官方网站。

猜你喜欢

转载自www.cnblogs.com/lihuanhuan/p/10663801.html