Вы на самом деле нужно подключиться к серверу каким-то образом выяснить студента существует. То, что вы обычно делали в этой ситуации, - это отправить форму на сервер и выполнить проверку на стороне сервера. Если ученик существует, вы возвращаете «следующую» страницу. Если ученик не существует, вы снова возвращаете (или перенаправляете на использование заголовка местоположения) ту же форму с сообщением об ошибке.
Другой популярный метод будет использовать запрос AJAX для проверки асинхронно (который я вижу многие другие люди рекомендуют). Я бы рекомендовал этот метод, только если вы действительно выполняете проверку правильности, поскольку они закончили ввод идентификатора студента и показывают сообщение об ошибке в режиме реального времени. Таким образом, AJAX - это хорошая возможность обеспечить быструю обратную связь с пользователем, но не реальное решение. Имейте в виду, что независимо от этого вам необходимо проверить и обработать это, когда форма отправлена в любом случае или, по крайней мере, подумайте о том, что произойдет, когда форма будет отправлена с недопустимым идентификатором.
- Люди могут обойти эту проверку (каждый запрос со стороны клиента считается враждебным, вы не можете полностью доверять ничего)
- Другой пользователь может удалить идентификатор студента между временем проверки было сделано, и форма была отправлена
- Там может быть ошибка в коде, который вызывает проверку ложно передать или не признавать отрицательный ответ
Выполнение AJAX onsubmit не имеет смысла, так как эффективно вы удваивая объем работы заставив сервер обрабатывать два отдельные запросы в строке. Это просто неправильный ответ на проблему.
Самая большая проблема с этой реализации код PHP может быстро получить довольно волосатый и трудно следовать, как вы все смешаны вместе.
Это то, где вы, вероятно, начинаете опрокидывать PHP, как язык шаблонов (смешанный PHP-код и html-разметку), и начинаете использовать фреймворк, где ваши представления (HTML) отделяются от вашего PHP-кода (если вы При использовании очень заполненного MVC pattern этот код называется вашим контроллером - именно потому, что он контролирует реакцию сервера). Так будет работать любой профессиональный разработчик. Kohana, CakePHP и Zend - все примеры довольно популярных фреймворков MVC, все из которых используются профессионально.
Вы ** широко открыты ** для SQL-инъекций и ** вы будете взломаны **, если вы еще не были. Научитесь делать подготовленные запросы с помощью PDO, чтобы полностью избежать этой проблемы. – Brad
Вы слышали о mysql_num_rows? Вы можете использовать это, чтобы убедиться, что ваш запрос возвращает результат и действует соответственно, отображает ошибку, если она равна 0, а если нет, то разрешить пользователю продолжить. http://php.net/manual/en/function.mysql-num-rows.php – davidjwest