• 締切済み

設定ファイルを作って、設定ファイルの書き換えでメッセージなどを変更できるようにしたい

メールフォームのエラーチェックの部分をPHPで作成したのですが、設定ファイルを作成し設定ファイルを書き換えるだけで変更することができる(エラーメッセージ等)ようにするにはどうしたらよいのでしょうか? 1ヶ月以上考えましたが、まったくわかりませんでした。 <PHPファイル> <?php session_start(); if (strlen($_POST["name"]) == 0){ $error_flg = true; $error_messages[] = "名前を入力してください"; } //フリガナのエラーチェック $pat = "/^(\xA5[\xA1-\xF6]|\xA1\xBC|\xA1\xA6|\xA1\xA1|\x20)+$/"; if (strlen($_POST["kana"]) == 0){ $error_flg = true; $error_messages[] = "フリガナを入力してください"; }else if (!preg_match($pat, $_POST["kana"])){ $error_flg = true; $error_messages[] = "フリガナを全角カナで入力してください。"; } $pat = "/^[a-z0-9\-\._]+@[a-z0-9]([0-9a-z\-]*[a-z0-9]\.){1,}[a-z]{1,4}$/i"; if (strlen($_POST["mail"]) == 0){ $error_flg = true; $error_messages[] = "メールアドレスを入力してください"; }else if (!preg_match($pat, $_POST["mail"])){ $error_flg = true; $error_messages[] = "メールアドレスが不正です。"; } if (mb_strlen($_POST["naiyo"]) == 0){ $error_flg = true; $error_messages[] = "問い合わせ内容を入力してください"; }else if(strlen($_POST["naiyo"]) >= 400){ $error_flg = true; $error_messages[] = "問い合わせ内容を全角200文字以内で入力してください"; } if($_POST["counseling"] != "希望する"){ $_POST["counseling"] = "希望しない"; } if ($error_flg == true){ foreach($error_messages as $value){ echo($value."<br>"); } exit(); } $_SESSION["name"] = $_POST["name"]; $_SESSION["kana"] = $_POST["kana"]; $_SESSION["mail"] = $_POST["mail"]; $_SESSION["counseling"] = $_POST["counseling"]; $_SESSION["naiyo"] = $_POST["naiyo"]; require_once("smarty/Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = "templates/"; $smarty->compile_dir = templates_c/"; $smarty->display("chk_disp.tpl"); /* ファイルの指定 */ $file_name = "sample.csv"; /* CSVファイル用変数の指定(タグを無効にする) */ $void = ""; $name= strip_tags($_POST["name"]); $kana = strip_tags($_POST["kana"]); $mail = strip_tags($_POST["mail"]); $counseling = $_POST["counseling"]; $naiyo = strip_tags($_POST["naiyo"]); /* カンマなどを変換する(それぞれの変数をセット) */ $void = ""; $kanma = ","; $single_quote = "’"; $double_quote = "”"; /* カンマなどを変換する(処理) */ $name = ereg_replace(',',$void,$name); $name = ereg_replace("'",$single_quote,$name); $name = ereg_replace('"',$double_quote,$name); $naiyo = ereg_replace(',',$kanma,$naiyo); $naiyo = ereg_replace("'",$single_quote,$naiyo); $naiyo = ereg_replace('"',$double_quote,$naiyo); /* 配列に格納してCSVファイルにセット */ $array = compact("name","kana","mail","counseling","naiyo"); $csvString = implode(",",$array); $file = fopen($file_name,"a+") or die("OPEN ERROR! $file_name"); flock($file,LOCK_EX); fputs($file, $csvString."\n"); flock($file,LOCK_UN); fclose($file); ?> TPLファイル <html> <head> <title>申し込みフォーム-確認画面- </title> </head> <body> <p>下記の内容でよろしければ送信ボタンを押してください。</p> <hr> <form action="disp_fix.php" method="post"> <table> <tr> <td>お名前:</td> <td>{$smarty.post.name}</td> </tr> <tr> <td>フリガナ</td> <td>{$smarty.post.kana}</td> </tr> <tr> <td>メールアドレス</td> <td>{$smarty.post.mail}</td> </tr> <tr> <td>カウンセリング:</td> <td>{$smarty.post.counseling}</td> </tr> <tr> <td>お問い合わせ内容:<br>(※必須 全角200文字以内)</td> <td>{$smarty.post.naiyo}</td> <tr> <td colspan=2 align=center><input type="submit" value="送信"></td> </tr> </table> </form> </body> </html>

みんなの回答

  • dell_OK
  • ベストアンサー率13% (776/5751)
回答No.2

ANo.1のご回答をヒントにコーディングするとしたら、 こんな感じになるのかな。  設定ファイル <?php define("errmsg_0101","名前を入力してください"); define("errmsg_0201","フリガナを入力してください"); define("errmsg_0202","フリガナを全角カナで入力してください"); define("errmsg_0301","メールアドレスを入力してください"); //以下同様にメッセージを記述 ?> この設定ファイルをPHPファイルの先頭の方で require しておき、 現在のメッセージ文字のところを定数名に変更します。 $error_messages[] = "名前を入力してください";  ↓ $error_messages[] = errmsg_0101; これで設定ファイルを変更すれば、メッセージに反映されると思います。 要点は、メッセージのコード付けだと思います。 定数名として、「エラーメッセージの0101」と意味を持たせました。 分解すると、「errmsg」が「エラーメッセージ」で、 エラーメッセージ以外のメッセージなら「msg」などとして区別する。 区別の必要がなければ「msg」だけでもいいと思います。 エラーメッセージの場合、4桁の数字は、 前2桁が項目、後2桁がエラー内容を分別するもので、 前2桁では、「01」は「名前」、「02」は「フリガナ」など、 後2桁では、エラー追加順に連番でもいいし、 「01」は入力されていない事に対するメッセージ、 「02」以降は入力されてはいるけど適切でない場合のメッセージなど。 エラーコードで何が何かわかるようにするなら、 数字ではなくて「errmsg_name_no_input」とかでもいいと思います。 このような方法でコード付けをして管理できるようにします。 コード付けのルールはどのようであってもかまいません。 設定ファイルとしてPHPの記述がされている事に問題がある場合でしたら。 CSVファイルで記述して、PHPファイルの先頭で読み込み処理をするようにします。 これでも、やはりコード付けは必要になってくると思います。  CSVファイル(エラーコード、エラーメッセージ) errmsg_0101,名前を入力してください errmsg_0201,フリガナを入力してください errmsg_0202,フリガナを全角カナで入力してください errmsg_0301,メールアドレスを入力してください PHPファイルでCSVを読み込んだ時に define するか、 他には、例えば、  $msg[エラーコード]=エラーメッセージ; としてためておいて、  $error_messages[] = $msg["errmsg_0101"]; として使うかです。

noname#76627
質問者

お礼

ありがとうございます。 とてもわかりやすくて本当に感激です。 まだまだわからないことはありますがよろしくお願いします。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

設定ファイルのイメージがどのようなものか分かりませんが、エラーメッセージを全部定数化してひとつのファイルにまとめてしまえば管理は少し楽になりますね。

すると、全ての回答が全文表示されます。

関連するQ&A