第9回 セッションとHTTPヘッダーの基礎 - PHP基礎講座

PHP基礎編

Saity先生のPHP基礎講座

Lecutures on PHP

第9回 セッションとHTTPヘッダーの基礎 (その1)

 このエントリーをはてなブックマークに追加

ソースコードに戻って

  • さて、前回はひたすらセッションの概要説明ばかりになってしまったけれど、今回は再び第7回のソースコードに戻って解説を続けていこうか。
  • はーい。この2つのコードですね。

 

uranai_ask.php: 

<?php  

$error_message 
array();

if (isset(
$_POST["uranai"])) { 

    
// 全角のものを半角にする 
    
$age mb_convert_kana($_POST["age"], "a""EUC-JP"); 

    if (
is_numeric($age) == false) { 
      
$error_message[] = "年齢は数字で教えてください!"
    } elseif (
$age || $age 120) { 
      
$error_message[] = "年齢は1才から120才の範囲で入力してください!"
    } 
     
    if (!
count($error_message)) { 
        
session_start(); 
        
$_SESSION["age"] = $age
        
header("Location: uranai_result.php"); 
        exit
    } 
} else { 
    
$age 25

?> 
<html> 
<body> 

<?php 
// エラーメッセージを出力する 
if (count($error_message)) { 
    foreach (
$error_message as $message) { 
        print(
$message); 
    } 

?> 
<form action="uranai_ask.php" method="post"> 
年齢を教えてください: 
<input type="text" name="age" 
value="<?php print(htmlspecialchars($ageENT_QUOTES)); ?>"> 
<input type="submit" name="uranai" value="占う!"> 
</form> 
</body> 
</html>
uranai_result.php: 

<?php  

session_start
(); 

if (!isset(
$_SESSION["age"])) { 
    
header("Location: uranai_ask.php"); 
    exit


$sorry_message =   
        
"ちょっとあなたの年齢は対象年齢に含まれていません・・・";  
$uranai_message[1] =   
        
"10代のあなたには、PHPをお守り代わりに勉強するのが良いみたい。";  
$uranai_message[2] =   
        
"20代のあなたには、趣味でPHPを使うと良いみたい。";  
$uranai_message[3] =   
        
"30代のあなたには、ビジネススキルとしてPHPを勉強すると良いみたい。";  
$uranai_message[4] =   
        
"40代のあなたには、PHPは新たなフロンティアとなるでしょう。";  

$sedai floor($_SESSION["age"] / 10);  

?> 
<html> 
<body> 

<?php 
if (isset($uranai_message[$sedai])) {  
  print(
$uranai_message[$sedai]);  
} else {  
  print(
$sorry_message);  


?> 
</body> 
</html>
  • 前回の説明を踏まえて、セッションについて理解できたかな?
  • もちろんです。入力画面で年齢を聞いたら、その値を、セッション変数に保存して、結果画面で使うんですよね。
  • その通り。セッション変数はサーバー側に保存されているから、PHPスクリプトから操作しない限り、その内容が書き換えられることはないんだ。これは、$_POSTや、$_GET変数がユーザーの入力次第ではどのような値でも取り得ることと比較して、信頼性が高い変数と言うことができる。高い安全性を必要とするデータを格納する場合には、セッション変数を使用するようにしよう。
  • なるほどー、了解です!
  • 1
  • 2

  



Pick Up Q&A

Q
include されたファイルの変数
 このエントリーをはてなブックマークに追加 
A
出来ます。include(require)は、その部分に読み込むファイルの内容を展開したのと同義です。エディタでファイル読み込み(あるいはコピペ)した状態と同じだと考えていいです。 #defineや変数定義だけの共通フ...

>>続きを読む

shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)