如何在php中加密解密url

如何在php中加密解密url,php,encryption,Php,Encryption,通过url传递1000个数组变量,并将其返回到另一个页面。如何对动态创建的url进行加密,并将其解密回原始阶段以进行进一步查询。 我的url如下所示: 代码: 这不是使用GET的好方法,而是使用POST。但要了解更多信息,请尝试以下方法: <?php function encrypt_url($string) { $key = "MAL_979805"; //key to encrypt and decrypts. $result = ''; $test = ""; f

通过url传递1000个数组变量,并将其返回到另一个页面。如何对动态创建的url进行加密,并将其解密回原始阶段以进行进一步查询。 我的url如下所示:

代码:


这不是使用GET的好方法,而是使用POST。但要了解更多信息,请尝试以下方法:

<?php
function encrypt_url($string) {
  $key = "MAL_979805"; //key to encrypt and decrypts.
  $result = '';
  $test = "";
   for($i=0; $i<strlen($string); $i++) {
     $char = substr($string, $i, 1);
     $keychar = substr($key, ($i % strlen($key))-1, 1);
     $char = chr(ord($char)+ord($keychar));

     $test[$char]= ord($char)+ord($keychar);
     $result.=$char;
   }

   return urlencode(base64_encode($result));
}

function decrypt_url($string) {
    $key = "MAL_979805"; //key to encrypt and decrypts.
    $result = '';
    $string = base64_decode(urldecode($string));
   for($i=0; $i<strlen($string); $i++) {
     $char = substr($string, $i, 1);
     $keychar = substr($key, ($i % strlen($key))-1, 1);
     $char = chr(ord($char)-ord($keychar));
     $result.=$char;
   }
   return $result;
}
?>


采用了更新的方法,以隐藏的形式保存数据并在dom ready上提交表单,相反,表单也可以在事件中提交

在ab.php

$array = serialize($ab);
<form action="ac.php" method="post" id="test">
     <textarea name="array" style="display:none;">
          <?php echo $array;?>
     </textarea>
</form>
@php,您可以通过$\u POST获得它
希望这对你有所帮助

让HTTPS为你做这件事。改用post。这不是一个好方法。URL栏中的字符数是有限制的。如果您有
“1000个数组变量”
,那么您将在重定向过程中丢失一些变量。我想知道是什么样的问题可能导致您使用任何请求方法发送长度为1000的数组。也许你从错误的角度接近它,这样的解决方案往往适得其反。Post?将数据传递到另一个页面…?实际上,我正在尝试更改某些人编写的代码。他们通过url传递存储在数组中的搜索结果。在这里,当数据太多时,将导致内部服务器错误。因此,请向我建议有效执行此搜索的方法阿卡什…$。ajax({url:“abc/ab.php”,//处理post数据类型的脚本:“post”,数据:“mypostdata=”,success:function(response){//json编码的响应,如果(response.success==true){window.location=“;}}}},则显示成功);我想在ac.php中显示结果。这是否正确。不适用于Meencode/序列化没有加密。请查看我的查询并告诉我哪里错了…我可以使用会话获取此数组吗?@ArtjomB。我没有对url数据进行编码。这是另一种方法。请阅读说明。凯撒密码不太安全。最好通过
openssl\u encrypt
或libs使用一些现代密码,如AES。
$array = serialize($ab);
<form action="ac.php" method="post" id="test">
     <textarea name="array" style="display:none;">
          <?php echo $array;?>
     </textarea>
</form>
$(document).ready(function(){
    $('form#test').submit();
});