是否可以在提交表单并刷新页面之前使用PHP验证?

时间:2012-02-29 16:56:46

标签: php validation

我已经使用PHP创建了一个用户注册表单,必须输入密码并再次输入以检查它们是否匹配。我有条件检查,在提交表单时运行,如果它们失败,表单将重新加载为空以供用户填写。我想对密码和repeatPassword字段进行实时检查,所以如果它们是输入并且不符合立即显示的警告,而不是在整个表格填写并提交后。

我尝试过只使用PHP,我之前使用的是JavaScript,但是我希望在PHP中完成所有操作,因为我认为它会更好,更可靠。

以下是我的表单检查条件的代码:

$firstname=$_POST['fName'];
$surname=$_POST['sName'];
$email=$_POST['emailad'];
$password= md5($_POST['password']);
$repeatpassword= md5($_POST['repeatPassword']);
$secretquestion=$_POST['sQuestion'];
$secretanswer=$_POST['sAnswer'];
$address1=$_POST['address1'];
$address2=$_POST['address2'];
$address3=$_POST['address3'];
$address4=$_POST['address4'];
$city=$_POST['city'];
$postcode=$_POST['postcode'];
$phone=$_POST['phone'];
$mobile=$_POST['mobile'];

if(!empty($password)
&& !empty($repeatpassword)
&& !empty($firstname)
&& !empty($surname)
&& !empty($email)
&& ($repeatpassword == $password)
&& !empty($secretquestion)
&& !empty($secretanswer)
&& !empty($address1)
&& !empty($city)
&& !empty($postcode)
&& !empty($phone))
 {


$reg =true;
$sql = "INSERT INTO cryptuser (firstname,surname,email,password, secretq, secreta,
                               address1,address2,address3,address4,city,postcode,phone,mobile)
        VALUES     ('$firstname','$surname','$email','$password','$secretquestion','$secretquestion',
            '$address1','$address2','$address3','$address4','$city','$postcode','$phone','$mobile')"; 

我编写的代码我删除了,因为它肯定是错的,但是我试图执行PHP函数,如果密码和repeatPassword字段不为空,检查两个值是否相同,如果它们什么都不做,否则显示警告文字。

我觉得这会有用,但我仍然习惯于习惯使用php作为服务器端语言。

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:4)

首先,它在PHP中不会比在Javascript中“更好,更可靠”。这两种语言都是图灵完备的,而你在另一个领域却无法做到这一点。你只受限于你作为编码员的能力。

也就是说,如果您想在提交表单之前在PHP中进行验证,那么您将不得不以某种方式将数据提供给服务器。当然,这个过程就像提交表格一样......

一种方法是让JS从表单中抓取信息并向服务器发出AJAX请求。如果服务器显示“OK”,则JS将客户端位置设置为新页面(因为服务器已经在验证过程中收到了所有内容,因此您不需要再次发送它们。)

接下来,您上面写的验证码是非常糟糕的主意。请参阅this comic,了解快速和正确的解释原因(http://bobby-tables.com似乎已关闭) - 想象一下如果将$_POST['fName']作为{{1}},SQL查询会是什么样子。

答案 1 :(得分:1)

PHP只能在服务器上运行,而不能在浏览器中运行。使用javascript进行客户端验证。保持服务器端验证,并添加SQL注入保护。如果您不知道那是什么,请查看Google并查看mysql_escape_string() PHP函数以启动。

答案 2 :(得分:0)

YES!虽然在大多数情况下,您只需要提交客户端,然后在提交时提交客户端,您可以使用casses来进行服务器端和客户端验证。如果您需要在提交快速谷歌搜索游戏之前和之后同时进行this nice looking tutorial

我一如既往地建议使用jQuery validate,它具有比较两个密码的功能