http://php.eweb-design.com/1301_mail.html
のアンケートフォームのサンプル(sample1)で勉強していますが、分らないところがあるので教えてください。以下はソースの抜粋です。
未入力項目のチェックにおいて、最初にtextの未入力(名前,年齢,email)をチェックし、次にradioとcheckbox(性別,規約)の未選択をチェックしているようなのですが、この二つのステップがよく理解できません。具体的には■で示した行です。特にif($var == "eweb_submit") ;が何を意味するのか?なお、"eweb_submit"は送信確認画面のinputタグのvalue属性です。
初心者のため、うまく説明できませんがよろしくお願いします。
<?php header("Content-Type:text/html;charset=Shift_JIS"); ?>
<?php
省略
// 必須入力項目を設定する(する=1, しない=0)
$esse = 1;
// 必須入力項目(入力フォームで指定したname)
$eles = array('名前','年齢','性別','email','規約');
$sendm = 0;
foreach($_POST as $key=>$var) {
if($var == "eweb_submit") $sendm = 1;
}
// 文字の置き換え
$string_from = "\";
$string_to = "ー";
// 未入力項目のチェック
if($esse == 1) {
$flag = 0;
$length = count($eles) - 1;
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if($var == "eweb_submit") ;■
else {
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i] && empty($var)) {■
$errm .= "<FONT color=#ff0000>「".$key."」は必須入力項目です。</FONT><BR>\n";
$flag = 1;
}
}
}
}
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i]) {■
$eles[$i] = "eweb_ok";■
}
}
}
for($i=0; $i<=$length; $i++) {
if($eles[$i] != "eweb_ok") {■
$errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n";
$eles[$i] = "eweb_ok";
$flag = 1;
}
}
if($flag == 1){
htmlHeader();
?>
<!--- 未入力があった時の画面 --- 開始 --------------------->
入力エラー<BR><BR>
<?php echo $errm; ?>
<BR><BR>
<INPUT type="button" value="前画面に戻る" onClick="history.back()">
<!--- 終了 --->
<?php
htmlFooter();
exit(0);
}
}
省略
$body=mb_convert_encoding($body,"JIS","SHIFT_JIS");
$sbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))."?=";
if($from_add == 1) {
$from = $_POST['email'];
$header="From: $from\nReply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
} else {
$header="Reply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
}
if($chmail == 0 || $sendm == 1) {
mail($to,$sbj,$body,$header);
if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); }
}
else { htmlHeader();
?>
<!--- 送信確認画面のレイアウトの編集 --- 開始 ------------->
以下の内容で間違いがなければ、「送信する」ボタンを押してください。<BR><BR>
<FORM action="<? echo $script; ?>" method="POST">
<? echo $err_message; ?>
<TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3">
<?php
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
$var = htmlspecialchars($var);
print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var);
?>
<INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>">
<?php
print("</TD></TR>\n");
}
?>
</TABLE>
<BR>
<INPUT type="hidden" name="eweb_set" value="eweb_submit">
<INPUT type="submit" value="送信する">
<INPUT type="button" value="前画面に戻る" onClick="history.back()">
</FORM>
以下省略
No.2ベストアンサー
- 回答日時:
はじめまして、自分も初心者です。
すでに解決済みかもしれませんが、自分も同じsampleで引っかかったので回答します。
$var == "eweb_submit"は送信確認ページの送信ボタンを押せば初めて送られるデータと見られます。
そのため、このデータが含まれる場合、チェックは不要ですし、重複して送信確認画面を見る必要はありませんので、値にeweb_submitがあれば処理をスルーするために記述されていると考えられます。
また、if($key == $eles[$i] && empty($var))の部分は、必須項目のデータが空の場合、エラーを記述するという処理です。
必須項目は毎回$eles = array('名前','年齢','性別','email','規約');の部分で初期化されます。
if($key == $eles[$i]) {■
$eles[$i] = "eweb_ok";■の部分は、
必須項目に設定したラジオとチェックボックスの項目にチェックが入っていれば、当然POSTされるkeyに含まれるので、チェックして最終的に$eles[]の中味が全部eweb_okになりますが、必須項目のkeyが無ければ、その部分はeweb_ok以外の初期値のままです。
そのため、if($eles[$i] != "eweb_ok") {■で確認して、エラーを追記しています。
また、if文の{が無い記述ですが、自分もあれっ?と思いました。動いているので、そういう記述もアリなのだと思うことにしました。
また、自分の疑問ですが、<? echo $err_message; ?>の記述は何なのか?
疑問です…。もし判ればお教えください。
ちなみに、
if($eles[$i] != "eweb_ok") {■
$errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n";
$eles[$i] = "eweb_ok";
の部分の$eles[$i] = "eweb_ok"は何のために代入しているのか自分もわかりません…。おそらく無意味な処理です。
お礼が大変遅くなってしまいました。今、ポイントをつけていないことに気付きあわてています。おかげさまでで少しは理解が進みました。まだわからない部分はありますが、メールフォームは問題なく動いています。ありがとうございます。
No.1
- 回答日時:
下記の例で分かりますかね?
<?php
$string = "aiueo";
if( $string == "aiueo"){
echo '$stringはaiueoです。';
}else{
echo '$stringはaiueoではありません。';
}
?>
参考URL:http://www.atmarkit.co.jp/flinux/php4/php4_3/php …
この回答への補足
回答ありがとうございます。返事遅くなってすいません。
示してくれた例は理解できます。うまく言えないんですけど、もう少し具体的なところがわかりません。例えば
if($var == "eweb_submit") ;
であれば、「入力された要素が"eweb_submit"」ということは何を意味しているのか?また、;の後に{処理}がなく、いきなりelseがきているのはどういうことでしょうか?よかったら教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでファイルアップロード時に...
-
PHPでURLにジャンプするには?
-
フォーム送信後の更新ボタンで...
-
フォームに入力された内容を,...
-
ボタンをクリックでPHP文を実行
-
携帯用phpフォームの自動返信メ...
-
input type valueの値について
-
配列について教えて下さい。
-
MT4のファイルオプション画面の...
-
簡易ショッピングカートの精算
-
サブフォルダ内の全てのテキス...
-
PHPでformで送信された結果のペ...
-
コードの何が間違っているのか...
-
ラジオボタンにあらかじめチェ...
-
phpでチェックボックスでの値の...
-
mysql データ登録
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで内容確認画面表示後メ...
-
php データベース更新
-
php で画面にコードが表示され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム送信後の更新ボタンで...
-
phpで、フォームのラジオボタン...
-
テキストリンクをPOST送信したい
-
ボタンをクリックでPHP文を実行
-
セッションを使わずに遷移先画...
-
$_POST['hoge']のデータをフラ...
-
フォームで作った送信ボタンが...
-
Submit(送信ボタン)を押した...
-
ローカルにあるhtmlのフォーム...
-
PHPでファイルアップロード時に...
-
PHPの質問:フォームから受け取...
-
特殊文字を含むフォームデータ...
-
GETとPOST以外のデータの渡し方...
-
なぜ、unexpected T_VARIABLEに...
-
フォームのPOST情報が渡らない?
-
JavaScript変数をPHPへ渡す
-
チェックボックスのチェック済...
-
PHP+JSのメールフォームで、選...
-
管理パスワードによる認証
-
同ページへの通信
おすすめ情報