그래서 고객이 이름, 주소, 이메일 등을 입력 할 수있는 온라인 상점의 PHP 양식을 만들려고했지만 유효성 검사가 제대로 작동하지 않는 것 같습니다. 입력 된 데이터가 잘못된 것처럼 항상 동일한 페이지 (insert.php 파일로 이동하는 대신)에 유지됩니다.
<?php
$nameErr = $emailErr = $codeErr = $cityErr = $streetErr = $fakturaErr = "";
$name_ok = $email_ok = $code_ok = $city_ok = $street_ok = 0;
$name = $email = $code = $city = $street = $info = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Pole wymagane";
}
else{
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Dozwolone tylko litery";
}
else{
$name_ok=1;
}
}
if (empty($_POST["code"])) {
$codeErr = "Pole wymagane";
}
else {
$code = test_input($_POST["code"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9 ]*$/",$code)) {
$codeErr = "Niewłaściwy format kodu";
}
else{
$code_ok=1;
}
}
if (empty($_POST["city"])) {
$cityErr = "Pole wymagane";
}
else{
$city = test_input($_POST["city"]);
// check if city only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$city)) {
$cityErr = "Dozwolone tylko litery";
}
else{
$city_ok=1;
}
}
if (empty($_POST["street"])) {
$streetErr = "Pole wymagane";
}
else {
$street = test_input($_POST["street"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$street)) {
$streetErr = "Dozwolone tylko litery";
}
else{
$street_ok=1;
}
}
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 = "Niewłaściwy format adresu e-mail";
}
else{
$email_ok=1;
}
}
$action = "";
if($name_ok==1 && $code_ok==1 && $city_ok==1 && $street_ok==1 && $email_ok==1) {
$action = "insert.php";
}
else {
$action = "#";
}
/*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"]);
}
*/
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<div class="all">
<form action="<?php echo $action; ?>" method="post">
<font color="#A20B0B">*Pola wymagane</font><br><br>
Imię i nazwisko: <input type="text" name="name">
<span class="error"><font color="#A20B0B">* <?php echo $nameErr;?></font></span>
<br><br>
Kod pocztowy:
<input type="text" name="code">
<span class="error"><font color="#A20B0B">* <?php echo $codeErr;?></font></span>
<br><br>
Miasto:
<input type="text" name="city">
<span class="error"><font color="#A20B0B">* <?php echo $cityErr;?></font></span>
<br><br>
Ulica:
<input type="text" name="street">
<span class="error"><font color="#A20B0B">* <?php echo $streetErr;?></font></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error"><font color="#A20B0B">* <?php echo $emailErr;?></font></span>
<br><br>
<label>Dodatkowe informacje: <textarea name="info" rows="5" cols="40"></textarea>
<br><br>
Faktura:
<input type="radio" name="faktura" value="tak">Tak
<input type="radio" name="faktura" value="nie">Nie
<span class="error"><font color="#A20B0B">* <?php echo $fakturaErr;?></font></span>
<br><br>
<input type="submit" name="submit" value="Submit" id="register" disabled>
</form>
</div>
다음 색인 페이지로 리디렉션되지 않는 경우 입력이 유효한지 여부를 확인한 후 입력 값을 제출합니다.
코드에 따라 $ action은 빈 값을 얻습니다. 그것이 리디렉션되지 않은 이유입니다.
insert.php
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if (empty($_POST["name"])) {
$nameErr = "Pole wymagane";
}
else{
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Dozwolone tylko litery";
}
else{
$name_ok=1;
}
}
// Paste you other post values code here
if($name_ok==1 && $code_ok==1 && $city_ok==1 && $street_ok==1 && $email_ok==1) {
// Do INSERT
}
else {
header('Location:index.php');
}
HTML
<form action="insert.php" method="post">
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다