ログインデータをデータベースと比較するPHPスクリプトを使用して、動作中のHTMLログインページを作成しようとしています。 私はこれをしばらくの間稼働させようとしていますが、実際にはうまくいきます。これは私がログインボタンで押したときに私が取得エラーコードです:PHPでデータベースに接続するHTMLログインを作成するにはどうすればよいですか?
Cannot POST /connectivity.php
私はXAMPPで(leftover_youthと呼ばれる)のデータベースを作成しました。
UserNameID
userName
pass
これは現時点でページ全体のHTMLコードです。
<html>
<head lang="en">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui" name="viewport">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="scripts/app.js"></script>
<link rel="stylesheet" href="css/stylesheet.css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<title>Project Bootstrap</title>
</head>
<body>
<header>
<div class="navlogo">
<a href="index.html">
<h1 class="Logo">Leftover Youth</h1>
</a>
<a href="index.html">
<img class="logoo" src="img/logoo.png" alt="firstimage">
</a>
</div>
</header>
<div>
<fieldset style="width:30%">
<legend>LOG-IN HERE</legend>
<form method="POST" action="connectivity.php"> User <br>
<input type="text" name="user" size="40"><br> Password <br>
<input type="password" name="pass" size="40"><br>
<input id="button" type="submit" name="submit" value="Log-In">
</form>
</fieldset>
</div>
</body>
</html>
PHP:
<?php define('DB_HOST', 'localhost');
define('DB_NAME', 'leftover_youth');
define('DB_USER','root');
define('DB_PASSWORD','');
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());
$ID = $_POST['user'];
$Password = $_POST['pass'];
function SignIn()
{
session_start(); //starting the session
if(!empty($_POST['user'])) //checking User data
{
$query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error());
$row = mysql_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['pass']))
{
$_SESSION['userName'] = $row['pass'];
echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE...";
}
else
{
echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
}
}
}
if(isset($_POST['submit'])) { SignIn();
}
?>
まず、訪問のhttp:// bobby-tables.comとSQLインジェクションとその防止方法について学びましょう。今すぐあなたのコードは本当に脆弱で、あなたのシステムの知識がなくても数秒でデータベース全体を削除できます。 Alwqysは、ユーザ入力を伴う問い合わせに対して準備されたステートメントを使用する!!また、 'mysql_ *'を使うのをやめてください。これは廃止され、PHP7ではサポートされなくなりました。代わりに 'mysqli_ *'または 'PDO_ *'ドライバを使用してください。準備された文をサポートします。また、 'PHP password verify function'のためのgoogle - あなたのデータベースに平文のパスワードを保存しないでください。 – Twinfriends
mysqliと 'prepared statements'の使い方 – Pedram
あなたのプロジェクトでライブをしたいのであれば、あなた自身で作成するのではなく、すでに存在するログインシステムを使うことをお勧めします。ログインシステムは、あなたが本当にそれらを安全にしたいと思っていれば非常に難しい話題です。そして私は、あなたがセキュリティとPHPを最近書く方法について多くのことを知らないことがわかります。それは犯罪ではないので、私は2017年にデータベースにどのように問い合わせるか、準備されたステートメントについて学ぶか、単純に完成したシステムを使うかのどちらかをお勧めします。今はあなたのコード、つまり安全ではない方法で決して生きることはありません。 – Twinfriends