ホームページを作るにはどうすればよいのか? ファイル転送・SSL・メール送信の仕組み・CGIなどをやさしく解説します
ホームページのお助けサイト 〜はじめてホームページを作る方のためのサイトです〜
トップページ | インフォメーション | プロフィール | 更新履歴 | メルマガ | お問い合わせ 

セッション変数を使う              

■対策:セッション変数
 
ページ間で値を受け渡すときにhidden項目を使うと、改ざんされるかもしれません。
対策として、セッション変数を使う方法があります。セッション変数はサーバー側で保持されるため、ソース表示
させたところで見ることができないし、改ざんされるおそれもありません。
 
誰がどんな値を保持しているのか?
この情報を管理するためには、セッションIDとセッション変数が使われます。
  
 
セッション変数とセッション情報を使った処理の流れを解説します。
 
1.ユーザーが見たいホームページへ行きます。
2.サーバーは訪問者を特定するためのIDを発行します。
  これがセッションIDというもので、ユーザーのメモリのなかへ保持されます。
  (クッキー内に保持することもできます)
  サーバー側でも同じIDが保持されます。
3.ユーザーはそのホームページでショッピングを楽しんだり、情報を閲覧したりします。
  その際、ラベルボタンやチェックボッキスなどがあって、そのユーザーが何らかの選択をしたとします。
4.ユーザーが別のページへ行きました。
5.サーバーはユーザーのマシンに保持されているセッションIDを確認しにいきます。
  このIDを照らし合わせて、Aさんの購入履歴やBさんの選択履歴を区別します。
 
セッションID …… セッションごとに異なる文字列が振られ、ユーザー側に保存されます。通常、
             クッキーを使いますが、使えない環境ではURLにセッションIDを含めることになります。
セッション変数 …… サーバー側で保持されます。
 
セッションIDは有効期間を設けられるので、一定時間たつと破棄されるようにすれば、さらに安全性が高まります。
では実際に確認してみましょう。
 
 
1.ログイン画面
 
この画面には、手を加えていません。会員IDとパスワードを入力して、ログインします。
 
 
2.メニュー画面へ
 
ログインして会員用メニュー画面へ行きます。
 
 
3.メニュー画面のソース    
 
ここでソースを見てみましょう。hidden項目のないことを確認してください。
 
 
4.ボタンを押して会員専用情報へ   
 
今回はゴールド会員ということで、IDとパスワードを入力しています。
画面写真を見るとゴールド会員専用情報のページにたどりつきました。
 
 
TOPページへ
 

 
参考までにソースを掲載しておきます。
 
menu.php
<?php
$strUser = $_POST['USERID'];
$strPass = $_POST['PASSWORD'];

If ($strUser == "silver" and $strPass == "pass") {
$strMember = "1";
}ElseIf ($strUser == "gold" and $strPass == "pass"){
$strMember = "2";
}ElseIf ($strUser == "platinum" and $strPass == "pass"){
$strMember = "3";
}Else{
$strMember = "0";
}
SESSION_START();
$_SESSION['SESSION_MEMBER']=$strMember;



If ($strMember == "1") {
print "<html><title>シルバー会員用ページ</title>";
print "<body>";
print "シルバー会員用メニュー<BR>";
print "<FORM METHOD='POST' ACTION='information.php'>";
print "<INPUT TYPE='HIDDEN' NAME='MEMBER' VALUE='1'>";    ←hiddenの行を消します
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='1' CHECKED>情報その1<BR>";
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='2'>情報その2<BR>";
print "<INPUT TYPE='SUBMIT' VALUE='読む'><BR>";
print "</FORM>";
print "</body>";
print "</html>";
}ElseIf ($strMember == "2"){
print "<html><title>ゴールド会員用ページ</title>";
print "<body>";
print "ゴールド会員用メニュー<BR>";
print "<FORM METHOD='POST' ACTION='information.php'>";
print "<INPUT TYPE='HIDDEN' NAME='MEMBER' VALUE='2'>";    ←hiddenの行を消します
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='1' CHECKED>情報その1<BR>";
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='2'>情報その2<BR>";
print "<INPUT TYPE='SUBMIT' VALUE='読む'><BR>";
print "</FORM>";
print "</body>";
print "</html>";
}ElseIf ($strMember == "3"){
print "<html><title>プラチナ会員用ページ</title>";
print "<body>";
print "プラチナ会員用メニュー<BR>";
print "<FORM METHOD='POST' ACTION='information.php'>";
print "<INPUT TYPE='HIDDEN' NAME='MEMBER' VALUE='3'>";    ←hiddenの行を消します
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='1' CHECKED>情報その1<BR>";
print "<INPUT TYPE='RADIO' NAME='INFORMATION' VALUE='2'>情報その2<BR>";
print "<INPUT TYPE='SUBMIT' VALUE='読む'><BR>";
print "</FORM>";
print "</body>";
print "</html>";
}Else{
print "<html><title>エラー情報</title>";
print "<body>";
print "会員IDまたはパスワードが違います。<BR>";
print "</body>";
print "</html>";
}
?>
 
information.php
<?php
session_start();
$strMEMBER = $_POST['MEMBER'];
$strMEMBER = $_SESSION['SESSION_MEMBER'];
$strInformation = $_POST['INFORMATION'];

If ($strMEMBER != "") {
print "<html><title>最新情報</title>";
print "<body>";
print "会員のみしか閲覧できない情報<br>";
print "       ・      <br>";
print "       ・      <br>";
print "       ・      <br>";
}Else{
print "<html><title>エラー情報</title>";
print "<body>";
print "会員登録を行ってください。<br>";
print "</body>";
print "</html>";
exit(0);
}

If ($strMEMBER == "1" and $strInformation == "1") {
print "シルバー会員専用情報1<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}Elseif ($strMEMBER == "1" and $strInformation == "2") {
print "シルバー会員専用情報2<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}ElseIf ($strMEMBER == "2" and $strInformation == "1"){
print "ゴールド会員専用情報1<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}ElseIf ($strMEMBER == "2" and $strInformation == "2"){
print "ゴールド会員専用情報2<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}ElseIf ($strMEMBER == "3" and $strInformation == "1"){
print "プラチナ会員専用情報1<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}ElseIf ($strMEMBER == "3" and $strInformation == "2"){
print "プラチナ会員専用情報2<br>";
print "      ・      <br>";
print "      ・      <br>";
print "      ・      <br>";
}Else{

}

print "</body>";
print "</html>";

?>
 
 
 
 
 
 
 
 
 
TOPへ戻る




Copyright (C) starthp.com, All Rights Reserved.