2012-03-04 5 views
-2

Я новичок в PHP .. Я просто хочу, чтобы спросить о том, как проверить, является ли пользователь войти в систему или нет ..PHP Логин и регистрационная форма

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

Он должен сначала выслать мне форму для входа, потому что я еще не вошел в систему.

Как бы мне это сделать ?? Пожалуйста, помогите мне .. Спасибо в продвинутом ...

+0

Что случилось с доступом регистрационную форму, если вам не вошли в систему? Вы хотите, чтобы пользователь регистрировался только после входа в систему? :) –

ответ

0

Вам необходимо сохранить информацию о том, был ли пользователь подписан или нет, что позволяет вам проверять его на каждой последующей странице. Обычно это делается с использованием так называемого sessions - подробности для этого анонса слишком велики - я настоятельно рекомендую вам узнать о сеансах в PHP. Другим (более простым) способом было бы сохранить тот факт, что пользователь зарегистрирован в cookie, но это обычно не так хорошо, как легко его подделать. Но использование файлов cookie может быть быстрым и грязным, пока вы не изучите детали переменных сеанса. В любом случае вам нужно больше узнать о достижении своей цели здесь. Вы можете обнаружить, что легкомысленные задачи могут стать довольно сложными, когда вы начнете их реализовывать. Чем проще для ваших пользователей, тем больше работы кодер должен делать. Но это также делает кодирование интересным в долгосрочной перспективе ... Не сдавайтесь.

2

Взгляните на PHP Sessions. Вы можете использовать $ _SESSION для хранения постоянной информации о пользователе, независимо от того, зарегистрированы они или нет.

0

Вы должны проверить, какая форма была отправлена ​​в вашем php-коде, используя атрибут name ваших форм. Так что, если ваша форма Войти имеет name="loginForm" и регистрация имеет name="regisForm" то в вашем коде это сделать

if(isset($_REQUEST['loginForm'])) { 

    ...//do something with loginForm 
    } 
    else if(isset($_REQUEST['regisForm'])) { 

    ..//do something with regisForm 

} 
3

Вот один подход.

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

session_start(); 

Затем, когда пользователь входит в систему с правильными учетными записями, сохранить некоторую информацию в глобальный массив $ _SESSION.Например, если у вас есть логин (имя пользователя, $ $ пароль) функцию, которая возвращала строку из базы данных пользователя (или объект пользователя):

if ($user = login($username, $password)) { 
    $_SESSION['user'] = $user->id; 
    // Probably store some other stuff about the user here too 
} 

Чтобы проверить, если вы вошли в систему:

if (!empty($_SESSION['user'])) { /* .. */ } 

И выйти из:

$_SESSION['user'] = false; 

Или

unset($_SESSION['user']); 

Очевидно, что это упрощенно, и вы, вероятно, захотите смотреть на вещи, как:

  • Изменение по умолчанию идентификатор сеанса в с session_id ($ ID) Функция
  • Создание объекта или ряд функций вокруг сеанс
  • Auto-заселение и освежающая информация о вашем пользователе

Но это начало.

Также см:

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