0

我的页面上有一个注册脚本,它的处理方式如下:

<?php
include "inc/config.php";
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];
        $email = $_POST['email'];
        $pass = $_POST['pass'];
        $conditions = $_POST['conditions'];
        if($firstname==""||$lastname==""||$email==""||$pass==""||$conditions==""){
        echo "
        <p>Tiedoissa oli puutteita :(</p>
            <ul>";
            if($firstname == ""){
                echo "<li>Etunimi puuttuu.</li>";
            }
            if($lastname == ""){
                echo "<li>Sukunimi puuttuu. </li>";
            }
            if($email == ""){
                echo "<li>Sähköposti puuttuu. </li>";
            }
            if($pass == ""){
                echo "<li>Salasana puuttuu. </li>";
            }
            if($conditions == ""){
                echo "<li>Luitko ehdot? </li>";
            }
        echo "</ul>";
        return false;
        }
        $rq = "INSERT INTO Users (Firstname,Lastname,Email,Password) VALUES ($firstname,$lastname,$email,$pass)";
        if(!mysqli_query($dblink,$rq)){
            echo "Rekisteröityminen epäonnistui tuntemattomasta syystä! :(";
        }
        else{
            echo "Rekisteröinti onnistui!<br>
            Käyttäjätunnuksesi on <strong>$email</strong> ja salasanasi on <strong>$pass</strong>.<br>
            Voit nyt kirjautua sisään. 
            ";
        }


?>

正如我尝试过的那样,我很难找到比较表单值的正确方法=====NULL进行比较。但我总是收到所有错误消息,或者一个都没有。我做错了什么?

这是表单的html:

<form class="form-horizontal span6" method="post" id="registrationform">
          <div class="control-group">
            <label class="control-label">Etunimi</label>
            <div class="controls">
              <input type="text" name="firstname">
            </div>
          </div>
          <div class="control-group">
            <label class="control-label">Sukunimi</label>
            <div class="controls">
              <input type="text" name="lastname">
            </div>
          </div>
          <div class="control-group">
            <label class="control-label">Sähköposti</label>
            <div class="controls">
              <input type="text" name="email">
            </div>
          </div>
          <div class="control-group">
            <label class="control-label">Salasana</label>
            <div class="controls">
              <input type="password" name="pass">
            </div>
          </div>
          <div class="control-group">
            <div class="controls">
              <label class="checkbox">
                <input type="checkbox" name="newsletter"> Tilaan uutiskirjeen
              </label>
              <label class="checkbox">
                <input type="checkbox" name="conditions"> Hyväksyn ehdot
              </label>
              <button type="submit" class="btn btn-success" id="registerbtn">Rekisteröidy</button>
            </div>
          </div>
        </form>
4

2 回答 2

1

由于您的代码不在函数中,因此 返回 false;没有按预期工作,代码继续在下面执行。你的比较可能已经很好了。更改返回 false;死()

好的,这可能是问题所在

if($firstname=="" || $lastname=="" || $email=="" || $pass=="" || $conditions==""){

您正在检查这一点,即使您不提交表单并且看起来一切都有错误,该检查也有效。因此,您只需要在提交表单时进行比较,而不是在正常加载时进行比较。因此,将您的 php 代码包装在一些isset上,例如

if(isset($_POST["firstname"]) && isset($_POST["lastname"]))
{
 // all your php code
}

除此之外,您的代码运行良好。它比较像你期望的那样。

于 2013-01-15T19:37:36.283 回答
1

嗨,您可以使用 php fonction 例如使用 if(!isset($firstname)) 或 if(empty($firstname)) 如果您现在想要 $firstname 为 Null

于 2013-01-15T19:44:04.930 回答