web.input()和web.data() 遇到特殊字符
Posted 一个80后IT之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的官方网站。
以上是关于web.input()和web.data() 遇到特殊字符的主要内容,如果未能解决你的问题,请参考以下文章