2017-04-01 143 views
1

我想用php做表单字段验证。我检查提交按钮是否先设置,然后如果表单域是空的,将其保存在一个错误变量,否则,如果它不是空的我有一个功能做som形式清理并设置值textfield.Then提交给另一个页。PHP表单验证失败

但是我的错误处理从来没有发生,并且空字段的表单被提交给我的动作页面url。

哪些错误,代码:

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
<style> 
.error {color: #FF0000;} 
</style> 
</head> 
<body> 
<?php 
$fnameErr = ""; 
$lnameErr = ""; 
$Fname = ""; 
$Lname = ""; 

if(isset($_POST["submit"])) { 

if (empty($_POST["FirstName"])) { 
$fnameErr = "First name is required"; 
} else { 
$Fname = form_input($_POST["FirstName"]); 
} 

if (empty($_POST["LastName"])) { 
$lnameErr = "Last name is required"; 
} else { 
$Lname = form_input($_POST["LastName"]); 
} 

} 

function form_input($data) { 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
return $data; 
} 
?> 
<h2>PHP Form Validation Example</h2> 
    <p><span class="error">* required field.</span></p> 
    <form action="intro.html.php" method="POST"> 
     Förnamn: <input type="text" name="FirstName"> 
     <span class="error">* <?php echo $fnameErr;?></span> 
     <br> 
     Efternamn: <input type="text" name="LastName"> 
     <span class="error">* <?php echo $lnameErr;?></span> 
     <br> 
     <input type="submit" name="submit" value="Skicka"> 
    </form> 

    </body> 
    </html> 

谢谢

+0

没有什么能阻止这个页面继续到最后,而不管输入。你期望它做什么? – miken32

回答

0

UPDATE

如果动作形式的文件是你需要检查行动输入表单文件不同。

这里的index.php

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
     <style> 
      .error {color: #FF0000;} 
     </style> 
    </head> 
<body> 
<?php 
    /* get the return value when is not valid on into.html.php*/ 
    $fname = $_GET['fName']; $lname = $_GET['lName']; 
    if($_GET['fName']=='false'){ 
     $fnameErr = "First name is required"; /*set value to show notif*/ 
     $fname =""; 
    } 
    if($_GET['lName']=='false'){ 
     $lnameErr = "First name is required"; /*set value to show notif*/ 
     $lname =""; 
    } 
?> 
<h2>PHP Form Validation Example</h2> 
    <form action="intro.html.php" method="POST"> 
     Förnamn: <input type="text" name="FirstName" value="<?php echo $fname;?>"> 
     <span class="error">* <?php echo $fnameErr;?></span> 
     <br> 
     Efternamn: <input type="text" name="LastName" value="<?php echo $lname;?>"> 
     <span class="error">* <?php echo $lnameErr;?></span> 
     <br> 
     <input type="submit" name="submit" value="Skicka"> 
    </form> 
    </body> 
</html> 

,然后设置你的intro.html.php这样

<?php 
function form_input($data) { 
    if($data!=""){ /*add condition if data != "" then run so we don't need more else on section if $_POST is empty*/ 
     $data = trim($data); 
     $data = stripslashes($data); 
     $data = htmlspecialchars($data); 
    } 
    return $data; 
} 

if(isset($_POST["submit"])) { /*check the submit*/ 

    $Fname = form_input($_POST["FirstName"]); /* get post data from input val to variable $Fname*/ 
    $Lname = form_input($_POST["LastName"]); /* get post data from input val to variable $Lname*/ 

    if(!empty($_POST["FirstName"]) and !empty($_POST["LastName"])!=""){ /*cek if FirstName and LasName is not empty*/ 
     /* do what you want to do here*/ 
     echo ' FName : '.$Fname.' | LName : '.$Lname; 
    } 
    else{ 
     /*we will redirect to index.php using javascript*/ 
     echo ' 
      <script> 
      alert("all input must be field!"); 
      window.location.href="index.php?fName='.($_POST["FirstName"]==""?'false':$Fname).'&lName='.($_POST["LastName"]==""?'false':$Lname).'"; /* this ridect to index.php and set variable $_GET fName and variable lName */ 
      </script> 
     '; 
    } 

} 
else{ 
    echo 'submit is undefined!'; /*echo submit empty, */ 
} 

?> 

,如果你想查询输入之前提交,你可以使用HTML <input>所需的属性here the documentation

或者你可以使用jQuery来排列ajax提交或只是检查输入值,你可以看到更多的在here

希望得到这个帮助。

+0

真的很奇怪,当我在localhost和live上运行这段代码时,它不验证任何空字符串,而是将页面转发到动作url。 你可以试试下面的URL http://www.icloudis.com/php_intro – user2371684

+0

是在同一个文件或不同的表单和操作?如果在不同的文件中,可以发布intro.html.php的源代码吗?因为我看到表单动作重定向到“intro.html.php” –

+0

表单动作被设置为不同的文件。表单本身是一个名为index.php的文件,文件操作设置为intro.html.php,该文件的源代码为: <?php echo“Välkommen”。$ _ POST ['FirstName']。 “”。$ _ POST ['LastName']; ?> – user2371684