我有两页:index.php
和stats.php
这两个页面均包含来自数据库的相同查询,并具有删除按钮。按下delete-button
时,它会像这样重定向:https://example.com/delete.php?id=50;
,其中50是行ID。
delete.php
看起来像这样:
<?php
include "db.php"; // Using database connection file here
$id = $_GET['id']; // get id through query string
$del = mysqli_query($link,"DELETE FROM table WHERE id = '$id'"); // delete query
if($del)
{
mysqli_close($link); // Close connection
header("location:index.php"); // redirects to all records page
exit;
}
else
{
echo "Error deleting record"; // display error message if not delete
}
?>
现在的问题是,当用户按Delete键时,它将删除该行,然后重定向回index.php。但是,如何检查从哪个页面删除了该页面,然后重定向回该页面呢?
编辑:
出于测试目的,我在下面尝试了类似的操作,但是当从两个页面删除时,它们都给了我相同的输出:“ 2”:
if($del)
{
if($_SERVER['HTTP_REFERER'] == "index.php")
{
echo "1";
} else {
echo "2";
}
}
答案 0 :(得分:2)
您可以使用$_SERVER["HTTP_REFERER"]
。
它包含上一页的URL。
$_SERVER['HTTP_REFERER']
包含完整的URL。
例如:http://localhost/my-site/index.php
所以您可以这样做:
header("location:".$_SERVER['HTTP_REFERER']);
答案 1 :(得分:1)
正如@Bazaim所说。使用$_SERVER['HTTP_REFERER']
。
出于您的目的,可能是这样的:
if ($del) {
...
header('location: ' . $_SERVER['HTTP_REFERER'])
}
其他情况:您在msql查询中使用$_GET['id']
。如果要在您的网址中添加?id=0' OR '1=1
。 (id = 0%27%20OR%20%271 = 1)这可能会删除整个表格。您可能需要阅读有关mysql注入的内容。