PHP中的验证无法理解

时间:2014-11-11 22:39:53

标签: php validation

我很难理解下面的PHP代码。

代码的第一行是一个超全局变量,其中包含一个请求元素:
我假设这一行简单地说明了使用哪种方法将数据发送到服务器,在这种情况下使用了POST。

但我有点模糊的是第二行 我是否理解这条线意味着" 如果没有贴出名字,那么就会发生一些事情"?
某事似乎是第三行,否则第四行被激活 这就是我迷路的地方。

第三行为变量$error分配一个语句,第四行为变量$name分配另一个语句。
$error似乎附有两个不同的陈述,我不清楚$name = test_input($_POST["name"])的含义。
换句话说,只有第一行对我来说很清楚,并且包含" 的行如果不是preg匹配",因为我熟悉preg匹配。

但是,我不清楚的是&#34之后出现的行;如果不是preg匹配"。
$name = ""是否意味着如果您输入的不是字母或空格,那么您刚输入的内容将被删除?

而且(再次)我对$error两个值的事实感到困惑。
有人可以赐教我吗?

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $error = "Name is required";
    } else {
        $name = test_input($_POST["name"]);

        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
            $name = "";
            $error = "Anything that is not letters or whitespace are not allowed";
        }
    }
}

2 个答案:

答案 0 :(得分:0)

此代码来自W3Schools文章。我建议你阅读所有这些内容。它们非常详细。

  1. PHP 5 Form Handling
  2. PHP 5 Form Validation
  3. PHP 5 Forms - Required Fields您的代码在这里
  4. PHP 5 Forms - Validate E-mail and URL and here
  5. PHP 5 Complete Form Example
  6. 阅读这些文章,他们有很好的解释。

    $error仅分配一次,因为其中一个位于if,另一个位于elseThis也可以帮助您。

答案 1 :(得分:0)

我已经编辑了你的代码(只是简单地缩进),以便你阅读。开始以这种方式缩进你的代码,你不会感到困惑:

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
   if (empty($_POST["name"])) 
   {
      $error = "Name is required";
   }
   else
   {
      $name = test_input($_POST["name"]);
      if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
      {
         $name = "";
         $error = "Anything that is not letters or whitespace are not allowed";
      }
   }
   ...
}

{打开一个区块,}关闭它。如果您知道ifelse的含义,那么它现在应该是显而易见的。如果没有,请阅读Control Structures上的PHP手册。

但显而易见的是,if块中的代码仅在条件为真时运行。如果前面的else的条件不正确,则运行if块中的代码。所以$error没有两个值。它的值取决于if语句中的检查值。