- ctype_digit: documentation ( source)
- trim: documentation ( source)
- session_start: documentation ( source)
- header: documentation ( source)
<?php
session_start();
$error_message = "";
// ログインボタンが押されたかを判定
// 初めてのアクセスでは認証は行わずエラーメッセージは表示しない
if (isset($_POST["login"])) {
// ID・パスの入力チェック
if (trim($_POST["user_id"]) == ''){
$error_message = "ID・パスワードを入力してください";
exit();
}
elseif (trim($_POST["password"]) == ''){
$error_message = "ID・パスワードを入力してください" ;
exit();
}
elseif (!ctype_digit($_POST["user_id"]) == false) {
$error_message = "IDは半角数字で入力してください";
exit();
}
elseif (!ctype_digit($_POST["password"]) == false) {
$error_message = "パスワードは半角英数字で入力してください";
exit();
}
// DB
$url = "localhost";
$user = "root";
$pass = "";
$db = "test";
// MySQLへ接続する
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
// データベースを選択する
$sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
// クエリを送信する ID・パス照会
$sql = "select * from user ";
$sql.= "where user_id= " . $_REQUEST["user_id"] ;
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。
<br/>SQL:".$sql);
$row = mysql_fetch_assoc($result);
// ①パスワードが一致する場合、ログイン
if ($row["password"] == $_REQUEST["password"]){
// ログインが成功した証をセッションに保存
$_SESSION["user_id"] = $_REQUEST["user_id"];
$_SESSION["name"] = $row["name"];
$_SESSION["user_class"] = $row["class"];
// トップ画面へリダイレクト
$login_url = "top.php";
header("Location: {$login_url}");
}
// ②一致しない場合、エラーメッセージを格納
else{
$error_message = "ID・パスワードをお確かめください。";
}
// MySQLへの接続を閉じる
mysql_close($link) or die("MySQL切断に失敗しました。");
// ボタン判定終わり
}
?>
<html>
<head>
<title>ログイン画面</title>
</head>
<body>
<center>
<br>
<br>
<font size="2" >日程調整ツール「作成さん」</font><br>
<br>
<font size="5" >ログイン</font><br>
<br>
<br>
<?php
if ($error_message) {
print '<font color="red">'.$error_message.'</font>';
}
?>
<!-- できたらフォーム位置調整 -->
<form action="login.php" method="POST">
ID:<input type="text" name="user_id" value="" /><br />
パスワード:<input type="password" name="password" value"" /><br />
<input type="submit" name="login" value="送信" />
</form>
</center>
</body>
</html>