開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の8章(クッキーとセッションでユーザを記憶)8.8(演習問題)3を解いてみる。
3.
コード(TextWrangler)
<?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)
<?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 コメント:
コメントを投稿