我提交的表单会将记录插入数据库,然后将电子邮件发送到指定的地址。以下代码对我不起作用。我收到了错误。
if (isset($_POST['submit'])) {
//if (
// !empty($_POST['item_cid']) &&
// !empty($_POST['item_code']) &&
// !empty($_POST['item_name']) &&
// !empty($_POST['item_price']) &&
// !empty($_POST['item_qty']) &&
// is_array($_POST['item_cid']) &&
// is_array($_POST['item_code']) &&
// is_array($_POST['item_name']) &&
// is_array($_POST['item_price']) &&
// is_array($_POST['item_qty']) &&
// count($_POST['item_cid']) === count($_POST['item_code'])
// )
//{
foreach($_POST['item_cid'] as $key => $value) {
//Data for Orders Table
$cid = mysqli_real_escape_string($connection,$value);
$pcode = mysqli_real_escape_string($connection,$_POST['item_code'][$key]);
$pname = mysqli_real_escape_string($connection,$_POST['item_name'][$key]);
$pprice = mysqli_real_escape_string($connection,$_POST['item_price'][$key]);
$pqty = mysqli_real_escape_string($connection,$_POST['item_qty'][$key]);
//Data for Customers Table
$cname = mysqli_real_escape_string($connection,$_POST['item_cname'][$key]);
$cemail = mysqli_real_escape_string($connection,$_POST['item_cemail'][$key]);
$cphone = mysqli_real_escape_string($connection,$_POST['item_cphone'][$key]);
$caddress = mysqli_real_escape_string($connection,$_POST['item_caddress'][$key]);
$ctotal = mysqli_real_escape_string($connection,$_POST['item_ctotal'][$key]);
// $sql = "INSERT INTO orders (cid, ordprod_code, ordprod_name, ordprod_price, ordprod_qty) VALUES ('$value', '$pcode', '$pname', '$pprice', '$pqty')";
// $sql2 = "INSERT INTO customers (cid, cname, cemail, cphone, caddress, ctotal) VALUES ('$value','$cname','$cemail','$cphone','$caddress','$ctotal')";
if ($connection->query($sql) === TRUE) {
echo "Orders record created successfully \n";
}
// } else {
// echo "Error: " . $sql . "<br>" . $connection->error;
// }
if ($connection->query($sql2) === TRUE) {
echo "Customers record created successfully \n";
}
// } else {
// echo "Error: " . $sql2 . "<br>" . $connection->error;
} // close the loop
//********************************
// START EMAIL FUNCTION
//********************************
// PREPARE THE BODY OF THE MESSAGE
$message = '<html><body>';
$message .= '<img src="http://example.com/static/images/emailhead.jpg" alt="OMREL JEWELRY" />';
$message .= '<h3>Customer Information:</h3>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= '<tr><td><strong>Name:</strong></td><td>'. strip_tags($_POST['item_cname']) .'</td></tr>';
$message .= '<tr><td><strong>Email:</strong></td><td>'. strip_tags($_POST['item_cemail']) .'</td></tr>';
$message .= '<tr><td><strong>Phone:</strong></td><td>'. strip_tags($_POST['item_cphone']) .'</td></tr>';
$message .= '<tr><td><strong>Address:</strong> </td><td>'. strip_tags($_POST['item_caddress']) .'</td></tr>';
$message .= '</table>';
$message .= '</body></html>';
// MAKE SURE THE "FROM" EMAIL ADDRESS DOESN'T HAVE ANY NASTY STUFF IN IT
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i";
if (preg_match($pattern, $_POST['item_cemail'])) {
$cleanedFrom = $_POST['item_cemail'];
} else {
return "The email address you entered was invalid. Please try again!";
}
// CHANGE THE BELOW VARIABLES TO YOUR NEEDS
$to = 'info@domain.com';
$subject = 'New order Arrived CustomerID #'.$cid.' ';
$headers = "From: " . $cleanedFrom . "\r\n";
$headers .= "Reply-To: ".strip_tags($_POST['item_ceamil']) ."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if (mail($to, $subject, $message, $headers)) {
echo 'Your order has been sent. Our sales department will contact you soon...';
} else {
echo 'There was a problem sending the email.';
}
print_r($_POST['item_cname']);
} // Data Inserted & Emailed Close IF Statement
session_destroy();
HTML
<p class="form-row">
<label class="" for="item_cname[]">Your Name <span class="required">*</span></lable>
<input class="input-text" type="text" name="item_cname[]" placeholder="Your Name" />
</p>
<p class="form-row">
<label class="" for="item_cemail[]">Email Address <span class="required">*</span></lable>
<input type="text" name="item_cemail[]" placeholder="Your Email Address"/>
</p>
<p class="form-row">
<label class="" for="item_cphone[]">Phone Number <span class="required">*</span></lable>
<input type="text" name="item_cphone[]" placeholder="Your Phone Number"/>
</p>
<p class="form-row">
<label class="" for="item_caddress[]">Address <span class="required">*</span></lable>
<textarea name="item_caddress[]" placeholder="Your Address" class="input-text" rows="2" cols="2" maxlength="140"></textarea>
</p>
错误
注意:未定义的变量:/home/public_html/dev/process.php中的sql 第48行
警告:mysqli :: query():空查询 第48行/home/public_html/dev/process.php
注意:未定义的变量:/home/public_html/dev/process.php中的sql2 在第55行
警告:mysqli :: query():空查询 第55行/home/public_html/dev/process.php
警告:strip_tags()期望参数1为字符串,数组为 第72行/home/public_html/dev/process.php
警告:strip_tags()期望参数1为字符串,数组为 第73行/home/public_html/dev/process.php
警告:strip_tags()期望参数1为字符串,数组为 第74行/home/public_html/dev/process.php
警告:strip_tags()期望参数1为字符串,数组为 第75行/home/public_html/dev/process.php
警告:preg_match()期望参数2为字符串,给定的数组为 第81行/home/public_html/dev/process.php
所有指向strip_tags($_POST['item_*'])
的错误(*表示项目名称)。
如何解决这个问题?
答案 0 :(得分:1)
<?php
if (isset($_POST['submit'])) {
foreach($_POST['item_cid'] as $key => $value) {
//Data for Orders Table
$cid = mysqli_real_escape_string($connection,$value);
$pcode = mysqli_real_escape_string($connection,$_POST['item_code'][$key]);
$pname = mysqli_real_escape_string($connection,$_POST['item_name'][$key]);
$pprice = mysqli_real_escape_string($connection,$_POST['item_price'][$key]);
$pqty = mysqli_real_escape_string($connection,$_POST['item_qty'][$key]);
//Data for Customers Table
$cname = mysqli_real_escape_string($connection,$_POST['item_cname'][$key]);
$cemail = mysqli_real_escape_string($connection,$_POST['item_cemail'][$key]);
$cphone = mysqli_real_escape_string($connection,$_POST['item_cphone'][$key]);
$caddress = mysqli_real_escape_string($connection,$_POST['item_caddress'][$key]);
$ctotal = mysqli_real_escape_string($connection,$_POST['item_ctotal'][$key]);
if ($connection->query($sql) === TRUE) {
echo "Orders record created successfully \n";
}
if ($connection->query($sql2) === TRUE) {
echo "Customers record created successfully \n";
}
}
$message = '<html><body>';
$message .= '<img src="http://example.com/static/images/emailhead.jpg" alt="OMREL JEWELRY" />';
$message .= '<h3>Customer Information:</h3>';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= '<tr><td><strong>Name:</strong></td><td>'. $cname .'</td></tr>';
$message .= '<tr><td><strong>Email:</strong></td><td>'. $cemail .'</td></tr>';
$message .= '<tr><td><strong>Phone:</strong></td><td>'. $cphone .'</td></tr>';
$message .= '<tr><td><strong>Address:</strong></td><td>'. $ctotal .'</td></tr>';
$message .= '</table>';
$message .= '</body></html>';
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i";
if (preg_match($pattern, $cemail)) {
$cleanedFrom = $cemail;
} else {
return "The email address you entered was invalid. Please try again!";
}
$to = 'info@example.com';
$subject = 'New order Arrived CustomerID #'.$cid.' ';
$headers = "From: " . $cleanedFrom . "\r\n";
$headers .= "Reply-To: ".strip_tags($_POST['item_ceamil']) ."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if (mail($to, $subject, $message, $headers)) {
echo 'Your order has been sent. Our sales department will contact you soon...';
} else {
echo 'There was a problem sending the email.';
}
print_r($_POST['item_cname']);
} // Data Inserted & Emailed Close IF Statement
session_destroy();
?>
答案 1 :(得分:0)
您的一个帖子数据可能是数组对象。 尝试make print_r($ _ POST [xxx])来检查你的POST值。 Strip Tags函数参数不应该是数组对象。