2012年5月31日木曜日

開発環境

『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の8章(クッキーとセッションでユーザを記憶)8.8(演習問題)3を解いてみる。

3.

コード(TextWrangler)

sample27.php

<?php
  session_start();
  $colors = array("#ff0000" => "赤",
                  "#00ff00" => "緑",
                  "#0000ff" => "青");
  if(array_key_exists('_submit_check',$_POST)){
    if($form_errors = validate_form()){
      show_form($forms_error);
    } else  {
      process_form();
    }
  } else {
    show_form();
  }
  
  function process_form(){
    $_SESSION['color'] = $_POST['color'];
    print "背景色: " . $GLOBALS['colors'][$_SESSION['color']]."<br />".
          "<a href='./sample28.php'>背景色が変わるページ</a>";
  }
  
  function show_form($errors = ""){
    print<<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
背景色を選択: 
<select name='color'>
<option value="#ff0000">赤</option>
<option value="#00ff00">緑</option>
<option value="#0000ff">青</option>
</select>
<input type="submit" value="送信" />
<input type="hidden" name="_submit_check" value="1" />
</form>
<a href="./sample28.php">背景色が変わるページ</a>
_HTML_;
    if($errors){
      print "<p>エラー</p><ul><li>";
      print implode("</li><li>",$errors);
      print "</li></ul>";
    }
  }
  
  function validate_form(){
    $errors = array();
    if(!array_key_exists($_POST['color'],$GLOBALS['colors'])){
      $errors[] = "色を選択してください";
    }
    return $errors;
  }
?>

コード(TextWrangler)

sample28.php

<?php
  session_start();
  print <<<_HTML_
<body style="background:$_SESSION[color]">
<a href="./sample27.php">背景色を選択するページ</a>
</body>
_HTML_;
?>

HTMLソース(送信前)

<form method="POST" action="/~kamimura/kamimura_blog/learning_php/sample27.php">
背景色を選択: 
<select name='color'>
<option value="#ff0000">赤</option>
<option value="#00ff00">緑</option>
<option value="#0000ff">青</option>
</select>
<input type="submit" value="送信" />
<input type="hidden" name="_submit_check" value="1" />
</form>
<a href="./sample28.php">背景色が変わるページ</a>

HTMLソース(赤を選択した場合)

<body style="background:#ff0000">
<a href="./sample27.php">背景色を選択するページ</a>
</body>

0 コメント:

コメントを投稿