Вы нарушили логику if
else
, я предлагаю вам выполнить некоторые проверки при запуске с isset
(empty
не достаточно, это не исключает случай переменных isset
)и если не установлено, то print
сообщение, использующее exit()
, чтобы гарантировать, что полный код не выполняется ... теперь санируйте ваш ввод, используя htmlentities
с UTF-8
, которые защищают ваш код от XSS
и Injection
... затем добавьте письмо headers
, чтобы убедиться, что ваша почта будет отправлена ... проверьте с помощью boolean
, отправлено ли ваше письмо или нет ... добавьте 5th parameter
(-f
) к вашей почтечтобы убедиться, что ваша почта будет принудительно отправлена корректно ... ниже вы можете увидеть мои исправления ...
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
Name: <input type="text" name="fieldname5_1"><br/>
Mail: <input type="text" name="fieldname6_1"><br/>
Score: <input type="number" name="fieldname158_1"><br/>
<input type="submit" value="Send">
</form>
<?php
if ((!isset($_POST['fieldname5_1']) || (empty($_POST['fieldname5_1']))) || (!isset($_POST['fieldname6_1']) || (empty($_POST['fieldname6_1'])))) {
exit("Enter a valid name and mail!");
} elseif (!preg_match('/^[a-zA-Z0-9]+([_\\.-][a-zA-Z0-9]+)*'.'@([a-zA-Z0-9]+([\.-][a-zA-Z0-9]+))+$/', $_POST['fieldname6_1'])) {
exit("Provide a valid email address!");
} else {
$name = htmlentities($_POST['fieldname5_1'], ENT_QUOTES, 'UTF-8');
$email = htmlentities($_POST['fieldname6_1'], ENT_QUOTES, 'UTF-8');
}
if ((!isset($_POST['fieldname158_1']) || (empty($_POST['fieldname158_1'])))) {
exit("Please enter your vote!");
} else {
$score = htmlentities($_POST['fieldname158_1'], ENT_QUOTES, 'UTF-8');
}
if ((isset($score)) && ($score < 6)) {
echo " something1 $score";
} elseif ((isset($score)) && ($score < 11)) {
echo " something2 $score";
} elseif ((isset($score)) && ($score < 30)) {
echo " something3 $score";
} elseif ((isset($score)) && ($score < 81)) {
echo " something4 $score";
} elseif (isset($score)) {
echo " something5 $score";
}
$formcontent = "something6 $score";
$recipient = "myemail@email.com, $email";
$subject = "Your test";
$mailheader = "From: myemail@email.com" . PHP_EOL;
$mailheader .= "MIME-Version: 1.0" . PHP_EOL;
$mailheader .= "Content-Type: text/plain; Charset=\"UTF-8\"" . PHP_EOL;
$mailheader .= "Content-Transfer-Encoding: 8bit" . PHP_EOL . PHP_EOL;
if (!@mail($recipient, $ubject, $formcontent, $mailheader, "-f$recipient")) {
echo("Mail Sent!");
} else {
echo("Mail Not Sent!");
}
?>
Извините, но я не могу понять, что вы на самом деле пытаетесь получить из своего кода.Я истолковал ваши желания, но я не знаю, просили ли вы об этом, потому что при чтении вашего кода все приблизительно.Надеюсь, я вас удовлетворил.
Надеюсь, это поможет.