はじめに
※自身の学習を記事に投稿することでアウトプットするのが目的です。
「よくわかるPHPの教科書」のchapter6に書いてある通りにアプリを
作成していくので、私と同じような駆け出しエンジニアの皆さんは、
書籍を買ってアプリを作っていただいた方がわかりやすいかもしれません。
使用しているエディタ、実行環境
-
VS Code
-
XAMPP
-
PHP7
-
windows
ログイン処理を作成していく
この辺は、今まで作ったプログラムの応用で作れるので、
サクサクとコードを載せていきます。
<?php
require('dbconnect.php');
session_start();
//ログインの処理
if ( !empty( $_POST ) ) {
//emailとパスワードが入力されたら
if ( $_POST[ 'email' ] != '' && $_POST[ 'password' ] != '') {
//$dbから、入力されたemailとパスワードを指定して$memberに格納する。
$login = $db -> prepare( 'SELECT * FROM members WHERE email=? AND password=?' );
$login -> execute( array( $_POST[ 'email' ], sha1( $_POST[ 'password' ]) )); 、
$member= $login -> fetch(); //
//もし$memberに値が格納されたら
if ( $member ) {
//ログイン成功
$_SESSION[ 'id' ] = $member[ 'id' ];
$_SESSION[ 'time' ] = time();
header( 'Location:index.php'); exit();
//ログイン失敗
} else {
$error[ 'login' ] = 'failed';
}
//入力が空だったら$errorにblankを格納する。
} else {
$error[ 'login' ] = 'blank';
}
}
?>
ログイン情報を残すために、COOKIEを使う
if ( $_COOKIE[ 'email' ] !='' ) {
$_POST[ 'email' ] = $_COOKIE[ 'email'];
$_POST[ 'password' ] = $_COOKIE[ 'email' ];
$_POST[ 'save' ] = 'on'
}
HTMLを作成する
<div id="lead">
<p>メールアドレスとパスワードを記入してログインしてください。</p>
<p>入会手続きがまだの方はこちらへどうぞ。</p>
<p>«<a href="join/">入会手続きをする</a><p>
</div>
<form action="" method="post">
<dl>
<dt>メールアドレス</dt>
<dd>
<input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars( $_POST[ 'email' ],ENT_QUOTES);?>" />
<?php if ( $error[ ' login' ] == 'blank' ) :?>
<p class="error"> * メールアドレスとパスワードをご記入ください・</p>
<?php endif;?>
<?php if ( $error[ 'login' ] == 'failed'):?>
<p class="error">ログインに失敗しました。正しくご記入ください。</p>
<?php endif;?>
</dd>
<dt>パスワード</dt>
<dd>
<input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars( $_POST[ ' password' ], ENT_QUOTES );?>" />
</dd>
<dt>ログイン情報の記録</dt>
<dd>
<input id="save" type="checkbox" name="save" value="on"><lavelfor="save">次回からは自動的にログインする</lavel>
</dd>
</dl>
<div><input type="submit" value="ログインする"/></div>
</form>
以上です!今まで作ってきたプログラムとほぼ同じですね。
目新しいのはCOOKIE変数くらいなものでしょうか。
「$_COOKIE['email'] 」に値が入っている場合、Cookie保存したと判断し、
$_POSTに値を代入します。
また、「$_POST['save'] 」にonを設定することで、Cookieに新しい保存期間が設定できます。