Php 是否仅在未登录时运行脚本?

Php 是否仅在未登录时运行脚本?,php,session,Php,Session,可能重复: 我正在使用一个php页面计数脚本。它统计未登录用户在重定向到注册页面之前可以访问页面的次数 基本上,未登录的用户最多可以查看其他用户的配置文件5次,然后再重定向到注册。但这也发生在登录用户身上,页面计数是计算登录的次数并重定向用户。我只希望在用户未登录时运行页面计数并重定向 有人能告诉我,我需要在代码中输入什么才能让它做到这一点吗? 我什么都试过了,但还是想不出来 <? !session_id() ? session_start() : null; verify_profi

可能重复:

我正在使用一个php页面计数脚本。它统计未登录用户在重定向到注册页面之前可以访问页面的次数

基本上,未登录的用户最多可以查看其他用户的配置文件5次,然后再重定向到注册。但这也发生在登录用户身上,页面计数是计算登录的次数并重定向用户。我只希望在用户未登录时运行页面计数并重定向

有人能告诉我,我需要在代码中输入什么才能让它做到这一点吗? 我什么都试过了,但还是想不出来

<?
!session_id() ? session_start() : null;

verify_profile_visit_limit();

function verify_profile_visit_limit(){
    $free_profiles = array(99999,99998,99997,99996,99995,99994,99993);

    if(in_array($_GET["id"], $free_profiles)) return;

    if(! isset($_SESSION["page_access_count"])){
        $_SESSION["page_access_count"] = 1;
    }

    $_SESSION["page_access_count"]++;

    if($_SESSION["page_access_count"] > 6){
        header("Location: limit.php");
        exit();
    }
}

?>

在调用函数verify\u profile\u visit\u limit之前,您应该有如下内容:

if(!isset($_SESSION['logged_in']) && empty($_SESSION['logged_in'])){
    verify_profile_visit_limit();
}
为此,您需要在用户登录时设置一个标志变量,如$\u SESSION['logged\u in'],以检查用户是否登录

因此,只有在用户未登录时,验证配置文件访问限制功能才会运行


希望这有帮助。

我不会使用$\u GET here-/index.php?id=99999您没有在会话中存储登录状态?@IRelephant我不知道这是怎么回事。!会话号?会话启动:空;除非我弄错了,否则如果在会话开始之前调用,会话id将始终返回false,所以它看起来有点多余。你是从哪里得到这行代码的?谢谢你,但它似乎不起作用,除非我写错了?我有这样的想法:当用户登录时,程序需要更新会话,以便程序的其余部分知道用户何时登录或未登录。因此,在您的登录脚本中添加以下代码行:$\u SESSION[logged\u in']=true;