0

首先,对不起标题。

请有人可以帮我解决这个问题。我在下面有以下声明,我想让我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另一个页面确实收到了该产品的信息。

请帮忙。

4

1 回答 1

0

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

所以如果在编码中你做(N - id)然后base10到base32,在解码中你会再做base32到base10然后(N - id),因为(N -(N - id))= id。

于 2013-07-30T19:16:30.007 回答