2013-05-12 4 views
-3

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

по соображениям безопасности, когда пользователь приходит сюда, я хочу, чтобы проверить, что пользователь вошел в систему. Если пользователь не вошел в систему, то он будет перенаправлять пользователя на index.php странице

<?php 

    session_start(); 
    if(isset($_SESSION['sessionid'])) { 
if (isset ($_SESSION['username' and 'password'])){ 
} 
else 
{ 
    header("Location:Index.php"); 
} 
    } 
?> 

проблема в том, что если я просто загрузить страницу, введя в соответствующем URL я не перенаправляются на страницу индекса

Любая помощь ценится

+0

Вы серьезно хранящие пароль в сессии вместе с именем? –

ответ

1

Я настоятельно рекомендую против сохранения этой информации в сессии. При этом, у вас есть ошибка в вашем синтаксисе:

if (isset ($_SESSION['username']) && isset ($_SESSION['password'])) {...} 

Но, если я могу добавить дальше, я рекомендовал бы (при очень минимум) создание либо класса или функции, чтобы сделать это для вас, как вы» я буду использовать его больше, чем только однажды.

Создайте себе функцию, например:

function is_logged_in() { 
    if ((isset ($_SESSION['username'])) && (isset ($_SESSION['password']))) { 
    /* this is an awful way of checking if a user is logged in! */ 
    return true; 
    } else { 
    return false; 
    } 
} 

Затем, когда вам нужно проверить, если пользователь вошел в систему, просто ссылаться на эту функцию:

if (is_logged_in()) { 
    /* show members only stuff */ 
} else { 
    echo 'Please login'; 
} 

Тогда, как вы узнаете, больше, и продолжите свое приложение, вы можете настроить одну функцию вместо того, чтобы возвращаться и обновлять проверку входа в вашем коде.

НО: Пожалуйста, пожалуйста, прочтите информацию о безопасности пользователя или даже лучше используйте один из многих готовых пакетов.

Cheers.

+0

Спасибо за это :) Это часть моего задания для разработки системы CMS, которую нужно отправить в ближайшее время, поэтому у меня нет времени сделать сайт на 100% безопасным, но вполне вероятно, что я буду делать аналогичную вещь для моего финального проекта в следующем учебном году, поэтому я буду держать это в виду, спасибо :) Я намерен в любой момент включить весь этот скрипт в include :) сначала я хочу получить бэкэнд i.e часть CMS, которую я должен выполнить для своего задания, прежде чем прикоснуться к ней, хотя :) –

+0

Прохладный. Удачи с вашим проектом. Рад помочь. –

1

Это неправильный способ проверки, если заявление использовать этот

if (isset($_SESSION['username']) && isset($_SESSION[ 'password'])) 
0

У вас есть синтаксис ошибка в вашем if состояния, вы должны объявить свои сессии значение так изменить раздельно для этого

if((isset($_SESSION['username'])) && (isset($_SESSION['password']))) { 
1

С isset ($_SESSION['username' and 'password']) вы не проверить, существуют ли две переменной $_SESSION['username'] и $_SESSION['password'], но существует ли $_SESSION переменных с ключом 'username' and 'password' (который вычисляет true), поэтому в основном isset($_SESSION[true]).

Вы на самом деле нужно перечислить обе переменные:

isset($_SESSION['username'], $_SESSION['password']) 
Смежные вопросы