我正在寻找解决这个问题的最好方法,我一直在寻找一种方法来尝试解决它。
我有一个名为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可以生成随机字母和数字混合的方式,因为这是我想到解决问题的唯一方法
谢谢
答案 0 :(得分:-1)
在工作中使用我们的商务系统时,我不得不处理与此类似的问题。我们处理它的方式是提供用户在查询中拥有的值的哈希值。
如果您要对盐加密查询字符串并制作您的网址/product.php?id=1&hash=ajk23j4aksdljfklasdjf2345j - 然后在product.php上验证哈希是否正确匹配。如果哈希值不匹配,则表示用户已更改内容。
答案 1 :(得分:-1)
这不是一个真正的答案,但我觉得有必要在这里发帖,因为我认为应用程序的设计状况不佳
来自主要问题的评论主题:
很抱歉让你感到困惑,但他们并没有真正的困惑。例如,cap,shoe使用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 isnt done in the view specific file
现在所有人都认为这些是特定产品,但您的示例听起来更像是类别。通常情况下,您会有一个单独的页面,用于与产品完全相同的类别,但以某种视觉方式输出产品实体的“集合”。