2013-01-22 2 views
0

У меня есть этот код, который я пытаюсь использовать для подсчета количества обращений к странице, прежде чем перенаправить пользователя на другую страницу.количество просмотров страниц и перенаправление?

Идея состоит в том, что пользователи, не входящие в систему, могут просматривать файл profile.php только 6 раз, прежде чем перенаправляться на страницу регистрации, но это также делает это для зарегистрированных пользователей, и я хочу, чтобы зарегистрированные пользователи могли access profile.php столько раз, сколько они хотят.

Может кто-нибудь, пожалуйста, покажите мне, где я иду не так.

так пример, если сеанс равен нулю, а затем ограничивает доступ к странице 6 раз, но если сеанс = зарегистрирован, разрешите неограниченный доступ.

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

if(!isset($_SESSION['logged_in']) && empty($_SESSION['logged_in'])){ 
    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(); 
    } 
} 

?> 

ответ

2

Проблема заключается здесь:

if(!isset($_SESSION['logged_in']) && empty($_SESSION['logged_in']))

$_SESSION['logged_in'] никогда не может быть не установлен И пустой. Вам нужно использовать оператор OR.

+1

На самом деле требуется только 'empty()'. –

+0

это не работало. он по-прежнему делает то же самое. не могли бы вы объяснить немного больше, что мне нужно сделать. спасибо –

+0

@TommyLincoln: Вам нужно '&&' в '||' в if-clause. Если у вас все еще есть проблемы, я рекомендую сделать «var_dump ($ _ SESSION)», чтобы убедиться, что сеанс установлен так, как вы ожидаете. – xbonez

Смежные вопросы