忍者ブログ

からすまる日誌

20200207 今日の最後のコード

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20200207 今日の最後のコード


確認しておいた方がいい点がすっごくある。ノートを取ったりエラーで頭が固まってるあいだに説明があったんだろうが、構造がわかってないところが多すぎる。
あと何と馬鹿にされようとコードにコメントは付けるように。その時わかっても後でわからないんじゃ意味がない。
 

index.php

<?php
session_start();
$msg="";

//初めて開く場合と認証しようと思って開く場合と2種
if(!empty($_POST["u_id"]) && !empty($_POST["pass"])){ //postされたu_idもpassもemptyでない
 if(!empty($_POST["ticket"]) && $_POST["ticket"]==$_SESSION["ticket"]){ //このページ内でhiddenで発行されたticketを持っている、かつpostされたticketとsession変数のticketが一致する
  //認証開始
  $user="root";
  $dbpass="";
  $host="localhost";
  $dbname="auth";
  $dsn="mysql:host={$host};dbname={$dbname};charset=utf8";
  $pdo=new PDO($dsn, $user, $dbpass);
  $sql = "SELECT * FROM users WHERE u_id=:u_id"; //dbのu_idと、"あるもの"が一致するものをひっぱってほしい。あるものについては追って連絡するから。
  $stmt = $pdo->prepare($sql);

  $stmt->bindValue(":u_id",$_POST["u_id"],PDO::PARAM_STR); //"あるもの"とはユーザーが入力しpostされた$_POST["u_id"]である。
  //$stmt->bindValue(":pass",$_POST["pass"],PDO::PARAM_STR);
  $stmt->execute();

  $row=$stmt->fetch(PDO::FETCH_ASSOC);
  if(password_verify($_POST["pass"],$row["pass"])){
   //ログイン成功
   //$name=$row["nickname"];
   $_SESSION["login"]=true;
   $_SESSION["name"]=$row["nickname"];
   header("Location: mypage.php");
   exit();
  }else{
   //ログイン失敗
   $msg="ログインできませんよ";
   $_SESSION["login"]=false;
  }
 }
}

$ran=rand(100,999);
$salt="tekitounamoji";
$ticket=md5($salt . $ran);
$_SESSION["ticket"] = $ticket;

?>

<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>ログイン認証</title>
  <link rel="stylesheet" href="auth.css">

 </head>
 <body>
  <div id="container">
   <form method="post" action=""//このpost先はこのページ本体でよいのか?
    <table>
      <tr>
      <th><label for="u_id">ユーザー名</th>
     <td><input type="text" name="u_id" id="u_id"></td>
     </tr>
     <tr>
      <th><label for="pass">パスワード</label></th>
      <td><input type="password" name="pass" id="pass"></td>
     </tr>
    </table>
    <p><button type="submit">認証</button></p>
    <input type="hidden" name="ticket" value="<?php echo $ticket; ?>">
   </form>
   <p><?php echo $msg; ?></p>
  </div>

 </body>
</html>
 


mypage.php

<?php
session_start();
if(empty($_SESSION["login"])){
 header("Location:index.php"); //ログイン画面に強制移動
 exit();
}
?>

<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>マイページ</title>
  <link rel="stylesheet" href="auth.css">

 </head>
 <body>
  <div id="container">
   <h1 class="hoge"><p>ようこそ<?php echo $_SESSION["name"]; ?>さん!</p></h1>
   <p>会員じゃないとみられないクエの絵</p>
   <p>あぶらぼうず</p>
   <p>たこ</p>
  </div>
 </body>
</html>


auth.css

body{
 background:#eff;
 background-image:url("../img/fish_kue2.png");
 background-repeat:no-repeat;
 background-position: right;
}
#container{
 width: 80%;
 margin: auto;
}
table{
 border: solid 1px #333;
 border collapse: collapse;
 background:#fff;
}
th,td{
 padding: 0.2rem 0.5rem;
 text-align: left;
 border: solid 1px #333;
}
th{
 background:#cff;
}
.hoge{
 background-color:#fff;
}

PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30