重定向之前运行的PHP函数

重定向之前运行的PHP函数,php,mysql,Php,Mysql,在php脚本的顶部,我有一个方法可以检查用户的凭据,如果他们的会话变量与我们期望的不匹配,则会通过headerLocation重定向:。。转到登录区域 下面是一个检测查询字符串参数的方法,然后相应地运行mysql命令: //内部守门员 if(!isset($_SESSION['ourprivatesessionvar'])) { header("Location: login.php"); //在我的剧本里面 include('includes/gatekeeper.php'); /**

在php脚本的顶部,我有一个方法可以检查用户的凭据,如果他们的会话变量与我们期望的不匹配,则会通过headerLocation重定向:。。转到登录区域

下面是一个检测查询字符串参数的方法,然后相应地运行mysql命令:

//内部守门员

if(!isset($_SESSION['ourprivatesessionvar'])) { header("Location: login.php"); 
//在我的剧本里面

include('includes/gatekeeper.php');

/** SOME OTHER STUFF **/

if(isset($_GET['delete'])) {
     mysql_query("DELETE FROM table WHERE id = '".mysql_real_escape_string($_GET['delete'])."' LIMIT 1"); 
}

总之,无论是否满足会话配额,delete命令都在运行。

使用exit终止脚本;要么死;在重定向之后

if(!isset($_SESSION['ourprivatesessionvar'])) {
    header("Location: login.php");
    exit;
}


配额在哪里检查?看起来您只是在检查是否设置了删除。如果满足sessionvar,则应在标题后添加退出。在标题后添加退出或死亡。始终需要在headerLocation:xxx'`后退出,因为它不会终止代码,因此会继续处理脚本的其余部分。在headerLocation:login.php后写入退出;谢谢你的反馈。我以前从未遇到过这个问题,并且已经使用这个方法很长时间了。是否存在导致脚本继续运行而不退出的特定配置设置;?不需要。PHP的头函数只是向浏览器发送一个HTTP头,告诉浏览器该做什么,它根本不会停止脚本的执行,以防您想要记录重定向、清理会话、删除临时文件等情况。请参阅
    if(!isset($_SESSION['ourprivatesessionvar'])) {
    header("Location: login.php");
    die;
}
if(!isset($_SESSION['ourprivatesessionvar'])) {
    header("Location: login.php");
    return false;
}
if(!isset($_SESSION['ourprivatesessionvar'])) {
    header("Location: login.php");
    exit;
}