欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于初学者的问题_关于处理get方式提交的含有特殊字符的参数

更新时间: 2015-04-21 00:00:00 责任编辑: Author_N11

 

点评:原文:http://www.ddcat.net/blog/archives/2007/11/195.html 前几天有个人退群了。起因很简单,他问了一个问题,没人回答,于是说要退群,后来我看到了,给了个链接,说这个问题已经说过好多遍了,于是他就退了。 打开QQ的群列表,我所在的技术群有5个,不包括原来
原文:http://www.ddcat.net/blog/archives/2007/11/195.html
前几天有个人退群了。起因很简单,他问了一个问题,没人回答,于是说要退群,后来我看到了,给了个链接,说这个问题已经说过好多遍了,于是他就退了。
打开QQ的群列表,我所在的技术群有5个,不包括原来参加过又退了的。另外,还去几个论坛里看。看得多了,忽然觉得有几句话想说给初学者。
97年,我开始接触网络,然后开始做网页,直到现在,10年的时间,让我觉得自己有资格说这些,毕竟,我也是从一个“小白”开始。
一、基础学习
无论学什么,想做出些样子来,都是要付出时间与精力的。
网页制作看着很简单,用软件(比如word)都能输出,但是要想做好也不容易,特别是如果想拿网页制作当作养家糊口的本事来做的。那么,拿出点儿时间来看看html和css的基础知识,是必须的。而不是要用到什么就跑去论坛或者群里问,下次再遇到又问。
听过那个相声么?“这个问题我不能马上告诉你,马上告诉你你印象不深。”
事实上就是这样,别人告诉你一句,只能是短期记忆,只有自己查资料甚至走了弯路总结出来的东西才印象深刻。
html和css都是很简单的东西,不涉及算法,不涉及数据库,只要搞清楚含义就可以。
有了基础,其实很多问题都会迎刃而解,真的遇到了不明白的,再问也不迟。
群里也好,论坛里也好,那些水平高的人,一般都是很忙的,一些太基础的问题,可能他们不会回答。而有些问题看上去似乎是简单而且独立的,但是如果对基础知识不熟悉,却又很难解释得清楚。
例如:浮动和定位。
浮动是布局绝对要用到的东西,定位也是,但是其在浏览器内的表现,又涉及到box model、包含块、文档流等等知识,同时,还可能有浏览器的bug在中间捣乱,那么我想没有几个人能用一两句话说清楚这许多的内容,只有去查资料,认认真真地学、实践,才能透彻地理解。
二、明白自己要问什么
经常有人问:“为什么这个没有效果?”,然后给一个截图。
页面是由代码来表现的,不给代码,人家再聪明也没法猜。
经常看到一些帖子,问得问题既模糊,文字又不通顺,错字连篇,让别人看得都糊涂。问问题都这么不认真,还怎么指望别人去认真回答你?
说到这里,有个真实的例子:
  “问:怎么去掉列表前面的黑点呀?
   答:list-style:none;
   问:没有效果
   答:你把代码发上来看看。
   问:<li>·<a href="xxxx">xxxxxx</a></li>
   答:……………………老大,你那个黑点是文字!
   问:我看看……哦,这样啊。
   答:无语晕倒。”

