19-3 DBを使った場合
データベースに登録されているユーザ名とセッション変数に登録されている
ユーザ名が同じかで、セッションを管理しているサンプルが以下である。
1)ログイン画面(ファイル名:login.html)
<html>
<head>
<title>ログイン画面</title>
</head>
<body>
ログイン画面<br>
<form name="form1" method="post" action="loginpage1.php">
ユーザ名:
<input name="fUserName" type="text" id="fUserName">
<br>
パスワード:
<input name="fPassWd" type="password" id="fPassWd">
<input type="submit" name="Submit" value="ログイン">
<input name="Reset" type="reset" id="Reset" value="クリア">
</form>
</body>
</html>
2)ログオンページ1(マイページ)(ファイル名:loginpage1.php)
<html>
<head>
<title>ログインページ1(マイページ)</title>
</head>
<body>
<?php
$sUserName=$_POST["fUserName"];
$sPassWd=$_POST["fPassWd"];
$MySQL['HOST']="localhost";
$MySQL['USER']="root";
$MySQL['PASSWORD']="*****";
$MySQL['DATABASE']="userid_db";
$MySQL['conn']=mysqli_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']) or exit("MySQLへ接続できません。<br>");
print("MySQLへ接続できました。<br>");
mysqli_select_db($MySQL['conn'],$MySQL['DATABASE']) or exit("データベース名が間違っています。<br>");
$MySQL['SQL']="SELECT * FROM userid_tbl where userName='".$sUserName."' and passWd='".$sPassWd."';";
$MySQL['result']=mysqli_query($MySQL['conn'],$MySQL['SQL']) or exit("データの抽出に失敗しました。<br>");
if(mysqli_num_rows($MySQL['result'])!=0){
session_start();
$_SESSION["USERNAME"]=$sUserName;
print("ログオンしました。ログインページ1(マイページ)<br>");
print("<font color='red' size='5'>".$sUserName."さま ようこそ"."</font><br>");
?>
<a href="loginpage2.php" target="_blank">ログインページ2へ</a>
<?php
}
else{
?>
ログイン画面<br>
<font color="red">ログオンに失敗しました。もう一度やり直してください。</font><br>
<form name="form1" method="post" action="loginpage1.php">
ユーザ名:
<input name="fUserName" type="text" value="<?php print($sUserName) ?>">
<br>
パスワード:
<input name="fPassWd" type="password" id="fPassWd">
<input type="submit" name="Submit" value="ログイン">
<input name="Reset" type="reset" id="Reset" value="クリア">
</form>
<?php
}
mysqli_close($MySQL['conn']);
?>
</body>
</html>
3)ログインページ2(登録情報の変更)(ファイル名:loginpage2.php)
<html>
<head>
<title>ログインページ2</title>
</head>
<body>
ログインページ2(登録情報の変更)<br>
<?php
$MySQL['HOST']="localhost";
$MySQL['USER']="root";
$MySQL['PASSWORD']="*****";
$MySQL['DATABASE']="userid_db";
session_start();
$MySQL['conn']=mysqli_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']) or exit("MySQLへ接続できません。<br>");
print("MySQLへ接続できました。<br>");
mysqli_select_db($MySQL['conn'],$MySQL['DATABASE']) or exit("データベース名が間違っています。<br>");
$MySQL['SQL']="SELECT * FROM userid_tbl where userName='".$_SESSION["USERNAME"]."' and passWd='".$_SESSION["PASSWORD"]."';";
$MySQL['result']=mysqli_query($MySQL['conn'],$MySQL['SQL']) or exit("データの抽出に失敗しました。<br>");
if(mysqli_num_rows($MySQL['result'])!=0){
print("<font color='red' size='5'>".$_SESSION["USERNAME"]."さまのページです。</font><br>");
print("同じセッションです。<br>");
?>
<a href="logout.php">ログアウト</a>
<?php
}
else{
print("ログインしないと操作できません。");
exit();
}
?>
</body>
</html>
4)ログアウト画面(ファイル名:logout.php)
<html>
<head>
<title>ログアウト画面</title>
</head>
<body>
ログアウト画面<br>
<?php
session_start();
print("<font color='red' size='5'>".$_SESSION["USERNAME"]."さま。ありがとうございました。</font><br>");
print("ログアウトしました。<br><br>");
session_unset();
session_destroy();
?>
もう一度ログインしますか?<br>
もう一度ログインする場合は、以下からリグインしてください。
<form name="form1" method="post" action="loginpage1.php">
ユーザ名:
<input name="fUserName" type="text" id="fUserName">
<br>
パスワード:
<input name="fPassWd" type="password" id="fPassWd">
<input type="submit" name="Submit" value="ログイン">
<input name="Reset" type="reset" id="Reset" value="クリア">
</form>
</body>
</html>