【发布时间】:2018-03-07 23:01:13
【问题描述】:
我已经尝试找到解决此问题的方法大约一周了。我很可能遇到了一个正确的答案并且不理解它,因为坦率地说,我对 PHP 一无所知。因此,我将非常感谢您的帮助。
我正在更新我父亲的网站,并试图将我现有的联系表格代码和一些由他原来网站的人编写的代码组合在一起,我无法获得发送订单(所有联系方式都很好,但是订单本身显示为“数组”)
从本质上讲,switch 函数应该换掉商品的名称并将其添加到订单中,前提是已经给出了数量。
我希望这是有道理的!
PHP:
<?php
session_start();
$tellimus = array();
function kirjuta_mail($input){
while ($rida = array_pop($input)){
$vastus .= "Tellin: ".$rida[0].": ".$rida[1]." tk.\n";
}
$vastus .="\n\n $name\n $email\n $tel\n $address\n\n Kommentaar: $message\n\n";
}
if (isset($_POST["submit"])) {
$kaart = $_POST['kaart'];
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$address = $_POST['address'];
$message = $_POST['message'];
$human = intval($_POST['human']);
$headers = "From: Saar Graafika lehelt \r\n";
$headers .= "Reply-To: $email \r\n";
$to = 'email@email.com';
$subject = 'Tellimus Saar Graafika lehelt';
$body = "\n $kaart\n\n $name\n $email\n $tel\n $address\n\n Kommentaar: $message\n\n";
if (!$_POST['name']) {
$errName = 'Please enter your name';
}
if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errEmail = 'Please enter a valid e-mail address';
}
if (!$_POST['tel']) {
$errTel = 'Please enter your phone number';
}
if (!$_POST['address']) {
$errAddress = 'Please enter your address';
}
if ($human !== 8) {
$errHuman = 'The anti-spam is incorrect';
}
if (!$errName && !$errEmail && !$errTel && !$errAddress && !$errHuman) {
if (mail ($to, $subject, $body, $headers)) {
$result='<div class="alert alert-success">Thank you for your order - we'll be in touch soon!</div>';
} else {
$result='<div class="alert alert-danger">We are sorry - there's been an error. Please try again later!</div>';
}
}
}
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
if(IsInjected($email))
{
echo "We are sorry - there's been an error!";
exit;
}
if($checkme) {
for ($i = 0; $i < 139; $i++){
if (strlen($_POST['kaart'][$i])) {
switch ($i) {
case 0:
array_push($tellimus,array("kaart113", $_POST['kaart'][$i]));
break;
LOTS MORE ITEMS HERE
case 146:
array_push($tellimus,array("Challenges: CD ", $_POST['kaart'][$i]));
break;
}
}
}
if (count($input) == 0)
kirjuta_mail($tellimus);
}
?>
这些位来自原始代码:
session_start();
$tellimus = array();
function kirjuta_mail($input){
while ($rida = array_pop($input)){
$vastus .= "Tellin: ".$rida[0].": ".$rida[1]." tk.\n";
}
$vastus .="\n\n $name\n $email\n $tel\n $address\n\n Kommentaar: $message\n\n";
}
还有:
if($checkme) {
for ($i = 0; $i < 139; $i++){
if (strlen($_POST['kaart'][$i])) {
switch ($i) {
case 0:
array_push($tellimus,array("kaart113", $_POST['kaart'][$i]));
break;
LOTS MORE ITEMS HERE
case 146:
array_push($tellimus,array("Challenges: CD ", $_POST['kaart'][$i]));
break;
}
}
}
if (count($input) == 0)
kirjuta_mail($tellimus);
}
相关 HTML:
<form role="form" method="post" action="telli.php">
<div class="panel-group" id="accordion2">
<div class="panel panel-default">
<a class="acca" data-toggle="collapse" data-parent="#accordion2" href="#collapseInnerOne"><div class="panel-heading kaks">
<h4 class="panel-title"> Jõulukaardid: A4 kokkumurtud <span class="glyphicon glyphicon-chevron-down ava"></span></h4>
</div></a>
<div id="collapseInnerOne" class="panel-collapse collapse">
<div class="panel-body">
<p>Formaat: A4 kokkumurtud | Hind: <span class="uus">0.90€</span></p>
<div class="tellimus">
<a href="img/tooted/kaardid/postkaart/kaart136_A5.jpg" data-gallery="#blueimp-gallery-collapseInnerOne"><img src="img/tooted/kaardid/postkaart/kaart136_A5.jpg" class="kesku postkaart" alt=""></a>
<div class="form-group">
<label class="col-form-label">Kogus: </label>
<input type="number" class="form-control kogus" id="kogus" name=kaart[15] placeholder="0"> tk
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label for="name" class="col-form-label">Name<span class="uus">*</span></label>
<input type="text" class="form-control" id="name" name="name" placeholder="Name" value="<?php echo htmlspecialchars($_POST['name']); ?>">
<?php echo "<p class='text-danger'>$errName</p>";?>
</div>
<div class="form-group">
<label for="email" class="col-form-label">E-mail<span class="uus">*</span></label>
<input name="email" class="form-control" id="email" type="email" placeholder="E-mail" value="<?php echo htmlspecialchars($_POST['email']); ?>">
<?php echo "<p class='text-danger'>$errEmail</p>";?>
</div>
<div class="form-group">
<label for="tel" class="col-form-label">Phone<span class="uus">*</span></label>
<input name="tel" class="form-control" id="tel" type="tel" placeholder="Your Phone Number" value="<?php echo htmlspecialchars($_POST['tel']); ?>">
<?php echo "<p class='text-danger'>$errTel</p>";?>
</div>
<div class="form-group">
<label for="address" class="col-form-label">Address<span class="uus">*</span></label>
<textarea class="form-control" rows="4" name="address" placeholder="Your address"><?php echo htmlspecialchars($_POST['address']); ?></textarea>
<?php echo "<p class='text-danger'>$errAddress</p>";?>
</div>
<div class="form-group">
<label for="message" class="col-form-label">Message</label>
<textarea class="form-control" rows="4" name="message" placeholder="Your Message"><?php echo htmlspecialchars($_POST['message']); ?></textarea>
</div>
<div class="form-group">
<label for="human" class="col-form-label">*How much is 3+5? (Anti-spam)<span class="uus">*</span></label>
<input type="text" class="form-control" id="human" name="human" placeholder="Answer">
<?php echo "<p class='text-danger'>$errHuman</p>";?>
</div>
<div class="form-group">
<input type="hidden" name="checkme" value="formmail">
<input id="submit" name="submit" type="submit" value="Place Order">
</div>
<div class="form-group">
<?php echo $result; ?>
</div>
</form>
【问题讨论】:
-
您将“订单”存储在哪里? “...获取要发送的订单(所有联系方式都很好,但订单本身显示为'数组')”
-
根据我从原始编码器的 cmets 中了解到,订单应该存储在 $tellimus = array();
标签: php email switch-statement contact-form