Fri, 27 Jan 2012 23:26:10 +0900
PHPフォームのラジオボタンの処理について
ラジオボタンでの処理でうまく入力ページから完了→メールへ送るまでの流れで正しく処理されず困っております。大変申し訳ありませんが、ご教授いただきたくお願いいたします。
■以下のページ構成となります。
・form1.php →入力ページ
・form2.php →確認ページ
・form3.php →完了ページ
・form1_view.php →入力ページのテンプレート
・form2_view.php →確認ページのテンプレート
・form3_view.php →完了ページのテンプレート
■ラジオボタンで「区分(kubn)」の項目を作成し、「個人(pr)」「法人(co)」のいずれかを選択させる内容です。
■form1.php
<?php
// セッション開始
session_start () ;
// セッションIDを変更
session_regenerate_id ( TRUE ) ;
//必要なファイルを読み込み
require ' ../../libs/functions.php ' ;
//テンプレートに渡す変数の初期化
$data = array () ;
//テンプレートに渡す変数の表示
$data [ ' kubn ' ] = isset ( $_SESSION [ ' kubn ' ]) ? $_SESSION [ ' kubn ' ] : NULL ;
//テンプレートの表示
display ( ' form1_view.php ' , $data ) ;
$data = array () ;
?>
■form1_view.php
<div id="form">
<?php if ( isset ( $error )) : ?>
<?php foreach ( $error as $val ) : ?>
<font color="red"> <?php echo $val ; ?> </font><br />
<?php endforeach ; ?>
<?php endif ; ?>
<form action="../php/form2.php" method="post">
<dl class="clearfix mailform">
<dt>お問い合わせ区分:</dt>
<dd>
<?php
$prv = ' 個人 ' ;
$cop = ' 法人 ' ;
$kubn = array ( ' 1 ' , ' 2 ' ) ;
echo ' <label><input type="radio" name="kubn" value=" ' . $kubn [ 1 ] . ' " /> '
. $prv . ' </label> ' . " \n " ;
echo ' <label><input type="radio" name="kubn" value=" ' . $kubn [ 2 ] . ' " /> '
. $cop . ' </label> ' . " \n " ;
?>
</dd>
</dl>
<p>
<input type="submit" value="確認画面へ" />
</p>
<input type="hidden" name="ticket" value=" <?php echo $ticket ; ?> " />
</form>
</div>
■form2.php
<?php
// セッション開始
session_start () ;
// セッションIDを変更
session_regenerate_id ( TRUE ) ;
//必要なファイルを読み込み
require ' ../../libs/functions.php ' ;
//POSTされたデータをチェック
$_POST = checkInput ( $_POST ) ;
//変数にPOSTされたデータを代入
$kubn = isset ( $_POST [ ' kubn ' ]) ? $_POST [ ' kubn ' ] : NULL ;
//POSTされたデータを整形
$kubn = trim ( $kubn ) ;
//エラーチェックを保存する配列の初期化
$error = array () ;
//必須項目のチェック
if ( $kubn == '' ) {
$error [] = ' 区分は必須項目です。 ' ;
}
//エラー数を確認
if ( count ( $error ) > 0 ) {
//エラーがある場合は、入力フォームを表示
$data = array () ;
$data [ ' error ' ] = $error ;
$kubn [ ' error ' ] = $kubn ;
$data [ ' ticket ' ] = $ticket ;
display ( ' form1_view.php ' , $data ) ;
}
else { //エラーが0の場合
//POSTされたデータをセッション変数に保存
$_SESSION [ ' kubn ' ] = $kubn ;
//確認画面を表示
$data = array () ;
$data [ ' kubn ' ] = $kubn ;
$data [ ' ticket ' ] = $ticket ;
display ( ' form2_view.php ' , $data ) ;
}
//テンプレートの表示
display ( ' ../php/form2_view.php ' , $data ) ;
?>
■form2_view.php
<div id="form">
<?php if ( isset ( $error )) : ?>
<?php foreach ( $error as $val ) : ?>
<font color="red"> <?php echo $val ; ?> </font><br />
<?php endforeach ; ?>
<?php endif ; ?>
<form action="../php/form2.php" method="post">
<dl class="clearfix mailform">
<dt>お問い合わせ区分:</dt>
<dd>
<?php
$prv = ' 個人 ' ;
$cop = ' 法人 ' ;
$kubn = array ( ' 1 ' , ' 2 ' ) ;
echo $prv ;
echo $cop ;
?>
</dd>
</dl>
<div>
<form action="form1.php" method="post">
<p><input type="submit" value="入力画面に戻る" /></p>
</form>
<form action="form3.php" method="post" class="spacer">
<input type="hidden" name="ticket" value=" <?php echo $ticket ; ?> " />
<p><input type="submit" value="送信する" /></p>
</form>
</div>
■form3.php
<?php
// セッション開始
session_start () ;
//必要な関数を読み込む
require ' ../../libs/functions.php ' ;
//POSTされたデータをチェック
$_POST = checkInput ( $_POST ) ;
//固定トークンを確認
if ( isset ( $_POST [ ' ticket ' ] , $_SESSION [ ' ticket ' ])) {
$ticket = $_POST [ ' ticket ' ] ;
if ( $ticket !== $_SESSION [ ' ticket ' ]) {
die ( ' 不正アクセスの疑いがあります。 ' ) ;
}
} else {
die ( ' 不正アクセスの疑いがあります。 ' ) ;
}
//変数にセッション変数を代入
$kubn = $_SESSION [ ' kubn ' ] ;
//メールの宛先
$mailTo = ' (メールアドレスを指定) ' ;
//return-Pathに指定するメールアドレス
$returnMail = ' (メールアドレスを指定) ' ;
//mbstringの日本語設定を行う
mb_language ( ' ja ' ) ;
mb_internal_encoding ( ' UTF-8 ' ) ;
//fromヘッダーを作成
$header = ' From: ' . mb_encode_mimeheader ( $name ) . ' < ' . $email . ' > ' ;
//メールの送信。セーフモードがオンの場合は第5引数が使えない
if ( ini_get ( ' safe_mode ' )) {
$result = mb_send_mail ( $mailTo , $subject , $body , $header ) ;
} else {
$result = mb_send_mail ( $mailTo , $subject , $body , $header , ' -f ' . $returnMail ) ;
}
//送信結果をお知らせする変数を初期化
$_message = '' ;
//メール送信の結果判定
if ( $result ) {
$message = ' 送信完了! ' ;
//セッション変数を破棄
$_SESSION = array () ;
session_destroy () ;
} else {
$message = ' 送信できませんでした ' ;
}
$data = array () ;
$data [ ' message ' ] = $message ;
display ( ' form3_view.php ' , $data ) ;
?>
■form3_view.php
<dl class="clearfix mailform">
<p class="app msg"> <?php echo $message ; ?> </p>
</dl>
</div>
以上となります。アドバイスいただきたく何卒よろしくお願いいたします。
Thu, 26 Jan 2012 21:18:50 +0900
Apacheを起動するとPHPに関するWarningウィンドウが8回開きます。
Apache 2.4.0でphp-5.3.9を使いたく、Apacheの設定で試行錯誤しています。
Apache 2.4.0は動作し、phpをインストールするとApacheが動作しなくなりました。
php5apache2_4.dllは配置しhttp.confも修正してあります。
Apacheを起動すると下記のようにWarningウィンドウが計8回開きます。
PHP Startup: Unable to load dynamic library
'C:/phpdev/php/extensions\php_gd2.dll' - 指定されたモジュールが見つかりません
PHP Startup: Unable to load dynamic library
'C:/phpdev/php/extensions\php_sockets.dll' - 指定されたモジュールが見つかりません
PHP Startup: Unable to load dynamic library
'C:/phpdev/php/extensions\php_zilb.dll' - 指定されたモジュールが見つかりません
PHP Startup: Unable to load dynamic library
'C:/phpdev/php/extensions\php_dbase.dll' - 指定されたモジュールが見つかりません
が表示された後、同じ順序でもう1回ずつ表示されます。
phpdevというのは、以前使用していたApacheを入れていたフォルダだと思います。
以前のApacheは、
http://php5.seesaa.net/category/1632821-1.html
このサイトを参考にインストールしたものです。
phpを学習していましたがヴァージョンが低いことで不都合が生じ、
php5へ変えようとしましたが、うまくできずapacheごとインストールし直す方法をとりました。
そのときに、phpdevフォルダごと右クリックでゴミ箱へという通常の削除をしました。
apacheはサービスを登録している場合はその方法だと問題があるそうですが登録した記憶もなく、
コンピュータを右クリック > 管理 >
「コンピュータの管理」ウィンドウのサービスとアプリケーション >
サービス > サービスの詳細情報が表示される
その中にApacheという文字がなかったのを確認してから削除しました。
削除に失敗しているのでしょうか。
|