Ваша форма в основном не имеет валидаций. Кроме того, есть возможности для инъекций SQL. подтвердите свое поле электронной почты перед отправкой. Попробуйте:
if(!filter_var($email_variable,FILTER_VALIDATE_EMAIL){
//throw some kind of exceptions or kill the process
}
Я также рекомендую использовать PDO, поскольку он поддерживает использование подготовленных операторов. Существует удивительная функция, которая может связыватьParam(), которая связывает ваши параметры.
TRY:
$DBH = new PDO("mysql:host=localhost;dbname=test", 'root', '');
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$STH = $DBH->prepare("SELECT * FROM student_table WHERE studentID= :id");
$id = 1; // here you should keep it as variable and pass it to param
$STH->bindParam(':id', $id, PDO::PARAM_STR);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
Кроме того, не публикуйте исходные пароли непосредственно в базе данных. Либо используйте встроенный алгоритм хэширования php, либо используйте некоторую функцию шифрования для их защиты.
** Никогда не храните простые текстовые пароли! ** Для работы с парольной безопасностью используйте встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html). Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). Удостоверьтесь, что вы *** [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) *** или используйте любой другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –
[Маленький Бобби] (http://bobby-tables.com/) говорит *** [ваш скрипт подвержен риску инъекций SQL.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) *** Узнайте о [подготовленном] (http://en.wikipedia.org/wiki/Prepared_statement) для [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! [Не верьте?] (Http://stackoverflow.com/q/38297105/1011527) –