Помогите новичку с системой входа в систему на основе PHP - PullRequest
0 голосов
/ 15 апреля 2010

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

Создайте простой файл login.php. Там будет форма, действие которой настроено на себя. Он проверит, была ли нажата отправка, и подтвердит ли он, что пользователь ввел действительный пароль / имя пользователя. Если это так, установите переменную сеанса, сохраните некоторую информацию для входа (имя пользователя, НЕ пароль) и перенаправьте их в ограниченную область. Если данные для входа недействительны, сохраните сообщение об ошибке в переменной сеанса, отобразите сообщение об ошибке с дальнейшими инструкциями и дождитесь повторной отправки пользователем. Вот часть того, что у меня есть - надеюсь, один из вас, экспертов, поймет, где я ошибся, и даст мне некоторое представление:

<?php
session_start();

if(isset($_POST['submit'])) {
    if(!empty($_POST['username']) AND !empty(!$_POST['password']))
    {
        header("Location: http://www.google.com");
    } else {
        $err = 'All the fields must be filled in!';
    }
}

if($err) {
    $_SESSION['msg']['login-err'] = $err;
}
?>

Теперь вышеприведенный пример является лишь примером - целью вышеприведенного кода является обработка ввода пользователя, при этом скрипт просто проверяет, что пользователь ввел ввод имени пользователя и пароля. Если они есть, я бы хотел, чтобы в этом случае они были перенаправлены на google.com (для примера). Если нет, сохраните сообщение об ошибке. Учитывая мой текущий код, сообщение об ошибке будет отображаться отлично, однако, если пользователь отправляет и вводит что-то для имени пользователя и пароля, страница просто не перенаправляется. Я уверен, что это глупый вопрос, но я новичок, и, честно говоря, сейчас немного раздражен. Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 15 апреля 2010

Ну, не глядя на остальную часть вашего кода, трудно сказать. Но с заголовками заголовок должен быть отправлен до того, как что-либо будет записано в поток ответов (т. Е. Перед любыми операторами echo ИЛИ любым кодом, который не включен в теги <?php ... ?>), поэтому может быть причиной того, что он не перенаправляет. Код, который вы предоставили, выглядит хорошо для меня.

0 голосов
/ 13 декабря 2012
if(!empty($_POST['username']) AND !empty(!$_POST['password']))
                                         ^--- negating a string = pointless

Эту логику читать крайне некрасиво, вы должны повторить ее как:

if(empty($_POST['username']) OR empty($_POST['password'])) {
   die("Fill in both fields");
}
...