8月 092011
 

ユーザーの閲覧履歴を管理するためにクッキーを使う方法がありますが、
今回はセッションを使う方法を扱います。
クッキーを使った訪問数カウンターをセッションを使ったカウンターに直してみましょう。
ドキュメント宣言より前に、セッションの開始を宣言しておくことが重要です。

【session.php】
<?php
session_start();   //セッションの開始を宣言する
$count = 1;
if(isset($_SESSION[“count”])){
 $count = $_SESSION[“count”];
 $count++;
}
$_SESSION[“count”] = $count;
?>
<!DOCTYPE ・・・
<body>
セッション変数のテスト<br />
<?php
if($count == 1){
?>
初めての訪問です。<br />
セッション変数にデータがありません。<br />
ページをリロードしてください。<br />
<?php
}else{
?>
あなたの訪問は<?php echo $count ?>回目です。
<?php
}
?>
</body>

セッションの管理 → SESSION

sec03にて非表示項目を送信する方法を扱いましたが、
hidden属性を用いているだけなので、プログラムソースを表示されてしまうと
ID等すべて確認できてしまうという問題点がありましたが、
POST変数からSESSION変数へ値を受け渡すことにより、
送信している値を確認できないように工夫しましょう。

【form.html】
複数行テキスト送信のテスト
<form id=”form1″ name=”form1″ method=”post” action=”confirm.php“>
  名前:
    <br />
  <input name=”name” type=”text” size=”30″ maxlength=”20″ />
  <br />
  本文:<br />
  <textarea name=”honbun” cols=”30″ rows=”5″></textarea>
  <br />
  <input type=”submit” value=”送信” />
  <input name=”usei_id” type=”hidden” value=”0001″ />
</form>

【confirm.php】
<?php
session_start();   //セッションの開始を宣言する

//POST変数からSESSION変数へ値の受け取り
$_SESSION[“name”] = $_POST[“name”];
$_SESSION[“honbun”] = $_POST[“honbun”];

if(isset($_POST[“usei_id”])){
 $_SESSION[“usei_id”] = $_POST[“usei_id”];
}
?>
<!DOCTYPE ・・・

確認画面
<form id=”form1″ name=”form1″ method=”post” action=”view.php“>
<?php
if($_POST[“name”]==””){
 print “名前を入力してください。” ;
}else{
 print $_POST[“name”].”さんからのメッセージ” ;
 print “<br/><br/>”;
 print “本文:<br/>”;
 print nl2br($_POST[“honbun”]);
}
?>
<br />
<input name=”confirm” type=”submit” value=”確認” />
<input name=”back” type=”submit” value=”戻る” />
</form>

【view.php】
<?php
session_start();   //セッションの開始を宣言する
?>
<!DOCTYPE ・・・
<?php
if(isset($_POST[“confirm”])){
?>

<?php
//確認ボタンがクリックされた時
if($_SESSION[“name”]==””){
 print “名前を入力してください。” ;
}else{
 print $_SESSION[“name”].”さんからのメッセージ” ;
 print “<br/><br/>”;
 print “本文:<br/>”;
 print nl2br($_SESSION[“honbun”]);
}
?>

<?php
}elseif(isset($_POST[“back”])){
//戻るボタンがクリックされた時
?>
複数行テキスト送信のテスト
<form id=”form1″ name=”form1″ method=”post” action=”confirm.php“>
  名前:
    <br />
  <input name=”name” type=”text” size=”30″ maxlength=”20″ value=”<?php print $_SESSION[“name”] ?>” />
  <br />
  本文:<br />
  <textarea name=”honbun” cols=”30″ rows=”5″ ><?php print $_SESSION[“honbun”] ?></textarea>
  <br />
  <input type=”submit” value=”送信” />
</form>

<?php
}else{
//上記以外の場合
?>
エラーです。<br />
直接このページを表示させることはできません。<br />
<a href=”form.html”>form.html</a>からアクセスしてください。

<?php
}
?>

非表示項目の取得 → SESSION