如何base32编码url

时间:2013-07-30 18:12:58

标签: php function base32

首先,对标题感到抱歉。

请有人帮我这个。我在下面有以下声明,我想让pid为随机数字和字母,所以我使用了function id_encode($id)

http://www.testing/details.php?Sef=canda&ppid=1

我不希望ppid显示,以便用户无法猜测我的数据库中有多少产品。这就是我使用该功能的原因。

          $stmt = $conn->prepare(" 
          SELECT * FROM Product
          ");
          $stmt->execute();
            $i = 0;
            $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
        foreach ($rows as $row) {
           $id = $row["ppid"]; //id

    function id_encode($id) {
        return base_convert((9999999999 - (float) $id) , 10 , 32 );
        }
    $qstr = http_build_query(array("Sef"=>$row["Sef"], "ProdID"=>$id));

我有一个带有指向另一页的链接的视图按钮

<a href="<?php fetchdir($apages) ?>product.php?<?= $qstr ?>">View item</a>

在那个其他页面我有

<?php   
 if (isset($_GET['Sef']) && isset($_GET['ppid'])) {
    $id = $_GET["ppid"];
    $id2 = $_GET['Sef'];

错误 我得到了Fatal error: Cannot redeclare id_encode() (previously declared in

我这样做的方式另一页是否可以获取此信息?因为如果我记得function其他页面确实收到了该产品的信息。

请帮忙。

1 个答案:

答案 0 :(得分:0)

你需要一个函数id_decode($ encoded_id)来反转你对编码函数中的数字做的任何事情。

因此,如果在编码中你做(N - id)然后base10到base32,在解码中你会再次执行base32到base10然后(N - id),因为(N - (N - id))= id。< / p>