2012年11月30日金曜日

開発環境

『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の付録 B (正規表現の基本)B.8(演習問題)2を解いてみる。

2.

PHPのコード(TextWrangler)

sample77.php

<?php
  require 'formhelpers.php';
  if(array_key_exists('_submit_check', $_POST)){
    if($form_errors = validate_form()){
      show_form($form_errors);
    } else {
      process_form();
    }
  } else {
    show_form();
  }
  function show_form($errors = ''){
    if($errors){
      print "エラー: <ul><li>\n";
      print implode("</li><li>", $errors);
      print "</li></ul>\n";
    }
    print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '">';
    print '<label>ユーザー名: ';
    input_text('username', $_POST);
    print '</label>';
    input_submit('submit', 'submit');
    print '<input type="hidden" name="_submit_check" value="1" />';
    print "</form>";
  }
  function validate_form(){
    $errors = array();
    if(!strlen($_POST['username'])){
      $errors[] = "ユーザー名を入力して下さい。";
    } elseif (preg_match('/[^0-9A-Za-z]/', $_POST['username'])){
      $errors[] = "ユーザー名には英数字のみ使用してください。";
    }
    return $errors;
  }
  function process_form(){
    print "OK! ユーザー名: {$_POST['username']}<br />\n";
    print "<a href='" . $_SERVER['PHP_SELF'] . "' />戻る</a>";
  }
?> 

HTMLソース

<form method="POST" action="/~kamimura/kamimura_blog/learning_php/sample77.php"><label>ユーザー名: <input type="text" name="username" value="" /></label><input type="submit" name="submit" value="submit"/><input type="hidden" name="_submit_check" value="1" /></form> 

0 コメント:

コメントを投稿