#php
#php
Вопрос:
У меня есть 3 поля, которые проверяются правильно. Отправленные сообщения отправляются в текстовый файл правильно. Тем не менее, они отправляют — — (как у меня в коде для разделения каждого раздела) даже при нажатии кнопки отправки без заполнения информации. Не должно быть никакой пустой информации, если в текстовом файле напечатано только 2 — — без предварительного заполнения 3 полей. Как я могу это исправить? Извините за неудобства, я ответил на свой вопрос в другом сообщении и смог устранить проблему. Спасибо за ваше время.
Вот мой код
<?php
if(isset($_POST['name'], $_POST['email'], $_POST['website'])) {
if(empty($_POST['name'])) {
$errors[] = "Name is required";
} else{
$name = htmlentities($_POST['name']);
$name = test_input($_POST['name']);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$errors[] = "Only letters and white space allowed for the name";
}
}
if(empty($_POST['email'])) {
$errors[] = "Please provide your Email address.";
} else if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ===
false){
$errors[] = "Your Email is not valid.";
} else {
$email = htmlentities($email);
}
if(empty($_POST['website'])) {
$errors[] = "Please provide your company URL.";
} else{
$website = htmlentities($_POST['website']);
$website = test_input($_POST['website']);
if(!preg_match("/b(?:(?:https?|ftp)://|www.)[-a-z0-9 amp;@#/%?=~_|!:,.;]*[-a-z0-9 amp;@#/%=~_|]/i",$website)) {
$errors[] = "Please provide a valid URL for your company.";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$name = $_POST['name'];
$email = $_POST['email'];
$website = $_POST['website'];
$data = $name . " - " . $email . " - " . $website;
$file = "textfile.txt";
if($_POST){
file_put_contents($file, $data . PHP_EOL, FILE_APPEND);
}
?>
В html у меня есть
<?php
if(empty($errors) === false){
?>
<ul>
<?php
foreach($errors as $error){
echo "<li>",$error,"</li>";
}
?>
</ul>
<?php
}else{
if(isset($name, $email, $website)){
echo "<b>Thank you for your submission.</b>";
}
}
?>
</div>
<div class="wrapper w3-round-xlarge">
<div class="formtitle w3-round-xlarge">Thank you for filling in all fields below
</div>
<div class="formwrapper w3-round-xlarge">
<form name="mobile" id="mobile" method="post" enctype="multipart/form-data" action="data.php"><br/>
и т.д. (html-документ начинается и заканчивается правильно. Спасибо за вашу помощь.
Ответ №1:
Если требуются все три ввода, поместите required во ввод html.
<Input name="email" required />
Сделайте это для каждого ввода. Это не позволит обрабатывать форму до тех пор, пока не будут заполнены все поля.
Ответ №2:
Извините за неудобства, если кто-то нашел время, чтобы прочитать мой пост. Я смог устранить проблему, просто удалив следующее из кода php над моим html и изменив следующее
if($_POST){
file_put_contents($file, $data . PHP_EOL, FILE_APPEND);
}
to ...
<?php
}else{
if(isset($name, $email, $website)){
file_put_contents($file, $data . PHP_EOL, FILE_APPEND);
echo "<b>Your submission has been sent.</b>";
}
and adding it to the html div area