关于处理GET方式提交的含有特殊字符的参数
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
[p]曾经有一位朋友遇到这样一个问题,一产品名称为a&t plastic,在产品列表中就产生了这样的一个联接a&t plastic,在服务器端接收此参数的时候怎么也无法接收到准确的产品名。[br]当时就问我,如何解决,也许是当时忙吧,随口告诉他用htmlencode方法,对方试告诉并没有能解决这个问题。我当时没有再给予回答,偶尔想起实在是对不起,我讲错了。今日闲暇就整理了一下如何处理get方式提交的含有特殊字符的参数,以表内心的愧疚。 [/p]
[p][br]特殊特殊字符的含义[br]————————————————————————————[br]字符 特殊字符的含义 url编码[br]# 用来标志特定的文档位置 %23[br]% 对特殊字符进行编码 %25[br]& 分隔不同的变量值对 %26[br]+ 在变量值中表示空格 %2b[br]表示目录路径 %2f[br]= 用来连接键和值 %3d[br]? 表示查询字符串的开始 %3f[/p]
[p]当键值中含有以上列表中的一些字符时就无法准确的接收其中的值。[br][br]<%[br]'定义含有特殊字符的字符串[br]str="parameter=#%&+=?value"[br]'用urlencode方法进行编码[br]strurlencode=server.urlencode(str)[br]'用htmlencode方法进行编码[br]strhtmlencode=server.htmlencode (str)[br]'显示所有的querysting字符[br]response.write "querystring:"[br]response.write request.querystring [br]'显示传递的参数[br]response.write "
parameter is:" & str &" "[br]response.write "queryparameter="[br]response.write request.querystring ("str")[/p] [p]%>[br][br][br][br] [br][br][br][/p] [p][br]显示结果[br]querystring:[br]parameter is:parameter=#%&+=?value[br]queryparameter= [br]str urlencode method[br]str htmlencode method[br]点击连接1,结果[br]querystring:str=parameter%3d%23%25%26%2b%5c%3d%3fvalue%3c%2fhtml%3e[br]parameter is:parameter=#%&+=?value[br]queryparameter=parameter=#%&+=?value [br]str urlencode method[br]str htmlencode method[br]此时我们发现好象参数值中的没有能正确接收到,当我们查看原代码的时候就会发现其实已经准确的接收到了,原因是“”是标准html tag ,经过浏览器解释后就不会显示出来了。[br]点击连接2,结果[br]querystring:str=parameter=[br]parameter is:parameter=#%&+=?value[br]queryparameter=parameter= [br]str urlencode method[br]str htmlencode method[br]此时就会发现在#后面没有能正确接收到,而是被解释为锚点的开始,在"#"后面的为锚的名称。[/p] [p]结论:在含有以上列表中具有特殊功能的特殊字符的字符串,作为参数用get方式传递时,只需要用urlencode方法处理一下就可以拉。如果不想让浏览者看到含后html tag的字符串的具体值值是,我们可以用htmlencode处理一下。[/p] [p]php中用函数urlencode()就可以拉,这里就不在举例了。[/p] 该文章在 2010/7/5 0:09:15 编辑过 |
关键字查询
相关文章
|