郵便番号住所検索付き Pear フォ-ム
Pear ZIP フォ-ム PHPファイル
formzip.php
Pear フォ-ム作成 PHP ファイルからの流用部分は黒字
郵便番号住所検索 PHP ファイルからの流用部分は赤字
新規追加部分は青字
で明示しています。
63 Pear Villageに戻る
<?php
session_start();
header( 'Content-type:text/html;charset=UTF-8' );
require_once 'XML/RPC2/CachedClient.php'; // 郵便番号住所検索
require_once 'HTML/QuickForm.php'; // フォ-ム出力 $form = new HTML_QuickForm('newus');
$defaultValue = array ('uname' => '', 'email' => '', 'come' => '', 'postnum' => '', 'addre' => ''); foreach ($defaultValue as $key => $value){ if(isset($_SESSION[$key])){ $defaultValue[$key] = $_SESSION[$key]; } }
/* form name="newus" id="newus" フォームの method 属性の デフォルト値は、POST、 action 属性のデフォルト値は 現在のファイル名となります。 フォームの生成 addElementメソッドを使用 */ $form->addElement ('header', 'title', '会員登録準備'); /* form部品の種類,name,入力欄名称 の順に記入 */ $form->addElement ('text', 'uname', '名前:', array('size' => 20, 'maxlength' => 20)); $form->addElement ('text', 'email', 'メ-ルアドレス:', array('size' => 24)); /* 検証ルールの定義 addRuleメソッドを使用 name,エラメッセージ,検証タイプ の順に記入 */ $form->addRule ('email', 'メ-ルアドレスは必須です', 'required'); $form->addRule ('email', 'メ-ルアドレスが不正です', 'email'); $form->addRule ('uname', '名前は必須です', 'required'); $form->addRule ('uname', '1~10文字(すべて全角時) で記入ください', 'rangelength',array(1,30));
$form->addElement ('text', 'postnum', '郵便番号: <br>例)2160001', array ('size' => 9, 'maxlength' => 7)); $form->addElement ('submit', 'submit1','住所名検索'); $form->addElement ('textarea', 'addre', '住所:<br> 全角なら<br> 40文字以内', array ('rows'=> 4, 'cols'=> 20, 'maxlength' => 120,)); $form->addElement ('textarea', 'come', 'コメント:<br> 全角なら<br> 40文字以内', array ('rows'=> 4, 'cols'=> 20, 'maxlength' => 120,)); /* 半角で80文字分の枠を確保、 ここに全角40文字が入れられるように、 utf-8は全角3バイト必要なので 40×3=120バイトを maxlength に指定 */ $form->addRule ('come', '全角文字換算で1~40字で 記入してください', 'rangelength',array(1,120)); $form->addRule ('postnum', '郵便番号は必須です', 'required'); $form->addRule ('postnum', '半角数字で記入してください', 'regex','/^[0-9]+$/'); $form->addRule ('postnum', '半角7桁で記入ください', 'rangelength',array(7,7)); /* ^が文字列の最初から、 $が最後まで、[a-zA-Z0-9]+が アルファベットの小文字aからz、 大文字AからZ、数字の0から9のみ からなる複数の文字列、 を意味する。 */ $form->addRule ('addre', '全角文字換算で1~40字で 記入してください', 'rangelength',array(1,120)); $form->addElement ('submit', 'submit','準備'); /* form部品submitの時は、name,value の順に記入 フォームvalue値の設定 */ $form->setDefaults ($defaultValue);
$form->setRequiredNote ("*必須入力項目"); $form->applyFilter ('__All__', 'htmlspecialchars'); /* フォームのすべての要素に htmlspecialcharsを適用 フォームの検証 */ if ($form->validate()) { $form->process ('jyunbi', false); } $form->display();
function jyunbi(){ if(isset($_POST['submit'])){ echo "会員登録のための<br>  " .$_POST["uname"] ." さん<br> の情報内容は以下 の通りです。 <br><br>"; } }//function jyunbi END if(isset($_POST['submit1'])){
//①START $rpc = XML_RPC2_CachedClient::create( 'http://yubin.senmon.net/service/xmlrpc/' , array ('prefix' => 'yubin.', 'cacheOptions' => array( 'cacheDir' => 'tmp/', /* あらかじめ cacheDirとして tmpフォルダを
¥formzip formzip.php
¥tmp のように作成します。 そうすると、1回検索するごとに、 ¥tmpのなかに cache_d65e95e4b22ffe7da72e47a42 fa9f4f8_0bca1bd9981c58ddd31be00 7e932cc4e のようなファイルが作成されます。 */ 'lifetime' => 3600) ) ); try { $result = $rpc-> fetchAddressByPostcode ($_POST['postnum']); } catch (Exception $e) { die('<span style="color:red"> 入力した郵便番号に該当する 住所は検索できませんでした。 </span>'); } foreach($result as $address){ /* $result の内容を $address['*--*'] に分解とりあえず処理はしない */ } if(!isset($addess['other'])){ $addess['other'] = ""; } $address['town'] = str_replace ('以下に掲載がない場合', '',$address['town'],$cnt); /* '以下に掲載がない場合' の文字列を消去 */
$_SESSION["addre"] = $address['pref'] .$address['city'] .$address['town'] .$addess['other']; $_SESSION["postnum"] = $_POST["postnum"]; $_SESSION["uname"] = $_POST["uname"]; $_SESSION["email"] = $_POST["email"]; $_SESSION["come"] = $_POST["come"]; header( "Location:" .$_SERVER['SCRIPT_NAME']); }//①END ?>