提交表单时,尝试显示警告消息而不是另一个警告消息

时间:2014-06-05 13:20:42

标签: php

我有一个登录表单,当我访问此登录页面时,我收到一条警告消息:"输入您的访问数据以启动会话"。

然后我验证邮件是否有效或是否为空,我想为此发出警告消息,我希望这些错误消息代替"输入您的访问数据以启动会话"

所以我创建了一个变量$ showWarning = false,我只显示了我的消息"输入您的访问数据以启动会话"如果这个变量是假的。

而且,当我想给出其他警告信息时,我将变量设为true,$ showWarning = true。

但它没有用,我同时得到了两个警告。

你看到可能出现的问题吗?

$showWarning = false;

<?php
    if(!(isset($_GET['remember'])))
    {
        echo '<h1>Login:</h1>   ';
        if($showWarning ==false){
            echo '<span>Enter your acess data to start session.</span>';  
        }
        if(isset($_POST['sendForm'])){
            $f['email'] = $_POST['email'];
            $f['pass'] = $_POST['pass'];

         if(!$f['email'] || !valMail($f['email'])){
             $showWarning = true;
             echo '<span>Email is empty.</span>';
         }
         else if(strlen($f['pass']) <5 || strlen($f['pass']) > 10){
            echo '<span>Pass must have between 5 and 10 chars.</span>';
            $showWarning = true; 
         }
     }

然后我有我的表格:

<form name="login" action="" method="post">
      <label class="label">
          <input placeholder="Email" type="text" name="email" />
      </label>
      <label class="label">
           <input type="password" placeholder="Pass" name="pass" />
           <input type="submit" value="Login" name="sendForm" />
           <a href="index.php?remember=true">Forgot pass</a>
      </label>        
</form>

1 个答案:

答案 0 :(得分:1)

您在定义之前尝试使用$showWarning。此外,在尝试显示另一个警告之前,您没有任何逻辑可以检查是否显示警告。

根据我在代码中看到的内容,甚至不需要进行检查。只需检查表单是否已提交。如果是,请显示验证期间可能出现的任何错误。如果没有,请显示“输入您的访问数据以开始会话”消息。

    if(isset($_POST['sendForm'])){
        $f['email'] = $_POST['email'];
        $f['pass'] = $_POST['pass'];

         if(!$f['email'] || !valMail($f['email'])){
             echo '<span>Email is empty.</span>';
         }
         else if(strlen($f['pass']) <5 || strlen($f['pass']) > 10){
            echo '<span>Pass must have between 5 and 10 chars.</span>';
         }
    }
    else {
        echo '<span>Enter your access data to start session.</span>';  
    }