隐藏通过href标记传递的参数

时间:2014-04-15 04:28:02

标签: php .htaccess

我通过href标记传递参数,如下所示:

<a href='message.php?toid=$userid&name1=$fname&name2=$lname'>

当我被重定向到message.php时,这三个参数在地址栏上可见。如何隐藏这些参数?我遇到.htaccess作为解决方案之一,但没有.htaccess我想隐藏参数

4 个答案:

答案 0 :(得分:2)

,您无法隐藏通过<a>锚标记发送的参数。

但是,您可以通过加密参数来混淆参数,然后在服务器端脚本上对其进行解密。

使用加密解密的简单说明......

<强> test1.php

<?php
$key_value = "somekey"; //<--- This is a key for the encryption decryption process
$plain_text = "the secret !"; //<-- The actual text you are going to send.
$encryptedmsg = mcrypt_ecb(MCRYPT_DES, $key_value, $plain_text, MCRYPT_ENCRYPT); //<-- Encrypting...
echo "<a href=test2.php?enc=$encryptedmsg>Click Here</a>"; //<-- Your anchor tag

<强> test2.php

<?php
$key_value = "somekey"; //<--- Note..the same key !
$decryptedmsg = mcrypt_ecb(MCRYPT_DES, $key_value, $_GET['enc'], MCRYPT_DECRYPT); //<-- Decrypting
echo $decryptedmsg; //<-- Prints "the secret"

单击链接时... test2.php将获取enc参数,然后使用代码解密,但是,用户将无法读取纯文本.. 秘密!

点击 test1.php ...

中的链接时,地址栏的显示方式如下所示
http://localhost/ext1/test2.php?enc=%D4%1D%96F|C%8B%8C%D7%8AP%19=%13%F6%A1

警告:不推荐使用mcrypt_ecb。我只是用它来说明目的,让你知道发生了什么。

答案 1 :(得分:0)

在message.php文件的代码顶部添加此链接

<?php if($_GET['toid']) echo header("location:message.php"); ?>

答案 2 :(得分:0)

我能想到你这样做的唯一方法就是你有一个带有隐藏输入字段的表单,而标签就是你的提交。只需将操作设置为帖子。

答案 3 :(得分:0)

您也可以使用jQuery提交POST数据,如下例所示:

$('#post').click(function(e) { // we assigned our link the id "post"
    e.preventDefault();
    var url = $(this).attr('href');
    $.ajax({
          type: "POST",
          url: url,
          data: { name: 'John Doe', address: 'Some address' },
    })
    .done(function(data) {
              // $(".success").html( data ); // Optionally display result from post page instead of redirecting
              $(".success").html('We made a post! Yeah, redirecting you somewhere!');
              var end = setTimeout(function() {
                      window.location.replace(url);
                      clearTimeout(end);
                  }, 200);
    })
    .fail(function() {
        $('.success').html('Something went wrong!');
    });
});