У меня есть форма большого заказа в html, и я хочу, чтобы иметь возможность отправлять данные по электронной почте. У меня есть сценарий ниже PHP, чтобы отправить его, но он продолжает идти на пустой белый экран или ошибки. Может ли кто-нибудь помочь мне найти то, что мне не хватает или нужно изменить.
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "Dealer Order";
$midnight = $_POST['midnight'];
$midFiveSqFt = $_POST['midFiveSqFt'];
$midThreeSqFt = $_POST['midThreeSqFt'];
$midTotalSqFt = $_POST['midTotalSqFt'];
$midPrice = $_POST['midPrice'];
$midLineTotal = $_POST['midLineTotal'];
$daynight = $_POST['daylight'];
$dayFiveSqFt = $_POST['dayFiveSqFt'];
$dayThreeSqFt = $_POST['dayThreeSqFt'];
$dayTotalSqFt = $_POST['dayTotalSqFt'];
$dayPrice = $_POST['dayPrice'];
$dayLineTotal = $_POST['dayLineTotal'];
$earthtone = $_POST['earthtone'];
$earthFiveSqFt = $_POST['earthFiveSqFt'];
$earthThreeSqFt = $_POST['earthThreeSqFt'];
$earthTotalSqFt = $_POST['earthTotalSqFt'];
$earthPrice = $_POST['earthPrice'];
$earthLineTotal = $_POST['earthLineTotal'];
$mixedBlend = $_POST['mixedBlend'];
$mbFiveSqFt = $_POST['mbFiveSqFt'];
$mbThreeSqFt = $_POST['mbThreeSqFt'];
$mbTotalSqFt = $_POST['mbTotalSqFt'];
$mbPrice = $_POST['mbPrice'];
$mbLineTotal = $_POST['mbLineTotal'];
$starryNight = $_POST['starryNight'];
$snTotalSqFt = $_POST['snTotalSqFt'];
$snPrice = $_POST['snPrice'];
$snLineTotal = $_POST['snLineTotal'];
$dayNight = $_POST['dayNight'];
$dnTotalSqFt = $_POST['dnTotalSqFt'];
$dnPrice = $_POST['dnPrice'];
$dnLineTotal = $_POST['dnLineTotal'];
$caramelstone = $_POST['caramelstone'];
$carTotalSqFt = $_POST['carTotalSqFt'];
$carPrice = $_POST['carPrice'];
$carLineTotal = $_POST['carLineTotal'];
$harvestBlend = $_POST['harvestBlend'];
$hbTotalSqFt = $_POST['hbTotalSqFt'];
$hbPrice = $_POST['hbPrice'];
$hbLineTotal = $_POST['hbLineTotal'];
$winterBlend = $_POST['winterBlend'];
$wbTotalSqFt = $_POST['wbTotalSqFt'];
$wbPrice = $_POST['wbPrice'];
$wbLineTotal = $_POST['wbLineTotal'];
$autumnBlend = $_POST['autumnBlend'];
$abTotalSqFt = $_POST['abTotalSqFt'];
$abPrice = $_POST['abPrice'];
$abLineTotal = $_POST['abLineTotal'];
$tiletotal = $_POST['tiletotal'];
$tiledel = $_POST['tiledel'];
$oneWick = $_POST['oneWick'];
$owPrice = $_POST['owPrice'];
$owLineTotal = $_POST['owLineTotal'];
$twoWick = $_POST['twoWick'];
$twPrice = $_POST['twPrice'];
$twLineTotal = $_POST['twLineTotal'];
$threeWick = $_POST['threeWick'];
$thwPrice = $_POST['thwPrice'];
$thwLineTotal = $_POST['thwLineTotal'];
$sixx8tray = $_POST['sixx8tray'];
$sixtryPrice = $_POST['sixtryPrice'];
$sixtryLineTotal = $_POST['sixtryLineTotal'];
$sevenx10tray = $_POST['sevenx10tray'];
$svntryPrice = $_POST['svntryPrice'];
$svntryLineTotal = $_POST['svntryLineTotal'];
$silverStopper = $_POST['silverStopper'];
$ssPrice = $_POST['ssPrice'];
$ssLineTotal = $_POST['ssLineTotal'];
$knife = $_POST['knife'];
$kPrice = $_POST['kPrice'];
$kLineTotal = $_POST['kLineTotal'];
$spectotal = $_POST['spectotal'];
$specdel = $_POST['specdel'];
$over150_1 = $_POST['over150_1'];
$grandtot = $_POST['grandtot'];
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Midnight: ".clean_string($midnight)."\n";
$email_message .= "midFiveSqFt: ".clean_string($midFiveSqFt)."\n";
$email_message .= "midThreeSqFt: ".clean_string($midThreeSqFt)."\n";
$email_message .= "midTotalSqFt: ".clean_string($midTotalSqFt)."\n";
$email_message .= "midPrice: ".clean_string($midPrice)."\n";
$email_message .= "midLineTotal: ".clean_string($midLineTotal)."\n";
**(I know I need to finish the above for all the types)**
// create email headers
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
}
?>
Я проверил ваш код и пришел к следующему выводу.
У вас нет переменной, установленной в $_POST['email']
чтобы объяснить пустой экран, и в конце/вне вашего кода нет else
условного оператора, чтобы показать/сказать вам иначе.
То, что вы, вероятно, "хотели" проверить, было проверить, была ли установлена кнопка "отправить", как в if(isset($_POST['submit'])) {
или добавить $email=$_POST['email'];
в соответствии с вашим условным утверждением, если вы хотите сохранить это выражение неповрежденным.
Я добавил эту строку в конце вашего кода: (чтобы проверить)
else { echo "Sorry, Email variable is not set."; }
И если вы должны были изменить эту строку (чтобы проверить), if(isset($_POST['email'])) {
if(!isset($_POST['email'])) {
и запустить/выполнить его без вашей формы, вы увидите, что почта будет отправлена, однако она может оказаться в вашем окне SPAM, как и для меня, потому что не было электронной почты, связанной с From:
NB: Вы также подавляете ошибки, используя символ @
для своей функции @mail()
.
Поэтому либо добавьте $email=$_POST['email'];
после вашего утверждения условного утверждения или изменить его на if(isset($_POST['submit'])) {
если вы проверяете кнопку "named" submit.
То есть:
<input type="submit" name="submit" value="Submit">
<?php
// possible fix - uncomment
// $email=$_POST['email'];
if(isset($_POST['email'])) {
// delete the above line and uncomment this line if checking submit instead
// if(isset($_POST['submit'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "Dealer Order";
$midnight = $_POST['midnight'];
$midFiveSqFt = $_POST['midFiveSqFt'];
$midThreeSqFt = $_POST['midThreeSqFt'];
$midTotalSqFt = $_POST['midTotalSqFt'];
$midPrice = $_POST['midPrice'];
$midLineTotal = $_POST['midLineTotal'];
$daynight = $_POST['daylight'];
$dayFiveSqFt = $_POST['dayFiveSqFt'];
$dayThreeSqFt = $_POST['dayThreeSqFt'];
$dayTotalSqFt = $_POST['dayTotalSqFt'];
$dayPrice = $_POST['dayPrice'];
$dayLineTotal = $_POST['dayLineTotal'];
$earthtone = $_POST['earthtone'];
$earthFiveSqFt = $_POST['earthFiveSqFt'];
$earthThreeSqFt = $_POST['earthThreeSqFt'];
$earthTotalSqFt = $_POST['earthTotalSqFt'];
$earthPrice = $_POST['earthPrice'];
$earthLineTotal = $_POST['earthLineTotal'];
$mixedBlend = $_POST['mixedBlend'];
$mbFiveSqFt = $_POST['mbFiveSqFt'];
$mbThreeSqFt = $_POST['mbThreeSqFt'];
$mbTotalSqFt = $_POST['mbTotalSqFt'];
$mbPrice = $_POST['mbPrice'];
$mbLineTotal = $_POST['mbLineTotal'];
$starryNight = $_POST['starryNight'];
$snTotalSqFt = $_POST['snTotalSqFt'];
$snPrice = $_POST['snPrice'];
$snLineTotal = $_POST['snLineTotal'];
$dayNight = $_POST['dayNight'];
$dnTotalSqFt = $_POST['dnTotalSqFt'];
$dnPrice = $_POST['dnPrice'];
$dnLineTotal = $_POST['dnLineTotal'];
$caramelstone = $_POST['caramelstone'];
$carTotalSqFt = $_POST['carTotalSqFt'];
$carPrice = $_POST['carPrice'];
$carLineTotal = $_POST['carLineTotal'];
$harvestBlend = $_POST['harvestBlend'];
$hbTotalSqFt = $_POST['hbTotalSqFt'];
$hbPrice = $_POST['hbPrice'];
$hbLineTotal = $_POST['hbLineTotal'];
$winterBlend = $_POST['winterBlend'];
$wbTotalSqFt = $_POST['wbTotalSqFt'];
$wbPrice = $_POST['wbPrice'];
$wbLineTotal = $_POST['wbLineTotal'];
$autumnBlend = $_POST['autumnBlend'];
$abTotalSqFt = $_POST['abTotalSqFt'];
$abPrice = $_POST['abPrice'];
$abLineTotal = $_POST['abLineTotal'];
$tiletotal = $_POST['tiletotal'];
$tiledel = $_POST['tiledel'];
$oneWick = $_POST['oneWick'];
$owPrice = $_POST['owPrice'];
$owLineTotal = $_POST['owLineTotal'];
$twoWick = $_POST['twoWick'];
$twPrice = $_POST['twPrice'];
$twLineTotal = $_POST['twLineTotal'];
$threeWick = $_POST['threeWick'];
$thwPrice = $_POST['thwPrice'];
$thwLineTotal = $_POST['thwLineTotal'];
$sixx8tray = $_POST['sixx8tray'];
$sixtryPrice = $_POST['sixtryPrice'];
$sixtryLineTotal = $_POST['sixtryLineTotal'];
$sevenx10tray = $_POST['sevenx10tray'];
$svntryPrice = $_POST['svntryPrice'];
$svntryLineTotal = $_POST['svntryLineTotal'];
$silverStopper = $_POST['silverStopper'];
$ssPrice = $_POST['ssPrice'];
$ssLineTotal = $_POST['ssLineTotal'];
$knife = $_POST['knife'];
$kPrice = $_POST['kPrice'];
$kLineTotal = $_POST['kLineTotal'];
$spectotal = $_POST['spectotal'];
$specdel = $_POST['specdel'];
$over150_1 = $_POST['over150_1'];
$grandtot = $_POST['grandtot'];
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Midnight: ".clean_string($midnight)."\n";
$email_message .= "midFiveSqFt: ".clean_string($midFiveSqFt)."\n";
$email_message .= "midThreeSqFt: ".clean_string($midThreeSqFt)."\n";
$email_message .= "midTotalSqFt: ".clean_string($midTotalSqFt)."\n";
$email_message .= "midPrice: ".clean_string($midPrice)."\n";
$email_message .= "midLineTotal: ".clean_string($midLineTotal)."\n";
// create email headers
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
}
else { echo "Sorry, Email variable is not set."; }
?>
$_POST['email']
поэтому, конечно, она потерпит неудачу. То, что вы «вероятно» хотели проверить, было посмотреть, было ли установлено «submit», какif(isset($_POST['submit'])) {
или add$email=$_POST['email'];
под вашим условным заявлением, если вы хотите сохранить это заявление.