メールフォームについて
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>
以下省略
お礼
ご返答ありがとうございます。 指摘いただいた箇所を英語にかえたところ認識するようになりました。 アドヴァイスすごく助かりました