Показать сообщение отдельно
  #7 (permalink)  
Старый 14.05.2017, 16:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вы считаете, что в первую очередь для вас важен клиент? Это при том, что на сервере бардак:

$email = addslashes($_POST['email']); - бесполезная операция, куда более полезнее удалять слеши расставленные пользователем.

$email = htmlspecialchars($_POST['email']); - это что означает, что в базу данные записываются исключительно после htmlspecialchars? Если да, то это не понимание назначения данной функции, и полная бессмыслица. А если нет, то как можно найти совпадения не преобразованных с преобразованными? То есть это тоже бесполезная и вредная в данном случае операция.

$email = mysql_real_escape_string(trim($_POST['email'])); - это да, экранировать параметры запроса необходимо. Но с чего вдруг mysql_real_escape_string когда необходимо mysqli_real_escape_string, и почему так, а не использование средства самого драйвера: подготовленные запросы и метки?

$result = $mysqli->query("SELECT `email` FROM `users` WHERE `email` = '$email'"); - это с таким же успехом может проверить и так:

"SELECT 1 FROM `users` WHERE `email` = ?"

это запрос с учетом подготовленных запросов. Ну а далее можно просто проверить количество возвращенных записей (что не принципиально, конечно). Но !$email == $myrow['email'] не дает ответа на вопрос заполнено ли вообще поле адреса, а ведь оно обязательно для заполнения.

По логике, проверка адреса и пароля, тут неизвестно чего вам хочется. Например, можно проверять адрес (есть/нет такой) по кнопке Проверить, при потере фокуса или иначе. Но при приеме формы придется опять его проверять, а также корректность его, также проверять пароль, его наличие и желательно чтобы он были 123 и т.п. У вас же в общем то нет ни проверки, ни диалога.
Ответить с цитированием