저는 웹 개발을 배우는 PHP와 JavaScript에 익숙하지 않으며 자유로운 시간에 모든 것을 시도하고 있습니다. 그러나 해결책을 찾을 수없는 한 가지가 있습니다. . 4 개의 데이터, 이름, 생년월일, 이메일 및 전화 번호 만 수집하는 양식이 있습니다. 모든 필드는 추가 데이터 처리에 필요합니다. 나는 문자 그대로 Google에서 찾은 모든 것을 시도했지만 여전히 작동하지 않습니다. 이 양식은 입력 필드를 확인하지 않고 모든 종류의 데이터를 데이터베이스에 저장합니다.PHP 폼 유효성 검사가 작동하지 않습니다.
나중에 코드가 양식의 유효성을 검사하고 다른 페이지의 ".php"가 아닌 동일한 페이지에 오류를 표시하고 사람에게 확인 이메일을 보내고 나를 알려주는 이메일 2 개를 보내고 싶습니다. 양식 제출에 대해. 이를 달성하기 위해 무엇을해야합니까? 나는 atm에 아주 찔 렸다 고 느낀다.
내 양식 : 질문 선명도에 대한 코드를 포맷하는 동안
<form class="contactform" id="cfrm" action="process.php" method="post">
<div class="f-data">
<input class="f-error" name="uname" placeholder="NAME" type="text" required="required" data-error="Name is required.">
</div>
<div class="clear"></div>
<div class="f-data">
<select name="birthday" id="forminput" aria-required="true" aria-invalid="false">
<option value="11">11</option>
<option value="12">12</option>
</select>
<select name="birthyear" id="forminput" aria-required="true">
<option value="1900" selected="selected">1900</option>
<option value="2001">2001</option>
</select>
</div>
<div class="f-data">
<input class="f-error" name="uemail" placeholder="EMAIL" type="text" required="required" data-error="Email is required.">
</div>
<div class="f-data">
<input class="f-error" name="uphone" placeholder="PHONE" type="text" required="required" data-error="Phone is required.">
</div>
<div class="clear"></div>
<div class="submit">
<p>
<input type="submit" value="submit" name="submit">
</p>
</div>
과 process.php
<?php
require "connection.php";
require "others/phpmailer/PHPMailerAutoload.php";
//form data
$connection = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
$Name = $connection->real_escape_string($_POST['uname']);
$DoB = $connection->real_escape_string($_POST['birthyear'] . '-' .
$_POST['birthmonth'] . '-' . $_POST['birthday']);
$inputDoB = date("Y-m-d",strtotime($DoB));
$Email = $connection->real_escape_string($_POST['uemail']);
$Phone = $connection->real_escape_string($_POST['uphone']);
if (strlen($agree) == 0) $agree = 0;
// validating
if(isset($_POST['submit']));
{
if(empty($_POST['uname']))
{
$msg_name = "You must enter name";
$name_subject = $_POST['uname'];
$name_pattern = '/^[a-zA-Z ]*$/';
preg_match($name_pattern, $name_subject, $name_matches);
if(!$name_matches[0])
$msg2_name = "Only alphabets and white space allowed";
}
if(empty($_POST['uemail']))
{
$msg_email = "You must enter your email";
$email_subject = $_POST['uemail'];
$email_pattern = '/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/';
preg_match($email_pattern, $email_subject, $email_matches);
if(!$email_matches[0]) $msg2_email = "Must be a valid email address";
}
if($_POST['uphone'])
{
$phone = $_POST['uphone'];
preg_match('/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z {2,3})$/i', $phone, $phone_match);
if(!$phone_match[0]) $msg_phone = "Must be a valid phone number";
if(strlen($phone)!='8') $msg2_phone = "Must be at least 8 characters long";
}
}
//save to db
$query = "INSERT INTO form (Name,DoB,Email,Phone,Date) VALUES ('$Name','$DoB','$Email','$Phone', CURRENT_TIMESTAMP)";
$success = $connection->query($query);
if (!$success) {
die("Couldn't enter data: ".$connection->error);
}
echo "Thank You For Contacting Us";
?>
안녕하세요! "폼이 입력 필드를 확인하지 않고 모든 종류의 데이터를 데이터베이스에 저장합니다"라는 의미를 확장 할 수 있습니까? 코드를 보면 해당 필드의 데이터 만 삽입해야합니다. 생성 된 데이터베이스 행에 대한 예제를 제공 할 수 있습니까? 감사! –
나는 uemail이 비어 있는지 확인한 다음 그 빈 값에 변수를 할당하는 이유에 대해 약간 혼란 스럽다. –
PHPMailer의 이전 버전을 사용하고 있습니다. – Synchro