URL 和 phpmyadmin 自动递增

问题描述 投票:0回答:2

我正在寻找解决我遇到的这个问题的最佳方法,并且我一直在寻找一种方法来尝试解决它。

我有一个名为

products
的数据库表,在这个表中我有我所有的产品,比如鞋子、衣服、帽子等

我有一个页面,我用它根据产品将所有内容回显到其中

ID
我使用的代码看起来像这样

<a href="product.php?ID=<?php echo $row['ID']; ?>">View</a>

网址看起来像这样

http://www.example.x10.mx/product.php?ID=1

问题是有人可以将

ID
更改为2或3或4....这是不应该发生的。我不知道问题是否在于它没有使用付费域名,或者只是在 x10hosting 上。

问题

我想提供将网址中的

ID
更改为他们想要的任何随机数的用途,有人可以告诉我如何做到这一点。

另一个问题 phpMyadmin 是否可以生成随机字母和数字的混合形式,因为这是我想到解决问题的唯一方法

谢谢

php mysql security phpmyadmin
2个回答
-1
投票

我在工作中处理我们的商务系统时不得不处理类似的问题。我们处理它的方法是提供用户在查询中拥有的值的哈希值..

如果您要对盐加密查询字符串并使您的网址为/product.php?id=1&hash=ajk23j4aksdljfklasdjf2345j - 然后在product.php上验证哈希是否正确匹配。如果哈希值不匹配,则意味着用户更改了某些内容。


-1
投票

这并不是一个真正的答案,但我觉得有必要在这里发帖,因为我觉得应用程序设计情况很糟糕。

来自主要问题的评论线程:

很抱歉让您感到困惑,但它们并没有什么值得真正混淆的。例如,帽子、鞋子使用product.php 页面,手套、衬衫使用itemview.php 页面,当您单击查看时,这两个页面都使用产品ID (ID)。希望这是有道理的

还是没有意义。你提到的这些东西其实都是产品。只是不同类型的产品。在任何理智的设计中,它们都将使用相同的 URL 格式。根据产品类型执行操作的逻辑属于您用作控制器的任何内容 - 在您的情况下,我假设 URL 中的 .php 页面。您只需要其中之一。从那里你可以做不同的事情。

最基本意义上的例子:

// This is product.php

if(!isset($_GET['id'])) {
  // 404 or some other error
}

$product = get_item_by_id($_GET['id']);

if(!$product) {
   // 404 or other error
}

switch($product['type']) {
    case 'cap':
    case 'shoes':
       // for cap and shoes use the product_view template
       include 'product_view.php';
       break;

    case 'gloves':
    case 'shirts':
        // for gloves and shirts use the item_view template
       include 'item_view.php';
       break;

    default:
       // otherwise use the default product view template
       include 'default_view.php';
   
}

// anything else you need to do that isn't done in the view specific file

现在所有的假设都是特定的产品,但你的例子听起来更像是类别。通常,您会有一个单独的类别页面,其功能与产品大致相同,但以某种视觉方式输出产品实体的“集合”。

© www.soinside.com 2019 - 2024. All rights reserved.