2014-11-11 3 views
1

Я пытаюсь возиться с простой формой входа в систему, это просто для удовольствия. Содержание ничего не чувствительно, но я пытаюсь узнать SESSION и тому подобное. Я создал эту простую форму входа, которая работает нормально, но если пользователь нажимает кнопку "home", которая равна href'd, process_login.php, им предлагается снова войти в систему. Я пытаюсь сохранить username и password его в SESSION так, если они войти в систему, и нажмите home с любой страницы, он будет помнить их регистрационную информацию и не попросить их постоянно войти.PHP: Создайте простую регистрационную форму без MySQL

У меня есть form.php сценарий, который использует метод POST, с двумя textfields, имя пользователя и пароль сохраняются как «admin» в process_login.php, и если они соответствуют POSTindices из формы, тогда я буду включать content.php. В process_login.php я беру данные POST и запустить его следующим образом:

SESSION_start(); 
//var_dump($_POST); 
$match_username = 'admin' ; 
$match_password = 'admin'; 

if(isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if($username == $match_username && $password == $match_password){ 
     include 'content.php'; 
    }elseif($username == "" || $password != $match_password){ 
     echo "Please try again."; 
    } 
    if(!isset($_SESSION["logged_in"])){ 
     //Run if not set 
     $_SESSION["logged_in"] = array(1 => array($username => $_POST['username'], $password => $_POST['password'])); 
    }; 
}; 

Глядишь выше, что я пытаюсь установить информацию сессии, но я знаю, что я делаю это не правильно. Как только пользователь входит в систему, все работает. Но если тот же пользователь нажимает «домой» с другой страницы, он скажет им «Please try again.». Я хочу, чтобы пользователь оставался включенным в систему после их входа в систему.

Все советы приветствуются. Спасибо!

+0

Итак, где находится «дом»? –

+0

Просто HTML-кнопка ниже всего с href = "process_login.php" – ValleyDigital

+0

Убедитесь, что у вас также есть аналогичный код сеанса в «домашнем». –

ответ

2

Ваш тест $_SESSION["logged_in"] не должен находиться внутри блока if(isset($_POST['submit'])).

if (isset($_SESSION['logged_in'])) { 
    include 'content.php'; 
    exit(); 
} 
if (isset($_POST['submit'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if($username == $match_username && $password == $match_password){ 
     $_SESSION["logged_in"] = array('username' => $_POST['username'], 'password => $_POST['password']); 
     include 'content.php'; 
     exit(); 
} elseif($username == "" || $password != $match_password){ 
    echo "Please try again."; 
} 
// Put login form here 

Я изменил вашу переменную $_SESSION["logged_in"]. Теперь это всего лишь одномерный массив вместо 2-мерного, а клавишами являются слова username и password - здесь нет смысла использовать переменные в качестве ключей.

+0

Я думаю, что '$ username => $ _POST ['username']' как элемент массива любопытен жуткий. Но все же это может существовать. –

+0

Я этого даже не заметил. Я заметил, что у него было дополнительное измерение, но он не думал, что это достаточно важно для исправления. Но теперь я исправил ключи и удалил измерение, пока я был на нем. – Barmar

+0

Работает идеально. Я изменил первую строку на $ _SESSION из $ _POST. Спасибо @Barmar if (isset ($ _ SESSION ['logged_in'])) { включает 'content.php'; exit(); } – ValleyDigital

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