如何使用PHP通过HTML传递POST标签?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

我有以下代码:

<a class='list-group-item active' href='index.php?galleryId=$gallery[0]&id=gallery'>
                    <h4 class='list-group-item-heading'>$gallery[2]</h4>
                    <p class='list-group-item-text'>$gallery[3]</p>
                </a>

我不希望用户能够编辑URL中的galleryId,因为他可以通过编辑URL中的值来访问不适合他的网页。

这是网址:http://localhost/bilderDb/php/index.php?galleryId = 2&id = gallery

是否有可能通过一个标签传递POST,所以用户不能看到它。

提问于
用户回答回答于

我认为你应该创建两个自定义函数,encodeUrlParameter()decodeUrlParameter()使用自定义逻辑encryptiondescription逻辑。

  1. 当你发送页面给用户时,使用这些函数来加密parameters这种方式,用户无法用有意义的方式来调节它。
  2. 其次还实现user访问级别的参数并对其进行加密。所以它会达到你的目标。无论是no tempering with data以及access level简单的方式。
  3. 你必须定义用户级别,并且必须为那些对用户隐藏的用户设置会话变量。如果session 用户的ID不允许他的权限,那么用户将无法执行操作。

参考这里的Github Repo代码。

在这里,你将获得像encrypt()和的功能decrypt()。代码:

<?php
    function encrypt($string, $key=5) {
        $result = '';
        for($i=0, $k= strlen($string); $i<$k; $i++) {
            $char = substr($string, $i, 1);
            $keychar = substr($key, ($i % strlen($key))-1, 1);
            $char = chr(ord($char)+ord($keychar));
            $result .= $char;
        }
        return base64_encode($result);
    }
    function decrypt($string, $key=5) {
        $result = '';
        $string = base64_decode($string);
    for($i=0,$k=strlen($string); $i< $k ; $i++) {
            $char = substr($string, $i, 1);
            $keychar = substr($key, ($i % strlen($key))-1, 1);
            $char = chr(ord($char)-ord($keychar));
            $result.=$char;
        }
        return $result;
    }

    $en = encrypt('1',6);
    echo "Encrypted:  " .$en;
    echo '<hr />';

    echo "Decrypted:  " .decrypt("$en",6);
?>

OutputImage

用户回答回答于

如果用户不应该访问URL,那么,如果他们请求了URL,请验证他们的身份(例如让他们登录)并用403做出响应。

扫码关注云+社区

领取腾讯云代金券