if($_POST){
$errors = array();
//start validation
if(empty($_POST['email'])){
$errors['email1'] = "Your Email Cannot be empty";
}
if (!filter_var(['email'], FILTER_VALIDATE_EMAIL)){
$errors['email2'] = "Email not valid!";
}
if(empty($_POST['phone'])){
$errors['phone1'] = "Your Number Cannot be empty";
}
if(strlen($_POST['phone']) < 8){
$errors['phone2'] = "Your Phone Number must be at least 8 characters long";
}
if(strlen($_POST['phone']) > 8){
$errors['phone3'] = "Your Phone Number must be not more than 8 characters long";
}
//check errors
if(count($errors) == 0)
{
//redirect to home page
header("Location: index.php");
exit();
}
}
이것은 유효성 검사가 필요한 내 코드입니다. 유효성 검사는 정상적으로 작동하지만 여기에 문제가 있습니다.
<div class="form-group">
<label for="name">Email</label>
<input type="email" class ="form-control" name="email" id="email" placeholder="Enter Email">
<p><?php if(isset($errors['email1'])) echo $errors['email1'];?></p>
<p><?php if(isset($errors['email2'])) echo $errors['email12'];?></p>
</div>
<div class="form-group">
<label for="phone">Phone Number</label>
<input type="text" class ="form-control" name="phone" id="phone" placeholder="Enter Phone Number">
<p><?php if(isset($errors['phone1'])) echo $errors['phone1'];?></p>
<p><?php if(isset($errors['phone2'])) echo $errors['phone2'];?></p>
<p><?php if(isset($errors['phone3'])) echo $errors['phone3'];?></p>
</div>
파일에 저장하도록 설정된 양식이 있습니다. 입력이 확인되고 오류 메시지가 표시되지만 잘못된 입력이있는 양식은 여전히 파일에 저장됩니다. 어떤 도움을 주시면 감사하겠습니다.
<?php
if(isset($_POST['email']) && isset($_POST['phone']) && isset($_POST['enquiry'])){
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$file = "form.txt";
$save = "Email: ".$email."\n".
"Phone: ".$phone."\n".
"Comment: ".$enquiry."\n";
file_put_contents($file,$save, FILE_APPEND);
}
?>
귀하의 의견을 바탕으로 유효한 데이터 만 파일에 저장하려고합니다.
그러나 PHP 검사는 여기에 값이 설정되어 있는지 확인합니다.
if(isset($_POST['email']) && isset($_POST['phone']) && isset($_POST['enquiry'])) {
유효한 데이터 만 있는지 확인하기 위해 변경하면 괜찮을 것입니다. 간단한 추가로 && count($errors) == 0
할 수 있습니다 (파일 구조를 이해한다면).
따라서 위의 줄을 다음으로 바꾸십시오.
if(isset($_POST['email']) && isset($_POST['phone']) && isset($_POST['enquiry']) && count($errors) == 0) {
따라서 파일은 다음과 같습니다.
....PHP code above here....
//check errors
if(count($errors) == 0)
{
if(isset($_POST['email']) && isset($_POST['phone']) && isset($_POST['enquiry'])){
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$file = "form.txt";
$save = "Email: ".$email."\n".
"Phone: ".$phone."\n".
"Comment: ".$enquiry."\n";
file_put_contents($file,$save, FILE_APPEND);
}
//redirect to home page
header("Location: index.php");
exit();
} // end count($errors) == 0 check
} // end if($_POST) check
?>
<div class="form-group">
<label for="name">Email</label>
<input type="email" class ="form-control" name="email" id="email" placeholder="Enter Email">
<p><?php if(isset($errors['email1'])) echo $errors['email1'];?></p>
<p><?php if(isset($errors['email2'])) echo $errors['email12'];?></p>
</div>
....HTML code continues here....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다