Я пытаюсь ознакомиться с PHP, создав простую систему упорядочивания пиццы, которая задает размер, накипь и информацию о заказе. Письмо отправляется красиво, но раздел заголовков сообщения пуст. Что мне не хватает?
Благодарю!
<?php
/* Set e-mail recipient */
$myemail = "[email protected]";
$subject = "Pizza Order";
/* Check all form inputs using check_input function */
$name = check_input($_POST['name'], "Enter your name");
$email = check_input($_POST['email'], "Enter your email");
$street = check_input($_POST['street'], "Enter your your street");
$apt = check_input($_POST['apt'], "Enter your your apartment number");
$zip = check_input($_POST['zip'], "Enter your ZIP code");
$phone = check_input($_POST['phone'], "Enter your phone number");
$comments = $_POST['comments'];
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mail address not valid");
}
/* the following code is currently not working */
$pepperoni = $_POST['pepperoni'];
if(isset($_POST['pepperoni']) &&
$_POST['Pepperoni'] == 'Yes')
{
echo "pepperoni";
}
else
{
echo "";
}
if(isset($_POST['Half Pepperoni']) &&
$_POST['halfpepperoni'] == 'Yes')
{
echo "halfpepperoni";
}
else
{
echo "";
}
if(isset($_POST['Onions']) &&
$_POST['onions'] == 'Yes')
{
echo "onions";
}
else
{
echo "";
}
if(isset($_POST['Half Onions']) &&
$_POST['halfonions'] == 'Yes')
{
echo "halfonions";
}
else
{
echo "";
}
if(isset($_POST['Mushrooms']) &&
$_POST['mushrooms'] == 'Yes')
{
echo "mushrooms";
}
else
{
echo "";
}
if(isset($_POST['Half Mushrooms']) &&
$_POST['halfmushrooms'] == 'Yes')
{
echo "halfmushrooms";
}
else
{
echo "";
}
if(isset($_POST['Peppers']) &&
$_POST['peppers'] == 'Yes')
{
echo "peppers";
}
else
{
echo "";
}
if(isset($_POST['Half Peppers']) &&
$_POST['halfpeppers'] == 'Yes')
{
echo "halfpeppers";
}
else
{
echo "";
}
if(isset($_POST['Extra Cheese']) &&
$_POST['extracheese'] == 'Yes')
{
echo "extracheese";
}
else
{
echo "";
}
if(isset($_POST['Half Extra Cheese']) &&
$_POST['halfextracheese'] == 'Yes')
{
echo "halfextracheese";
}
else
{
echo "";
}
if(isset($_POST['Sausage']) &&
$_POST['sausage'] == 'Yes')
{
echo "sausage";
}
else
{
echo "";
}
if(isset($_POST['Half Sausage']) &&
$_POST['halfsausage'] == 'Yes')
{
echo "halfsausage";
}
else
{
echo "";
}
/* Let prepare the message for the e-mail */
/* -=-=-=- EDITED -=-=-=- The toppings should be uncommented BUT you need to make variables like above Likewise the checkboxes need to have associated.
here annother example variable:
$pepperoni = $_POST['pepperoni'];
*/
$message = "
Toppings:
$pepperoni
$halfpepperoni
$onions
$halfonions
$mushrooms
$halfmushrooms
$peppers
$halfpeppers
$extracheese
$halfextracheese
$sausage
$halfsausage
Name: $name
Email: $email
Street: $street
Apt: $apt
ZIP: $zip
Phone: $phone
Comments: $comments
";
$headers = "From:" . $email;
/* Send the message using mail() function */
/*mail($name, $email, $apt, $zip, $phone, $comments $pepperoni $halfpepperoni $onions $halfonions $mushrooms $halfmushrooms $peppers $halfpeppers $extracheese $halfextracheese $sausage $halfsausage);*/
mail($myemail,$subject,$message,$headers);
/* Redirect visitor to the thank you page */
header('Location: thanks.html');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Please correct the following error:</p>
<strong><?php echo $myError; ?></strong>
<p>Hit the back button and try again</p>
</body>
</html>
<?php
exit();
}
?>
Вы не устанавливаете свои переменные, вы только эхом отзываете их:
/* the following code is currently not working */
$pepperoni = $_POST['pepperoni'];
if(isset($_POST['pepperoni']) &&
$_POST['Pepperoni'] == 'Yes')
{
echo "pepperoni";
}
else
{
echo "";
}
Теперь переменная $pepperoni
будет содержать Yes
если она была выбрана, и ничего больше. И это единственная переменная, которую вы пытаетесь установить, остальные переменные в вашем сообщении не определены.
Вы, вероятно, хотите что-то вроде:
if(isset($_POST['pepperoni']) &&
$_POST['pepperoni'] == 'Yes')
{
$pepperoni = "pepperoni";
}
else
{
$pepperoni = "";
}
И это для всех переменных, которые вы используете в своем сообщении.
И вы можете уменьшить это:
$pepperoni = isset($_POST['pepperoni']) ? 'pepperoni' : '';
^ or however it is spelled in the html...
поскольку значение не имеет большого значения.
pepperoni
и Pepperoni
- два отдельных животных . Если у OP нет обоих. Все больше причин я не указал в ответе. Мы не знаем, что находится внутри формы ОП.
Замените все пространство между именем текстового halfonions
, Ex: используйте halfonions
вместо использования текстового имени с пространством наподобие Half Onions
if(isset($_POST['halfonions']) && $_POST['halfonions'] == 'Yes') {
вместо
if(isset($_POST['Half Onions']) && $_POST['halfonions'] == 'Yes') {
Я думаю, что есть пробелы в переменных, таких как "Half Pepperoni" или "Half Mushrooms" !!
$_POST['Half Onions']
и т. Д. Следует избегать любой ценой . Используйте подчеркивание в качестве разделителя.