ログイン・ログアウト処理

ログイン名とパスワードを使ったログイン処理を作ってみましょう。

ログイン画面を作成します。

login-input.php

<?php require ‘header.php’; ?>

<form action=”login-output.php”method=”post”>
    ログイン名<input type=”text” name=”login”><br>
    パスワード<input type=”password” name=”password”><br>
    <input type=”submit” value=”ログイン”>
</form>
<?php require ‘footer.php’; ?>
パスワードはtype属性をpasswordにします。パスワードは画面に表示されません。

login-output.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>

PHPで*セッションを使用する場合はsession_start関数を呼び出します。この関数はHTMLなどを出力する前に実行する必要があり、スクリプトの先頭で呼び出してます。

<?php
unset($_SESSION[‘customer’]);
セッションデータは配列を使って操作します。今回は顧客情報をcustomerに格納してます。
今回はログインにあたって、同名のユーザーが既にログインしていたらログアウト状態にするため、セッションデータから既に存在する顧客情報を削除します。指定した変数を削除するunset関数を使います。
$pdo = new PDO(‘mysql:host=localhost;dbname=shop;
charset=utf8′,’staff’,’password’);
PDOを使ってshopデータベースに接続します。PDOはPHPとデータベースの接続機能を与えます。
$sql = $pdo->prepare(‘select * from customer where login=?
and password=?’);
prepareメソッドを使って、SQL文を準備します。ログイン名とパスワード部分は?にしておきます。
$sql->execute([$_REQUEST[‘login’],$_REQUEST[‘password’]]);
executeメソッドを使ってSQL文を実行します。executeメソッドの引数は、SQL文の?の部分に設定する値の配列です。ここではリクエストパラメータから取得したものが該当します。
foreach ($sql as $row){
    $_SESSION[‘customer’]=[
        ‘id’=>$row[‘id’], ‘name’=>$row[‘name’],
        ‘address’=>$row[‘address’], ‘login’=>$row[‘login’],
        ‘password’=>$row[‘password’]
    ];
}
前項で実行した結果を、foreachループを使って処理します。
変数$rowには、データベースから取得した顧客テーブルの行が格納されます。各々の列名をキーにして配列にします。
この配列を$_SESSION[‘customer’]に代入します。
if(isset($_SESSION[‘customer’])){
    echo ‘ようこそ、’, $_SESSION[‘customer’][‘name’], ‘様’;
}else {
    echo ‘ログイン名またはパスワードが違います’;
}
?>

<?php require ‘footer.php’; ?>
ログインが成功した場合と失敗した場合のメッセージをif文を使い表示します。

ログインに成功し、その証拠に表示がされました。

ログアウト機能

ログアウト画面を作りましょう

logout-input.php

<?php require ‘header.php’; ?>

<p>ログアウトしますか?</p>
<a href=”logput-output.php”>ログアウトはこちら</a>
<?php require ‘footer.php’; ?>

まだログインしてない場合や、すでにログアウトしている場合は「すでにログアウトされています。」が表示されます。

logout-output.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>

<?php
if (isset($_SESSION[‘customer’])){
    unset($_SESSION[‘customer’]);

    echo ‘ログアウトしました’;
} else {
    echo ‘すでにログアウトされています。’;
}
?>

<?php require ‘footer.php’; ?>
ログアウトのスクリプトでもセッションをりようするので、最初にsession_start関数を呼び出します。

現在ログインしているかどうかをisset関数で調べます。
そしてログインしている場合には、unset関数を使って、顧客情報が格納された内容を削除します。

PHPについて

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


短期間でのレベルアップにはプロから学ぶのもありです。

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。

就職・転職支援