PHPフォームのラジオボタンの処理について - PHPプロ!Q&A掲示板
ラジオボタンでの処理でうまく入力ページから完了→メールへ送るまでの流れで正しく処理されず困っております。大変申し訳ありませんが、ご教授いただきたくお願いいたします。
■以下のページ構成となります。
・form1.php →入力ページ
・form2.php →確認ページ
・form3.php →完了ページ
・form1_view.php →入力ページのテンプレート
・form2_view.php →確認ページのテンプレート
・form3_view.php →完了ページのテンプレート
■ラジオボタンで「区分(kubn)」の項目を作成し、「個人(pr)」「法人(co)」のいずれかを選択させる内容です。
■form1.php
■form1_view.php
■form2.php
■form2_view.php
■form3.php
■form3_view.php
以上となります。アドバイスいただきたく何卒よろしくお願いいたします。
■以下のページ構成となります。
・form1.php →入力ページ
・form2.php →確認ページ
・form3.php →完了ページ
・form1_view.php →入力ページのテンプレート
・form2_view.php →確認ページのテンプレート
・form3_view.php →完了ページのテンプレート
■ラジオボタンで「区分(kubn)」の項目を作成し、「個人(pr)」「法人(co)」のいずれかを選択させる内容です。
■form1.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">
- if (isset($error)) :
- foreach ($error as $val):
- <font color="red"> echo $val; </font><br />
- endforeach;
- endif;
- <form action="../php/form2.php" method="post">
- <dl class="clearfix mailform">
- <dt>お問い合わせ区分:</dt>
- <dd>
- $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=" echo $ticket; " />
- </form>
- </div>
■form2.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">
- if (isset($error)) :
- foreach ($error as $val):
- <font color="red"> echo $val; </font><br />
- endforeach;
- endif;
- <form action="../php/form2.php" method="post">
- <dl class="clearfix mailform">
- <dt>お問い合わせ区分:</dt>
- <dd>
- $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=" echo $ticket; " />
- <p><input type="submit" value="送信する" /></p>
- </form>
- </div>
■form3.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"> echo $message; </p>
- </dl>
- </div>
以上となります。アドバイスいただきたく何卒よろしくお願いいたします。




ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。