データベースとのやり取りでPHPを自分自身で学ぼうとしていて、「単純な」(ほとんどのものは相対的なものである可能性があります...)ログインスクリプトを実行しようとしています。最初に試したときに、session_registerについていくつかのエラーが発生しました$_SESSION['something'] = 'something'; に変更しようとしました。
私のデータベースにはユーザーが設定されています。正常に接続して適切なデータベースを選択できますが、ユーザー名とパスワードを入力すると、ログインフォームに戻ります。これは、失敗したときに行う必要があります。
廃止されたバージョンを使用したときにキャストされた間違ったユーザー名またはパスワードをキャッチする何かがあります。main_login.php、checklogin.php、login_success.php の 3 つのファイルがあり、以下に投稿します。
main_login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<meta http-equiv='content-type' content='application/xhtml+xml; charset=UTF-8' />
<title>Login</title>
<!-- JAVASCRIPTS -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="script/jquery.js"></script>
<!-- CSS FILES -->
<link rel='stylesheet' type='text/css' href='css/default.css' />
</head>
<body>
<div id='wrapper'>
<div id='loginform'>
<form action="checklogin.php" method='post' id='login'>
Username: <br />
<input type='text' name='username' /><br />
Password: <br />
<input type='text' name='password' /><br />
<input type='submit' value='Login' />
</form>
</div>
</div>
</body>
checklogin.php
<?PHP
//Server/database settings
ob_start();
$host = "localhost";
$username = "root";
$password = "";
$db_name = "user";
$tbl_name = "userdata";
//Connect to the server and select the database
mysql_connect("$host", "$username", "$password") or die ("cannot connect");
mysql_select_db("$db_name") or die ("cannot select DB");
//Get the username and password from the login form
//Prevent SQL injections
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string(md5($_POST['password']));
$username = stripslashes($username);
$password = stripslashes($password);
//$username = mysql_real_escape_string($username);
//$password = mysql_real_escape_string($password);
$sql = "SELECT * FROM $tbl_name WHERE username = '$username'
and password = '$password'";
$result = mysql_query($sql);
//Count the table row. 0 = No user exists
$count = mysql_num_rows($result);
//If $result is 1 the user exists
if($count == 1) {
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header('location:login_success.php');
}
/* //If the result match the $username && $password, table row will be 1
if($count == 1) {
session_register('username');
session_register('password');
header('location:login_success.php');
}*/
//If it does not match, give a return message
else {
echo 'Wrong Username or Password';
}
ob_end_flush();
?>
そして最後の login_success.php
<?PHP
session_start();
if (!isset($_SESSION['username'])) {
header('location:main_login.php');
}
?>
<html>
<body>
Login Successful
</body>
</html>
これにより、ログインページに戻ります:/
また、SQL インジェクションに対して脆弱なコードに気付いた場合は、遠慮なく指摘して、代わりに何をすべきかを提案してください。