私は、mysqlデータベースとシンプルなPHPスクリプトを使って簡単なPHPログインシステムを設定しようとしています。それは1つの小さなエラーで動作しているようです。間違った資格情報でログインすることもできます。私はPHPで簡単なログインシステムを設定しようとしています。実行されますが、間違った資格情報でログインすることもできます。私は間違って何をしていますか?
実際にはrietool.roxtest.nlで確認できます。
私のコードは:誰もがOU私を助けることができれば
<?php
// get values passed from form in login.php file
$username = $_POST['username'];
$password = $_POST['password'];
// to prevent mysql injection
$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
// connect to the server and select database
mysql_connect("my database info");
mysql_select_db("roxtest_nl_RIEtool");
// query the database for username
$result = mysql_query("Select * from users where username = '$username' and password = '$password'")
or die ("Failed to query database" .mysql_error());
$row = mysql_fetch_array($result);
if ($row['username'] == $username && $row['password'] == $password) {
echo "login geslaagd, welkom";
} else {
echo "login mislukt, probeer opnieuw";
}
?>
、それをいただければ幸いです!
はFYI私は、このチュートリアルに従っ:https://www.youtube.com/watch?v=arqv2YVp_3E
[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php)***。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –
*** [mysql_ *関数の使用をやめる](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)*** [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)がPHP 7で削除されました。[prepared](http://en.wikipedia.org/wiki/Prepared_statement)について学んでください。 )[PDO](http://php.net/manual/en/pdo.prepared-statements.php)と[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared- statements.php)、PDOの使用を検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –
**プレーンテキストのパスワードを保存しないでください!**パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 *** [パスワードをエスケープしない](http://stackoverflow.com/q/36628418/1011527)***を確認するか、ハッシュする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –