2016-06-01 8 views
0

. Каков наилучший способ проверить, зарегистрирован ли пользователь и если он не сделает страницу недоступной для него?Проверьте, не авторизованы ли пользователи и не делает страницу недоступной.

Что делает этот код нужно, чтобы сделать его полным и безопасным:

if (isset($_SESSION['USER_ID'])) 

ответ

0

Убить сценарий

if (!isset($_SESSION['USER_ID'])) 
    die(); 

Или напечатать дружественное сообщение, перенаправить на страницу входа в систему, или все, что вы думаете, является адекватный ответ. Просто удалите страницу, прежде чем показывать свой премиальный контент.

0

В странице входа Добавить

$_SESSION['user_id'] = $user['id']; 

В странице, которые вы хотите сделать недостижимым, если не LoggedIn, добавить в верхней

include ("auth.php"); 

auth.php

<?php 
session_start(); 
if(!$_SESSION['user_id']){ 
    header("location:index.php"); //page you want to redirect 
} 
?> 

Теперь вы можете добавить auth.php любой страницы, которые вы хотите сделать недостижимым, если не авторизованы ...

+0

Этот код перенаправляется, когда пользователь вошел в систему. Но он должен перенаправляться, когда он не вошел в систему. – John

0

Прежде всего, вам нужно -До любой вывод страницы (даже предупреждения и ошибки):

session_start(); 

Так что ваш код будет завершена следующим образом:

session_start(); 

if (!isset($_SESSION['USER_ID'])) { 
    header ("Location: login.php"); 
    die; 
} 
+0

Этот код перенаправляется, когда пользователь вошел в систему. Но он должен перенаправляться, когда он не вошел в систему. – John

+0

You ошибочно @John, он делает именно то, что вы сказали: '! isset ($ _ SESSION ['USER_ID']) означает: _NOT EXIST (ИЛИ ОПРЕДЕЛЕН) USER_ID SESSION_ –

0

если USER_ID не может быть пустым, лучше проверить это тоже:

if (isset($_SESSION['USER_ID'] && $_SESSION['USER_ID'] != '')) 

В качестве личного метода более сложной проверки входа: сгенерируйте случайный токен, когда пользователь выполнил вход в систему и сохранит его в базе данных и добавит дополнительный сеанс. Затем проверьте, совпадают ли имя сеанса user_id и случайный сеанс вместе с проверкой базы данных. Это предотвратит атаки любого типа мошенничества в сеансе и имя cookie.

+1

Еще лучше:' if (! empty ($ _ SESSION [ 'USER_ID'])) 'вам не кажется? empty() doc: [link] (http://php.net/manual/en/function.empty.php) –

+0

Спасибо. Да. empty() делают обе проверки вместе. Я подчеркнул, что не забыть пустую проверку. –

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