У меня есть страница contact.php, работающая на моем действующем веб-сайте, но даже когда посетитель вводит неполный текст в поля имени, адреса электронной почты или сообщения, форма считает их правильными и отображает сообщение об успешном завершении.
Как я могу указать такие вещи, как имя должно состоять минимум из 6 букв, электронная почта должна иметь символ @ и правильное окончание .com, .org и т. д.; и сообщение должно состоять не менее чем из 20 букв.
<?php
if ($_POST['submit']) {
if (!$_POST['firstname']) {
$error = "<br/>- Please enter your first name";
}
if (!$_POST['lastname']) {
$error = "<br/>- Please enter your last name";
}
if (!$_POST['email']) {
$error. = "<br/>- Please enter your email";
}
if (!$_POST['message']) {
$error. = "<br/>- Please enter a message";
}
if (!$_POST['check']) {
$error. = "<br/>- Please confirm you are human";
}
if ($error) {
$result='<div class = "alert alert-danger" role = "alert">
<strong>Whoops, there is an error</strong>. Please correct the following: '.$error.'</div>';
} else {
mail("[email protected]",
"Contact message",
"Name: ".$_POST['name']."
Email: ".$_POST['name']."
Message: ".$_POST['message']);
{
$result='<div class = "alert alert-success" role = "alert">Thank you, I\'ll be in touch shortly. </div>';
}
}
}
?>
#HTML CODE#
<form method = "post" role = "form">
<div class = "row">
<div class = "col-md-3"></div>
<div class = "contact-icon">
<i class = "fas fa-user"></i>
</div>
<div class = "form-inline">
<div class = "col-md-9 form-group">
<label for = "name">your name</label>
<span class = "fieldSpan">
<input type = "text"
name = "name"
id = "input-field-name"
class = "form-control"
placeholder = "your name"
value = "<?php echo $_POST['name']; ?>">
</div>
</div>
</div>
<div class = "row">
<div class = "col-md-3"></div>
<div class = "contact-icon">
<i class = "fas fa-envelope"></i>
</div>
<div class = "form-inline">
<div class = "col-md-9 form-group">
<label for = "email">your email address</label>
<span class = "fieldSpan">
<input type = "email"
name = "email"
id = "input-field-email"
class = "form-control"
placeholder = "[email protected]"
value = "<?php echo $_POST['email']; ?>">
</div>
</div>
</div>
<div class = "row">
<div class = "col-md-3"></div>
<div class = "contact-icon">
<i class = "fas fa-pencil-alt"></i>
</div>
<div class = "form-inline">
<div class = "col-md-9 form-group">
<label for = "message">your message</label>
<span class = "fieldSpan vertical-align:top">
<textarea name = "message"
rows = "5"
id = "input-field-message"
class = "form-control"
placeholder = "your message">
<?php echo $_POST['message']; ?></textarea>
<br>
<br>
</div>
</div>
</div>
</div>
<div class = "col-md-12">
<div class = "checkbox">
<label>
<input type = "checkbox"
name = "check">
Check this box if you're human.
</label>
</div>
</div>
</div>
<div class = "col-md-3"></div>
<div class = "row">
<div class = "col-md-9">
<input type = "submit"
name = "submit"
class = "btn btn-secondary"
value = "send message"/>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
<!-- ----------- SCRIPTS------------ -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin = "anonymous"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin = "anonymous"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin = "anonymous"></script>
@tim - даже не ее собственный :-). Что касается формы - вам нужно немного поискать о проверке формы (и санации). в зависимости от всего вашего фреймворка приложения вы можете найти множество способов сделать это, включая выделенные библиотеки или плагины, в JS или php (или в обоих). Ajaxed или нет ..
Я действительно предпочитаю, чтобы люди вводили свои имена и фамилии (как нормальные люди), поэтому мне нужна определенная длина букв. Даже не заставляйте меня начинать с отдельных полей имени и фамилии, я выясню это после того, как все остальное будет работать правильно. :)
https://www.w3schools.com/php/php_form_url_email.asp
Привет! Это ответ, который вы ищете. Это концепция, называемая проверкой ввода, и каждый язык имеет свой способ работы с ней.
Ниже приводится отрывок из этой ссылки, по которой проверяются несколько желаемых полей.
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp)://|www\.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>
Вы можете контролировать, какой тип проверки вам требуется, с помощью таких вещей, как проверка того, что длина поля имени больше или равна 6 в операторе if, после проверки того, что поле не пустое.
Это вам вообще помогло?
Да, понял. Спасибо за БЫСТРЫЙ ответ!
@AngieG Замечательно! Если бы это был ответ, который вы искали, не могли бы вы его принять? Работаю над моей репутацией! :)
Вы можете сделать это напрямую, используя функции HTML.
В этом посте был дан ответ о минимальной длине: минимальная длина Если вы используете элемент ввода электронной почты в html, браузер выполнит проверку автоматически.
Я проверил комментарии и понял, что вы имеете в виду, СПАСИБО! (Я действительно искал здесь ту же проблему, прежде чем опубликовать вопрос, извините.)
не каждое имя состоит из 6 букв