PHP中的两部分表单验证

时间:2015-09-24 17:13:01

标签: php forms

我正在处理我的第一个$_POST表单。我创建了一个简单的HTML表单,并使用post方法,我的动作指向一个php文档。我想用php做一些验证,以确保密码匹配和简单的事情。我想我不理解如何使表单适合我,因为现在当我提交表单时,它所做的只是在下一页显示我的PHP代码。你怎么让PHP实际检查值而不是只显示代码?这是我的php文件:

<?php

function validatePassword($pwd) {
    //create array to store test information
    $messages = [];
    //test for at least 8 characters
    if (strlen($pwd) < 8) {
        $messages []= "Your Password Must Contain At Least 8 Characters!<br />";
    }
    //test for max length
    if (strlen($pwd) > 16) {
        $messages []= "Your Password is too long!<br />";
    } 
    //test to see if password contains number
    if(!preg_match("#[0-9]+#", $pwd)) {
        $messages []= "Your Password Must Contain At Least 1 Number! <br />";
    }
    //test to see if password has capital letter
    if(!preg_match("#[A-Z]+#", $pwd)) {
        $messages []= "Your Password Must Contain At Least 1 Capital Letter!<br />";
    }
    //test to see if password has a lowercase letter
    if(!preg_match("#[a-z]+#", $pwd)) {
        $messages []= "Your Password Must Contain At Least 1 Lowercase Letter!<br />";
    }
    //test to see if password has special character
    if(!preg_match("#[^0-9A-Za-z]#", $pwd)) {
        $messages []= "Your Password Must Contain At Least 1 Special Character!<br />";
    }
    //test to see if password contains a space
    if (strpos($pwd, ' ') > 0) {
        $messages []= "Your password cannot contain a space!<br />";
    }
    //password passed all tests
    if (empty($messages)) {
        return "Password is acceptable<br />";
    }
    //return the array
    return implode("\n", $messages);
}

    if ($pass1 != $pass2){
         $msg = "Passwords do not match";
    }
    else{
        $msg = "Password confirmed!";
        }
    validatePassword($pass1);

?>

表格代码:

<html>
<head>
<title>PHP Form</title>
</head>
<body>

<form name=newForm method=post action=formProcess.php>
UserName: <input type=text name=userName size=15 maxlength=15><br>
Password: <input type=password name=pass1 size=15><br>
Confirm Password: <input type=password name=pass2 size=15><br>
<p>
I agree to the terms and conditions.<br>
<input type=radio name=terms value=yes> Yes
<input type=radio name=terms value=no> No
<p>
Enter comments here:<br>
<textarea name=comments rows=6 cols=50 wrap=physical></textarea>
<p>
<input type=submit name=submitForm>
<input type=reset name resetForm>
</p>
</form>
</body>
</html>

顺便说一下,我知道我可以将php放在HTML文档中,但我真的想尝试做两个单独的文件,看看它是如何工作的。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

您似乎没有网络服务器

下载xampp并将您的php文件放在服务器的htdocs文件夹中,然后您应该可以在http://localhost

上看到它

不要忘记实际启动Apache服务器并确保它有绿灯并且没有错误。通常Skype会阻止它,因为它使用它的端口,所以要小心。

好的,首先让我们制作一些有效的HTML

<html>

<head>
  <title>PHP Form</title>
</head>

<body>
  <form name="newForm" method="post" action="formProcess.php">UserName:
    <input type="text" name="userName" size="15" maxlength="15">
    <br>Password:
    <input type="password" name="pass1" size="15">
    <br>Confirm Password:
    <input type="password" name="pass2" size="15">
    <br>
    <p>I agree to the terms and conditions.
      <br>
      <input type="radio" name="terms" value="yes">Yes
      <input type="radio" name="terms" value="no">No
      <p>Enter comments here:
        <br>
        <textarea name="comments" rows="6" cols="50" wrap="physical"></textarea>
        <p>
          <input type="submit" name="submitForm">
          <input type="reset" name="resetForm">
        </p>
  </form>
</body>

</html>

然后在您的formProcess.php文件中,删除所有内容并尝试类似

的内容
<?php
echo $_POST["userName"];

?>

如果这不会打印您在用户名字段中提交的值,那么您的服务器就会出现问题。

答案 1 :(得分:0)

要运行PHP页面,您需要先使用Web服务器安装它。 如果您正在使用Windows,可以尝试将PHP与Apache和MySQL捆绑在一起的WAMP: http://www.wampserver.com/en/

对于Linux: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu

对于MAC: https://www.mamp.info/en/

答案 2 :(得分:0)

在PHP中有两种类型验证,例如javascript验证(客户端验证),另一种是Php验证,例如(服务器端验证)。

1-在客户端计算机上完成的Java脚本验证。

2-在服务器端(PHP验证)完成服务器。