有没有一种编码CodeIgniter网址的方法?

时间:2019-06-10 06:29:59

标签: php codeigniter

因此,当前我的系统在提交表单后会发送类似http://127.0.0.1:8000/search?keyword=34的URL。

我的目标是将网址部分编码为keyword=34。这样就变成了http://127.0.0.1:8000/search?1safsd21(或任何已编码的单词)。

我对此问题进行了一些研究。到目前为止,它告诉我使用urlencoderawurlencode,但问题是,我不知道将其放置在何处或如何使用。

表格

<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>

2 个答案:

答案 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