因此,当前我的系统在提交表单后会发送类似http://127.0.0.1:8000/search?keyword=34
的URL。
我的目标是将网址部分编码为keyword=34
。这样就变成了http://127.0.0.1:8000/search?1safsd21
(或任何已编码的单词)。
我对此问题进行了一些研究。到目前为止,它告诉我使用urlencode
或rawurlencode
,但问题是,我不知道将其放置在何处或如何使用。
表格
<form action="http://127.0.0.1:8000/search" autocomplete="off" method="get" role="form" accept-charset="utf-8">
<input type="text" name="keyword" value="" placeholder="Search...">
<input type="submit" />
</form>
答案 0 :(得分:1)
这并不是PHP真正关心的问题,因为表单提交是由浏览器处理的。 PHP仅解释并处理请求。您可以使用如下代码对表单数据进行编码:
<form id="realformdata" action="http://127.0.0.1:8000/search" autocomplete="off"
method="get" role="form" accept-charset="utf-8"
onsubmit="sendEncodedForm(); return false;" >
<input type="text" name="keyword" value="" placeholder="Search...">
<input type="submit" />
</form>
<script>
var sendEncodedForm = function(){
var formdata = $("#realformdata").serialize();
var encoded = base64_encode(formdata);
document.location.href = $("#realformdata").attr("action") + "?" + encoded;
}
</script>
注意:base64_encode
只是您的编码方法的占位符。不是真正的现有方法。
在服务器端(PHP):
<?php
$query = base64_decode($_SERVER["QUERY_STRING"]);
parse_str($query);
// check $query for decoded variables
答案 1 :(得分:0)
我认为,您正在询问加密问题。我们无法加密整个keyword=34
部分,因为我们需要一个key name
才能在控制器中获取参数。
但是您可以加密参数的值。
您可以使用任何加密算法,例如mcrypt。或内置在加密库as described here中的codeigniter。
完成加密后,URL将如下所示。 http://127.0.0.1:8000/search?keyword=ENCRYPTED_TEXT