PHPでのメール検証と名前の検証
こんにちは皆様
注文を受け付ける前にメールアドレスと名前をチェックするスクリプトを作成する必要があります。あらかじめありがとうございます!
<h1>注文の処理</h1>
<?php
require_once realpath(dirname(__FILE__) . '/../cms/local.php');
function send_mail($emailaddress, $fromaddress, $emailsubject, $body, $attachments=false){
$eol="\n";
$mime_boundary=md5(time());
# 共通ヘッダー
$headers = '';
$headers .= 'From: '.$fromaddress.$eol;
$headers .= 'Reply-To: '.$fromaddress.$eol;
$headers .= 'Return-Path: '.$fromaddress.$eol; // 返信アドレスを設定
$headers .= "Message-ID: <".$now." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol; // スパムフィルタ回避
$headers .= 'Bcc: '.EMAILS_ORDER.$eol;
# マルチタイプヘッダー境界
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: multipart/related; boundary=\"".$mime_boundary."\"".$eol;
$msg = "";
if ($attachments !== false)
{
for($i=0; $i < count($attachments); $i++)
{
if (is_file($attachments[$i]["file"]))
{
# 添付ファイル処理
$file_name = basename($attachments[$i]["name"]);
$handle=fopen($attachments[$i]["file"], 'rb');
$f_contents=fread($handle, filesize($attachments[$i]["file"]));
$f_contents=chunk_split(base64_encode($f_contents)); // base64エンコード
fclose($handle);
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol;
$msg .= "Content-Transfer-Encoding: base64".$eol;
$msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol;
$msg .= $f_contents.$eol.$eol;
}
}
}
$msg .= "Content-Type: multipart/alternative".$eol;
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: text/html; charset=windows-1251".$eol;
$msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$msg .= $body.$eol.$eol;
$msg .= "--".$mime_boundary."--".$eol.$eol;
ini_set(sendmail_from,$fromaddress);
$result = mail($emailaddress, $emailsubject, $msg, $headers);
ini_restore(sendmail_from);
return $result;
}
if ( isset($_POST['FIO']) ) {
$fio = $_POST['FIO'];
$reg = $_POST['Region'];
$city = $_POST['City'];
$phone = $_POST['Phone'];
$email = $_POST['Email'];
$addres = $_POST['Address'];
$com = $_POST['Comment'];
$group1 = $_POST['group1'];
$to = $email;
$from = '"サイト '.$_SERVER['SERVER_NAME'].'" <no-reply@'.$_SERVER['SERVER_NAME'].'>';
$subject = '注文 '.$_SERVER['SERVER_NAME'].' から '.date('d-m-Y H:i');
$message = "
<html><head><title>注文処理</title></head><body>
<p>あなたの注文 ".date('d.m.Y H:i')."</p>
<table width=\"100%\" cellspacing=\"2\" cellpadding=\"5\" border=\"0\">
<tr><th colspan=\"2\">購入者データ</th></tr>
<tr><td>姓名</td><td>$fio</td></tr>
<tr><td>地域</td><td>$reg</td></tr>
<tr><td>都市</td><td>$city</td></tr>
<tr><td>電話</td><td>$phone</td></tr>
<tr><td>メール</td><td>$email</td></tr>
<tr><td>配達住所</td><td>$addres</td></tr>
<tr><td>支払い方法</td><td>$group1</td></tr>
<tr><td>注文への備考</td><td>$com</td></tr>
</table><h2>注文内容</h2>";
if ($_SESSION['cart']) {
$totalArray = array();
$uniqueArray = array_unique($_SESSION['cart']);
foreach ($uniqueArray as $key) {
foreach ( $_SESSION['cart'] as $k => $v ) {
$totalArray[$v] = ( $v == $key ) ? $totalArray[$v] + 1 : $totalArray[$v] ;
}
}
$DB = new PDO ('sqlite:'.$_SERVER['DOCUMENT_ROOT'].'/minicms.sqlite');
$r = $DB->query('SELECT * FROM catalog_items')->fetchAll();
$message .= '<table border="1" cellpadding="10" cellspacing="10" width="100%">
<tr><td>商品名</td><td>数量</td><td>単価</td><td>合計</td></tr>';
$totalPrice = 0;
foreach ($r as $recId => $dataArr) {
if ( isset($totalArray[$dataArr['id']]) ) {
$totalPrice += $dataArr['price']*$totalArray[$dataArr['id']];
$message .= "<tr><td>".$dataArr['name']."</td><td align=\"center\">".$totalArray[$dataArr['id']]."</td><td align=\"center\">".$dataArr['price']."</td><td align=\"center\">".$dataArr['price']*$totalArray[$dataArr['id']]."</td></tr>";
}
}
$message .= '<tr><td style="text-align: right; font-weight: bold" colspan="2">合計</td><td colspan="2" align="center">'.$totalPrice.'</td></tr></table>';
} else {
$message .= '<h3>カートに商品がありません</h3>';
}
$message .= "</body></html>";
if ( send_mail($to, $from, $subject, $message) ) {
?>
<br /><h2>注文が受け入れられました</h2>
<p>登録メールアドレスに注文内容が送信されました。</p>
<p>まもなくマネージャーからご連絡します。</p>
<?php unset($_SESSION['cart']);
} else {
?>
<h2>メール送信エラー</h2>
<p>サイト管理者に連絡してください</p>
<?php
}
} else {?>
<p>すべてのフィールドを正しく入力してください。</p>
<p>正確な連絡先情報は注文を迅速に処理するために必要です。</p>
<form id="orderSend" action="" method="POST">
<input type="text" size="70" name="FIO" value="姓名" /><br />
<input type="text" size="70" name="Region" value="地域" /><br />
<input type="text" size="70" name="City" value="都市" /><br />
<input type="text" size="70" name="Phone" value="電話" /><br />
<input type="text" size="70" name="Email" value="メール" /><br />
<input type="text" size="70" name="Address" value="配達住所" /><br />
<textarea name="Comment" cols="54" rows="7">備考</textarea><br />
<br />
<input type="radio" name="group1" value="payment_cash" />現金払い<br />
<input type="radio" name="group1" value="payment_bank" />銀行振込<br />
<input type="radio" name="group1" value="payment_transfer" />振込<br />
<input type="submit" value="送信" id="sendOrdering" />
</form>
<?php } ?>
- コメントを投稿するにはログインしてください