էլ. փոստի և անունի ստուգումներ 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 = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
$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_encode();
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 .= "Content-Disposition: attachment;".$eol;
// $msg .= " filename=\"".$file_name."\"".$eol.$eol;
$msg .= $f_contents.$eol.$eol;
}
}
}
# Տեքստի կամ html-ի կարգավորում
$msg .= "Content-Type: multipart/alternative".$eol;
/*
# Տեքստային տարբերակ
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
$msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$msg .= strip_tags(str_replace("<br>", "\n", $body)).$eol.$eol;
*/
# HTML տարբերակ
$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; // ավարտեք երկու eol-ով ավելի լավ անվտանգության համար։ տեսեք ներմուծումը.
# ԱՌԱՋՆԵՐԻ ԷԼ-ՓՈՍՏԸ
ini_set(sendmail_from,$fromaddress); // INI տողերը ստիպում են, որ From հասցեն օգտագործվի !
$result = mail($emailaddress, $emailsubject, $msg, $headers);
ini_restore(sendmail_from);
return $result;
}
if ( isset($_POST['ՖԻՕ']) ) {
$fio = $_POST['ՖԻՕ'];
$reg = $_POST['Տարածք'];
$city = $_POST['Քաղաք'];
$phone = $_POST['Հեռախոս'];
$email = $_POST['Էլ_փոստ'];
$addres = $_POST['Առաքման_հասցե'];
$com = $_POST['Պատասխան_պատվերի'];
$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\">
<tbody>
<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>
</tbody>
</table>
<h2>Պատվերի պարունակությունը:</h2>";
if ($_SESSION['cart']) {
$totalArray = array();
$uniqueArray = array_unique($_SESSION['cart']); // վերացնում ենք կրկնվող տարրերը
// Վերջնական հաշվարկ ID ապրանքների և դրանց քանակի
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" class="cartTable" width="100%">
<tr class="headercartTable">
<td>Ապրանքի անվանում</td>
<td>Քանակ</td>
<td>Միավորի գինը, դրամ</td>
<td>Ընդհանուր գինը, դրամ</td>
</tr>';
$totalPrice = 0;
$MoneyUnit = array('դրամ' => 'դրամ', 'դոլար' => '$' );
foreach ($r as $recId => $dataArr) {
if ( isset($totalArray[$dataArr['id']]) ) {
$totalPrice += $dataArr['price']*$totalArray[$dataArr['id']];
$message .= "<tr class=\"item".$dataArr['id']."\">".
"<td>".$dataArr['name']."</td>".
"<td align=\"center\">".$totalArray[$dataArr['id']]."</td>".
"<td align=\"center\" class=\"curPrice\">".$dataArr['price']."</td>".
"<td align=\"center\" class=\"totalPrice\">".$dataArr['price']*$totalArray[$dataArr['id']]."</td>".
"</tr>";
}
}
$message .= '<tr class="footerTable">
<td style="text-align: right; font-weight: bold" colspan="2">Ընդհանուր արժեք</td>
<td id="cashe" style="font-weight: bold" align="center" colspan="2">'.$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>
<br /><br /><br />
<h2>Գնել տվյալներ</h2>
<?=$message ?>
<?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="ՖԻՕ" value="ՖԻՕ" /><br />
<input type="text" size="70" name="Տարածք" value="Տարածք" /><br />
<input type="text" size="70" name="Քաղաք" value="Քաղաք" /><br />
<input type="text" size="70" name="Հեռախոս" value="Հեռախոս" /><br />
<input type="text" size="70" name="Էլ. փոստ" value="Էլ. փոստ" /><br />
<input type="text" size="70" name="Առաքման հասցե" value="Առաքման հասցե" /><br />
<textarea name="Պատվերի մեկնաբանություն" cols="54" rows="7">Պատվերի մեկնաբանություն</textarea><br />
<br />
<input type="radio" name="group1" value="Նაღդ գումարով առաքման ժամանակ" />Նაღդ գումարով առաքման ժամանակ<br />
<input type="radio" name="group1" value="Վճարում Սբերբանկի միջոցով" />Վճարում Սբերբանկի միջոցով<br />
<input type="radio" name="group1" value="Անվճար հաշվարկ" />Անվճար հաշվարկ<br />
<input type="submit" value="Ավարտել ձևակերպումը" id="sendOrdering" />
</form>
<?php } ?>