我正在做一个项目,用户可以在其中搜索任何内容。我想在URL中以加密形式显示搜索数据。我创建了一个表单,当用户提交它时,我将用户发送到结果页面,我在表单操作和表单方法中定义了结果页面。
<form is="search" action="example/search.php" method="get">
<input type="text" placeholder="Search..." name="key" id="header-search" />
<button class="submit"></button>
</form>
我需要在URL中显示加密数据。如果我使用java脚本加密数据,那么我就无法使用PHP获取数据。如何在URL中以加密形式发送数据,并在其他页面中使用php。
当您在其中发送参数时,您可以使用ajax来实现该过程。在提交表单之前,创建一个ajax请求并在其中发送文本字段数据。使用以下变量加密
$cipher = "AES-128-CTR";
$key = "12345";
$opt = 0;
$iv_key = '123456789';
$iv_length = openssl_cipher_iv_length($cipher);
使用openssl_encrypt function
加密字符串,并作为ajax响应返回
$encryption = openssl_encrypt($string, $cipher, $key, $opt, $iv_key);
return $encryption;
现在将此字符串存储在一个隐藏字段中并以表单形式发送。在下一页中,使用以下代码decrypt
字符串并从数据库获取数据。
$decryption = openssl_decrypt($string, $cipher, $key, $opt, $iv_key);
确保$cipher, $key, $opt, $iv_key
应该具有相同的值。
你指的是url模糊处理吗?如果是这样,您可以在客户端对字符串进行base64编码,并在服务器端对其进行解码。
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding了解更多详细信息。
一个例子:
//client side
var encodedData = window.btoa("Hello, world"); // encode a string
//Server side (php)
$decodedData= base64_decode($encodedData)