96's blog

WEBサイト制作科 6ヶ月コース

PHP31(ログイン)

ブログ・PHPの勉強「ログイン」

ログイン

f:id:webtm2013:20131115103642p:image:w360

<!DOCTYPE HTML>
<htmllang="ja">
<head>
<metacharset="utf-8">
<title>ログイン</title>
<linkrel="stylesheet"href="style.css">
</head>
<body>
<divid="container">
<h1>スタッフ・ログイン</h1>
<formaction="02_check.php"method="post">
<p>スタッフコード</p>
<p><inputtype="text"name="code"size="20" autofocus required></p>
<p>パスワードを入力してください。</p>
<p><inputtype="password"name="password"size="20" required></p>
<inputtype="submit"value="確認画面へ">
</form>
</div>
</body>
</html>

入力エラー

f:id:webtm2013:20131115104350p:image:w360

<?php
try {
  $stcode = htmlspecialchars($_POST[ 'code' ]);
  $stpassword = htmlspecialchars($_POST[ 'password' ]);
  
  $dsn = 'mysql:dbname=shop; host=localhost';
  $user = 'root';
  $password = 'root';
  $dbh = new PDO( $dsn, $user, $password );
  $dbh -> query( 'SET NAMES UTF8' );

  $sql = 'SELECT name FROM mst_staff WHERE code=? AND password=?';
  $stmt = $dbh -> prepare( $sql );
  $data = $stcode;
  $data = $stpassword;
  $stmt -> execute( $data );

  $dbh = null;

  $rec = $stmt -> fetch( PDO::FETCH_ASSOC );
  if( $rec == false ) {
print <<<EOD
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>入力エラー</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="container">
<p class="notice">スタッフコードかパスワードが間違っています。</p>
<p><a href="01_login.php">戻る</a></p>
</div>
</body>
</html>
EOD;

}else{
 session_start();
  $_SESSION[ 'login' ] = 1;
  $_SESSION[ 'stcode' ] = $stcode;
  $_SESSION[ 'stname' ] = $rec[ 'name' ];
header('location:03_top.php');
}
}catch( Exception $e ) {
  print 'ただいま障害により大変ご迷惑をお掛けしております。';
  exit();
}

ショップ管理メニュー

f:id:webtm2013:20131115103643p:image:w360

<?php
session_start();
session_regenerate_id(true);

if(isset($_SESSION['login'])==false){
  print '<p>ログインされていません。</p>';
  print '<p><a href="01_login.php">ログイン画面へ</a></p>';
exit();
}
?>
<!DOCTYPE HTML>
<htmllang="ja">
<head>
<metacharset="utf-8">
<title>ショップ管理トップメニュー</title>
<linkrel="stylesheet"href="style.css">
</head>
<body>
<divid="container">
<header>
<h1>ショップ管理トップメニュー</h1>
</header>
<p><?php print $_SESSION['stname'].'さんがログイン中' ?></p>
<p><ahref="../staff/staff_list.php">スタッフ管理</a></p>
<p><ahref="../product/04_list.php">商品管理</a></p>
<p><ahref="./04_logout.php">ログアウト</a></p>
</div>
</body>
</html>

ログアウト

f:id:webtm2013:20131115104351p:image:w360

<?php
$_SESSION=array();
if(isset($_COOKIE[session_name()])==true){
  setcookie(session_name(),'',time()-42000,'/');}
@session_destroy();
?>
<!DOCTYPE HTML>
<htmllang="ja">
<head>
<metacharset="utf-8">
<title>ショップ管理ログアウト</title>
<linkrel="stylesheet"href="style.css">
</head>
<body>
<divid="container">
<header>
<h1>ショップ管理ログアウト</h1>
</header>
<p>ログアウトしました。</p>
<p><ahref="./01_login.php">ログイン画面へ</a></p>
</div>
</body>
</html>