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

こんにちは、たとえば $firstname が Null の場合に必要な場合は、if(!isset($firstname)) または if(empty($firstname)) を使用して、php 関数を使用できます。

于 2013-01-15T19:44:04.930 に答える
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 に答える