送信続きからデータベース接続まで、ログイン処理その2「PHP」

こんにちは、前回の「フォームから送信まで、ログイン処理その1「PHP」」に引き続き
今回は、送信の続きからデータベースへ接続をやっていこうと思います。
これは、前回までのです。
フォームから送信まで、ログイン処理その1「PHP」
それでは前回のを基盤に進んでいきます。
<!DOCTYPE html>
<html lang=“ja”>
<head>
    <meta charset=“UTF-8”>
    <title>Document</title>
</head>
<body>
   <?php
  
if(isset($_POST[‘hid’])){
    if($_POST[‘id’] && $_POST[‘pw’]){

?>
<h1>ログイン画面</h1>
<hr>
<br>
    <form action=“” method=“POST”>
        <input type=“hidden” name=“hid” value=“hid”/>
        ID:<input type=“text” name=“id” value=“”><br>
        PW:<input type=“password” name=“pw” value=“”>
        <input type=“submit” value=“ログイン”>
        </form>
</body>
</html>

ここからですね。
送信続き


IDとパスワードが送信されたら

   if($_POST[‘id’] && $_POST[‘pw’]){
//この中に処理
}

今回は、null値つまりフォームから空のまま送信されたら
処理は行わないようにセットしてあります。
$_POST[‘id’] フォームで入力したID
$_POST[‘pw’]フォームで入力したパスワード

もしもこの二つがNULL値以外だったら処理を開始するにしてあります。
つまり
if($_POST[‘id’] && $_POST[‘pw’]){
    }else{
        echo “ID、パスワードを入力してください”;
    }
 

このように、書いてもいいですね!
では //この中に処理 の中に書いていきます。
  $id = $_POST[‘id’];
  $pw = $_POST[‘pw’];

いちいち、書くのが面倒なので
取り敢えず、$id , $pwに入れます。
それで完了です。
データベース接続



 
では次にデータベースを選択していきます。
(僕は、というか今回はMySQLにつなげてます。)
    $username=“ユーザー名”;
    $password=“パスワード”;
    $dbname=“データベース名”;

こちらを入力していきます。
今回は、PHP と MySQL データベースの間の接続をmysqliでやっていきます。
ちなみに
mysqliの書き方は、
手続き型ではなくオブジェクト型でやっていきます。
$mysqli = new mysqli(‘ホストまたはIP’,$username,$password);

そちらには、ホストかIPを入れていきます。
僕は、自分のPCだったのでlocalhostでした。
次に、
    $mysqli->set_charset(‘utf8’);

こちらをセットしました。
これをセットしないと、文字化けします。
そして、データベースに接続できなかった場合を
書いていきましょうw

if($mysqli-> connect_errno){
    print(‘<p>データベースへの接続に失敗しました。</p>’.$mysqli ->connect_error);
    exit();
}
$db_selected = $mysqli->select_db($dbname);
if (!$db_selected){
    die(‘データベース選択失敗です。’.mysql_error());
}

表示の仕方も違ってすみません・・・・
果たして、この二つ、1つではいいのでは!?という感じがしますw

結局は同じことしてますもんね・・・!?

まあ、安全に僕は書いておきます!

MySQLから呼び出す!

$sql = SELECT * FROM テーブル名;
$stmt = $mysqli ->query($sql);

このような感じになりました。
SQL文でアスタリスクはすべてという意味なので
この処理をすればテーブル内のデータは選べますが、
あまりよくないのかな・・・と思います。
HTMLのフォームから直接SQL文を入力してしまうと
実行してしまう、そして、中の個人情報を取り除かれたり消されたりと
SQLインジェクションといいますね・・
これは開発者がいけないですよね・・対策。
でも僕は無知すぎてわからないのでw
楽な方法を選んでしまいました。

今日のまとめ!


<!DOCTYPE html>
<html lang=“ja”>
<head>
    <meta charset=“UTF-8”>
    <title>Document</title>
</head>
<body>
   <?php

if(isset($_POST[‘hid’])){
    if($_POST[‘id’] && $_POST[‘pw’]){

    $username=“ユーザー名”;
    $password=“パスワード”;
    $dbname=“データベース名”;
    $mysqli = new mysqli(‘ホストかIP’,$username,$password);

    $mysqli->set_charset(‘utf8’);

if($mysqli-> connect_errno){
    print(‘<p>データベースへの接続に失敗しました。</p>’.$mysqli ->
    connect_error);
    exit();
}$db_selected = $mysqli->select_db($dbname);
if (!$db_selected){
    die(‘データベース選択失敗です。’.mysql_error());
}
    $sql = SELECT * FROM テーブル名;
    $stmt = $mysqli ->query($sql);
}else{
        echo “ID、パスワードを入力してください”;
}
?>
<h1>ログイン画面</h1>
<hr>
<br>
    <form action=“” method=“POST”>
        <input type=“hidden” name=“hid” value=“hid”/>
        ID:<input type=“text” name=“id” value=“”><br>
        PW:<input type=“password” name=“pw” value=“”>
        <input type=“submit” value=“ログイン”>
        </form>
</body>
</html>


では今回はこの辺で終わります!
次回もこちらに付け加えてく形で進めていきます!
次回の内容は、foreach文とSESSION(セッション)で
複数のページ間で共有できる変数持つ仕組みについて
書いていきます!

ありがとうございます。

 

コメント

タイトルとURLをコピーしました