Возврат меньшего количества данных происходит быстрее, но это не настоящая причина. У вас уже есть имя пользователя, зачем его повторять? Я имею в виду, если оно совпадает, то оно совпадает. Что касается пароля, вам НИКОГДА не следует извлекать значение, хранящееся в базе данных, по соображениям безопасности. ЛЮБОЙ запрос, который вы создаете и который идет где-то РЯДОМ с этой информацией, должен быть однонаправленным. Отправка значения в sql для проверки и даже НЕ ПЫТАНИЕ получить значение на стороне кода. Следовательно, почему сразу после выполнения этого запроса я бы даже удалил содержимое $_POST['password'], как только закончил с ним, на всякий случай. (ха, я сделал это в примере выше, даже не задумываясь об этом!)
Вот почему при входе в систему я перехватываю и проверяю еще до того, как позволю чему-либо вывести информацию о результатах.
Причина, по которой я не стал бы перенаправлять, заключается в том, что я склонен использовать метод под названием «один индекс, чтобы управлять ими всеми» - так же, как Голлум с сигналящим кольцом матери, я использую ОДИН index.php для всех запросов страниц.
Но даже если бы я не был чем-то вроде ловушки входа в систему, я бы имел это на КАЖДОЙ странице системы PHP (один индекс делает это проще), так что успех или отсутствие успеха вы можете просто перейти к поставленной задаче, а не бездельничать. с редиректами. У меня даже не было бы отдельного «login.php», поскольку мой include('user.php') перехватывал бы попытку входа в систему, в случае неудачи загрузил бы неудачное сообщение и снова отобразил бы меню на ТО ЖЕ URL-адресе, если бы не попытка входа в систему. посмотрите, вошел ли пользователь в систему через свой идентификатор сеанса, если он установлен, извлеките любую информацию о пользователе, которая может понадобиться странице, а затем просто покажите действие/страницу, на которой он уже был. Для этого вам не нужно перенаправление.
Единственное, что может дать вам перенаправление, — это избежать случайной повторной отправки, но именно здесь отправка случайного хэша в форме и сравнение его с хешем в сеансе, а затем аннулирование хеша в сеансе при каждом запросе предотвращает это — и в целом масса других гадостей.
Это делается ДЛЯ ВАС, если вы используете PDO или mysqli с подготовленными запросами - черт возьми, именно эта причина является частью того, почему вы НЕ должны использовать функции mysql_ и ПОЧЕМУ вы должны использовать подготовленные запросы ВСЕГДА, когда вы помещаете переменную в запрос. Если вы добавите переменную в строку запроса, вы все сделаете неправильно!
Вот почему вся эта ерунда с регулярными выражениями вообще не нужна... тем более MD5? ДЕЙСТВИТЕЛЬНО? Передавай от меня привет Мистеру Радужному Столу!