我有一个包含 800 多个数据的数据库。
product table
pid name p_page
1 money money.php
2 gold gold.php
3 .
. .
. .
800 .
我有2页...
product_item.php
<div class="button">
<a href="<?php fetchdir($apages) ?><?php echo $row['p_page']; ?>?pid=<?php echo $row['pid']; ?>">View</a>
</div>`
当您单击查看产品信息时product.php
,我有
if (isset($_GET['pid'])) {
取决于用户在 URL 上单击的产品可能如下所示,但44
会更改为任何 id
http://www.example.x10.mx/money.php?pid=44
问题在于,money.php 的布局与其他页面不同,如果我将 44 更改为 68,产品信息将显示在页面上,但布局看起来不太好。
我的问题
是阻止用户更改网址的最佳方法是什么。我想加密我pid
在 url 中的所有内容,所以它看起来像
http://www.example.x10.mx//money.php?sel=这里的产品名称 or
4 个字母 or
anything
我只想pid
从网址中删除。
请帮我。如果您不理解我的问题,请在评论中提问并尝试说出您认为您理解的内容。
编辑以显示我的获取功能
$php = "php/";
$apages = "account/";
$bpages = "booking/";
$gpages = "general/";
$ppages = "product/";
// Global functions
function fetchdir($dir)
{
$protocol = $GLOBALS['protocol'];
$host = $GLOBALS['host'];
($dir == $GLOBALS['apages'] || $dir == $GLOBALS['bpages'] || $dir == $GLOBALS['ppages'] || $dir == $GLOBALS['gpages'] ? $branch = $GLOBALS['pagebranch'] : $branch = $GLOBALS['branch']);
echo $protocol.$host.$branch.$dir;
}
谢谢
ps 我不知道这是否可以在 .htaccess 中完成,但我认为它可以在 php 中完成
一些澄清:
我有一个看起来像这样的网址
www.example.com/account/product.php?pid=1
这样做的问题是有人可以更改 1 或任何数字,如果他们是数据库中具有该数字的 pid,它将获取项目信息并显示在页面上。我不想发生这种情况,因为并非所有产品都打算在某些页面中显示。
在我展示所有可用产品的页面中。我简单地使用一个SELECT
语句,然后在某些 div 中回显我需要的内容。
在那个页面中,我有一个查看按钮。
$stmt = $conn->prepare("SELECT * FROM Product WHERE Type = 'shoes'");
$stmt->execute();
$i = 0;
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$id = ($row['pid']);
$product_page ($row['dir_page']);
<div class="button" >
<a href = "<?php fetchdir($apages) ?><?echo $product_page?ProdID=<?php echo $id>" > View</a >
</div >
}
根据您单击时将信息发送到的页面,view
我使用 Get 方法
<?php
if (isset($_GET['pid'])) {
// Connect to the MySQL database
dbconnect();
$id = preg_replace('#[^0-9]#i', '', $_GET['pid']);
}
如果您注意到我select statement
以前type
只显示类型是鞋子的产品。我也有其他类型,就像他们的其他页面一样。现在的问题是,如果我将 pid 更改为没有类型的任何页面,shoes
或者如果在其他页面中输入一个类型是鞋子或任何东西的 pid,来自该页面的信息仍将呈现。这是我不想发生的。
我的问题 是如何阻止用户更改该 pid,即使他们更改了它。他们仍然会在同一页面上吗?