webシステムで、ログイン情報を使って処理をしたい時があります。
例えば、パスワード入力後、ログインしたよ!という状態を作って、会員サービスを使用してもらう等。
そんなときは、セッション情報を作成し、そこにログインしたという情報を残しておくことで実現できます。
セッション情報とは
サーバ上に一時的に作成したファイルです。
xamppを使用している場合、xamppコントロールパネルのApache→Config→PHP(php.ini)を開くと、session.save_path = “C:\xampp\tmp” と記載されている箇所があります。
このsession.save_pathがセッション情報を保存しておくパスになります。
(iniファイルを編集する場合は注意!)
余談ですが、以前webシステムを組んだ際に、ファイルアプロード機能を実装したのですが、レンタルサーバのGMO iCLUSTA+で動作するようにしなければなりませんでした。
標準で、ファイルアプロードサイズが2MBでした。
それ以上に大きくする場合は、GMO iCLUSTA+の場合、php.iniを自作する必要がありました。
システムテスト時に、php.iniを自作した場合、セッション情報の保存パスが必要だ!(他にも色々必要で苦労しました。)ということが分かり、今回の保存パスをphp.iniに追記したことがありました。
サンプルコード
<?php
session_start();
if(isset($_POST['login'])==true){
$_SESSION['login']=true;
}
if(isset($_POST['logout'])==true){
$_SESSION=[];
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>セッション情報の作成・削除</title>
</head>
<body>
<?php
if(isset($_SESSION['login'])==false){
print 'ログインされていません。';
}else{
print 'ログイン中。';
}
?>
<form name="myForm" method="post" action="study_session.php">
<input type="submit" name="login" value="ログイン">
<input type="submit" name="logout" value="ログアウト">
</form>
</body>
</html>
上記コードをC:\xampp\htdocs\testに保存し、http://localhost/test/study_session.phpにアクセスしてみましょう。
ログインをクリックすると、、、
ログイン中になりました。
コード解説
2行目のsession_start();で、セッション情報を使う準備をします。
session_start()を行うことによって、$_SESSION変数が使えるようになります。
18行目のif(isset($_SESSION[‘login’])==false){で、セッション情報のloginがあるかを判定しています。
ここでセッション情報がない場合は、true側のログインされていません。が画面に表示されます。
ログインボタンを押すと、study_session.phpにloginがpostされ、4行目の$_SESSION[‘login’]=true;が処理されます。
18行目のif(isset($_SESSION[‘login’])==false){で、else側となりログイン中。が画面に表示されます。
ログイン状態で、一度別なページを表示(googleとか)して、study_session.phpに再度アクセスしてみてください。(戻るボタンでは無く、URLに直接入力してください。)
ログイン中。と表示されるはずです。
※ 以降は、必ずxampp環境やテスト環境で試してください。他のシステムに影響が出る可能性がありますので、実行する場合は、自己責任でお願いいたします。
ここで少し実験をしてみたいと思います。
C:\xampp\tmpの中に、sess_○○というファイルがあります。
このファイルを削除し、 一度別なページを表示(googleとか)して、study_session.phpに再度アクセスしてみてください。(戻るボタンでは無く、URLに直接入力してください。)
ログインされていません。と表示されます。
注意点
今のままのコードだと、このページにアクセスした人全員のセッション情報を作成してしまいます。
通常は、会員番号とパスワードを入力してもらい、チェックOKのときにはじめてセッション情報を作成します。
また、ログアウトの際には、セッション情報を削除しましょう。