我有一个php页面,它执行插入操作,然后重定向到显示订单详细信息的“success”页面。我正在使用变量重定向,但我认为这不太安全:header("location:success.php?id=$orderid");
这将生成如下url:success.php?id=22
然后,我使用URL获取订单ID号,并在此基础上进行查询以显示订单详细信息:
$getName = explode('?id=', $_SERVER['REQUEST_URI']);
$id = $getName[1];
$query = <<<SQL
SELECT * FROM `order` WHERE `orderid` = ?;
SQL;
$request = $mysqli->prepare($query);
$request->bind_param("i", $id);
$request->execute();
显而易见的问题是,任何人都可以简单地更改URL id号来获取不同订单号的详细信息。我不太担心,因为这是一个严格的内部网站,但我仍然想纠正这种行为。有没有更好、更安全的方法来做到这一点?
最佳答案
这里有一个更简单的解决方案:将orderid存储在这样的会话中。
在重定向时,您将得到如下值:
$getName = explode('?id=', $_SERVER['REQUEST_URI']);
$id = $_SESSION['orderid'];
$query = <<<SQL
SELECT * FROM `order` WHERE `orderid` = ?;
SQL;
$request = $mysqli->prepare($query);
$request->bind_param("i", $id);
$request->execute();
关于php - PHP更安全的重定向方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30461867/