重新加载后停止处理 $_GET

Stop $_GET being processed after reload

我正在创建一个 link,它将一个 $_GET 变量附加到它的末尾,用于删除文件/其他 PHP 任务。

<a href="test.php?delete_file=<?php echo $filename; ?>">Delete file</a>

我的部分 PHP 代码查找变量,如果它存在,它 运行 是删除文件的未设置函数,但是当我重新加载网页时,它显然会尝试删除文件再次。有什么方法可以删除 $_GET 后 运行 一次以在刷新后停止处理?

<?php
if (isset($_GET['delete_file'])) {
    if (file_exists($full_path.$_GET['delete_file'])) {
        unlink($_GET['delete_file']);
    } else {
        echo "File ".$full_path.$_GET['delete_file']." doesn't exist";
    }
}
?>

<a href="test.php?delete_file=<?php echo $filename; ?>">Delete file</a>

您可以使用 ajax 删除文件,这样它就不会刷新。

<a href="javascript:deletefile('<?php echo $filename; ?>')">Delete file</a>
 <script>
        function deletefile(filename){
                var data = {delete_file:filename };
                $.ajax({ 
                        url: 'delete.php',
                        type: 'post',
                        data: data,
                        success: function(response) {
                            // .. do something with response ..
                            // you can use window.location to refresh page   
                           // or if you have js method to refresh page. you can call it here
                        }
                }); 
        }
        </script>

在 php 文件中,您可以使用 post

检索
<?php
if (isset($_POST['delete_file'])) {
    if (file_exists($full_path.$_POST['delete_file'])) {
        unlink($_POST['delete_file']);
    } else {
        echo "File ".$full_path.$_POST['delete_file']." doesn't exist";
    }
}
?>

但正如评论者所说,这对潜在的安全问题是开放的。如果您在生产中使用这种方法,您需要注意安全性。