三、善于使用搜索引擎
其实明白自己要问什么了,最直接且效率最高的方法是使用搜索引擎,网络的好处就是资料多得目不暇接。
也许你的问题已经有人问过——特别对于初学者来说,问题一般都是被问过很多遍的,因此,也许已经有人针对这个问题给过很详细的解释,搜一搜看看有没有,这样的结果,比别人在论坛或者QQ上随便打一句两句话回答你更能提高你自己的水平。
四、谦虚
忽然想起一个小品,说如今杨白劳是大爷,黄世仁要追着求杨白劳还钱。
经常看到一些帖子,问问题没人答,就抱怨论坛人气低,有人回答了可能没解决问题,就抱怨没有能人,在群里问了没人答就说群不好。
有一个论坛或者群是万能的,也许你问的问题跟群没关系,自然没人答;或者,群里的人刚好都忙,毕竟大家都有工作,那么等等或者去搜资料,比抱怨更节约时间和体力。毕竟人家也没有义务要回答问题。
再或者,别人给的答案跟提问者预期的不一致,不要急着说不对,其实有些问题看上去的样子和其实质是有很大差别的。
举个例子,经常有人问一些CSS设定的问题,但是当我指出他的html结构不好时,总被回答,别管那个,你就说现在怎么写CSS。一个好的结构可能会让CSS变得很简便,你拒绝了简单的答案,别人哪里有那么多时间去给你搞复杂的东西?
五、关注别人的问题
天外有天,人外有人。
我之所以愿意关注这些群和论坛,因为从这些问题里,可以检验我到底掌握了多少知识,问题总是千奇百怪的,而总有人能对这些问题给出答案,有的方法是自己知道的,有的可能是自己不知道的。而看别人的回答也许就能让自己更进一步,同时,回答别人的问题,也能巩固自己的知识,有时候还能让自己发现新的东西。
如同前些日子,我买了两本CSS基础的书,有人问:你还要看这些基础的东西么?
每本书的作者都有自己的视角,自己的出发点,自己的经验,因此差不多每本书(当然那些纯是凑代码的书除外)都有其优点,都可以发现一些自己不知道的东西。
绝对的天才听说过,但是从来没见过。
踏下心来,开卷有益。
曾经有一位朋友遇到这样一个问题,一产品名称为A&T Plastic,在产品列表中就产生了这样的一个联接<a href="PRoduct.asp?name=A&T Plastic">A&T Plastic</a>,在服务器端接收此参数的时候怎么也无法接收到准确的产品名。
当时就问我,如何解决,也许是当时忙吧,随口告诉他用HTMLENCODE方法,对方试告诉并没有能解决这个问题。我当时没有再给予回答,偶尔想起实在是对不起,我讲错了。今日闲暇就整理了一下如何处理GET方式提交的含有特殊字符的参数,以表内心的愧疚。

特殊特殊字符的含义
————————————————————————————
    字符        特殊字符的含义              URL编码
   #            用来标志特定的文档位置      %23
   %            对特殊字符进行编码          %25
   &            分隔不同的变量值对          %26
   +            在变量值中表示空格          %2B
   \            表示目录路径                %2F
   =            用来连接键和值              %3D
   ?            表示查询字符串的开始        %3F

当键值中含有以上列表中的一些字符时就无法准确的接收其中的值。
<!--文件名为01.asp-->
<%
'定义含有特殊字符的字符串
str="parameter=#%&+\=?value</html>"
'用URLEncode方法进行编码
strurlencode=server.URLEncode(str)
'用HTMLEncode方法进行编码
strhtmlencode=server.HTMLEncode (str)
'显示所有的querysting字符
Response.Write "<b>QueryString:<b>"
Response.Write Request.QueryString
'显示传递的参数
Response.Write "<br><b>Parameter is:</b>" & str &"<br>"
Response.Write "<b>QueryParameter=</b>"
Response.Write Request.QueryString  ("str")

%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>

<P><a href="01.asp?str=<%=strurlencode%>">Str UrlEncode Method</a></P>
<P> </P>
<P><a href="01.asp?str=<%=strhtmlencode%>">Str HtmlEncode Method</a></P>
</BODY>
</HTML>


显示结果
QueryString:
Parameter is:parameter=#%&+\=?value
QueryParameter=
Str UrlEncode Method
Str HtmlEncode Method
点击连接1,结果
QueryString:str=parameter%3D%23%25%26%2B%5C%3D%3Fvalue%3C%2Fhtml%3E
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=#%&+\=?value
Str UrlEncode Method
Str HtmlEncode Method
此时我们发现好象参数值中的</html>没有能正确接收到,当我们查看原代码的时候就会发现其实已经准确的接收到了,原因是“</html>”是标准html tag ,经过浏览器解释后就不会显示出来了。
点击连接2,结果
QueryString:str=parameter=
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=
Str UrlEncode Method
Str HtmlEncode Method
此时就会发现在#后面没有能正确接收到,而是被解释为锚点的开始,在"#"后面的为锚的名称。

结论:在含有以上列表中具有特殊功能的特殊字符的字符串,作为参数用GET方式传递时,只需要用URLENCODE方法处理一下就可以拉。如果不想让浏览者看到含后HTML TAG的字符串的具体值值是,我们可以用HTMLENCODE处理一下。

php中用函数urlencode()就可以拉,这里就不在举例了。
分享到:
相关文章
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2015-04-21 00:00:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1334624/
本文WWW.DOC100.NET DOC100.NET版权所有。