Как добавить эхо проверки формы перед эхом результата - PullRequest
0 голосов
/ 11 мая 2019

У меня есть форма в php, которая работает просто отлично, за исключением того, что пользователь может видеть результат без предоставления полей электронной почты и имени. Я хочу добавить php-код, который сообщит пользователю, что имя и адрес электронной почты необходимы, прежде чем он увидит окончательный ответ. Я попытался добавить различные операторы if и else, но форма перестает работать, если я возлюсь с кодом. Буду очень признателен за помощь

<?php 
$name = $_POST['fieldname5_1'];
$email = $_POST['fieldname6_1'];
$score = $_POST['fieldname158_1'];
if(empty($name) || empty($email))
{
echo "You did not fill out the required fields.";

}
else {
if($score<"6") {
echo " something1 $score";
} elseif($score<"11") {
echo " something2 $score";
} elseif($score<"30") {
echo " something3 $score";
} elseif($score<"81") {
echo " something4 $score";
}  else {
echo " something5 $score";
}
}
$formcontent="something6 $score";
$recipient = "myemail@email.com, $email";
$subject = "Your test";
$mailheader = "From: myemail@email.com \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

?>

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Вы нарушили логику 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!");
}
?>

Извините, но я не могу понять, что вы на самом деле пытаетесь получить из своего кода.Я истолковал ваши желания, но я не знаю, просили ли вы об этом, потому что при чтении вашего кода все приблизительно.Надеюсь, я вас удовлетворил.

Надеюсь, это поможет.

0 голосов
/ 11 мая 2019

если эту HTML-форму вы можете добавить «требуется» для ввода? или в js, если форма поставлена ​​с проверочными полями, если все в порядке, ваш POST перейдет к php action / method

...