php中form通过get传中文字符自动用urlencode转换

如下面一个表单:
<form action="./search.php" name="searchform" method="get">
<input type="text" name="keywords" style="width: 300px;"/> <input type="submit" value="搜索"/>
</form>
例如在我提交“你是谁”搜索的时候,自动打开的网页地址是:http://localhost/SEO/search.php?keywords=你是谁
怎么才能点击搜索之后自动打开的网址是中文用urlencode加密过的字符串呢?像在百度搜索的时候那样打开这样的网址:http://localhost/SEO/search.php?keywords=%E4%BD%A0%E6%98%AF%E8%B0%81
求高手指导

不需要做任何处理,这是由浏览器自动控制的。
带有中文的地址显示上更友好,但是,如果你复制该地址到一个文本文件中,你应该会看到粘贴的结果是已经用url编码的结果咯。

请不要在提交时自行编码,否则反倒会造成问题,即当你提交时进行了额外的urlencode的话,php端必须也同样额外的进行一次urldecode,否则你无法得到正确的搜索结果了。

urlencode并不是加密,只是格式不同而已。再说用户自己定制的搜索关键词,你加密它有什么意义?用户难道不知道自己写的什么吗,是不是这个道理。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-28
FORM 里使用get 方法,应该在你提交表单前用JS方法encodeURI先将输入的值进行转换。追问

能不能帮忙把这段js方法写出来,我对js了解不太多,麻烦了

追答



$(function(){
$("#submit").click(function(){
$("#keywords").val(encodeURI($("#keywords").val()));
$("form").sumbit();
});
});

注意添加jquery类库。试试看吧

本回答被提问者和网友采纳
第2个回答  2013-05-20
rawurlencode ( string str)是PHP的实现方法,将非ASCII码转换,这不是加密,是因为GET方法不允许传非ASCII码,必须这么做。。。。
第3个回答  2013-05-20
跳转到搜索页面的时候可以用js实现,在js里实现关键字加密就行了追问

能不能分享下这段js代码,本人对js了解不多,多谢了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网