1

私は PHP を初めて使用します。データベースにユーザーを登録する際に問題がありました。最初にJavaScriptを使用してフォームを検証し、次にフォームアクションを実行して、PHPコードとSQ​​Lクエリを含む別のページにリダイレクトします。しかし問題は、ユーザー名と電子メールのみを検証することです。その他のフィールドは JavaScript によってチェックされません。 Register.php

<script type = "text/javascript"> 
function initthis() {
    document.getElementById("signup").disabled = true;
}

function dis_enable_submit() {
    if (document.getElementById("t&d").checked == 1) {
        document.getElementById("signup").disabled = false;
        document.getElementById("signup").className = "enabled";
    } else {
        document.getElementById("signup").disabled = true;
        document.getElementById("signup").className = "disabled";

    }
}
window.onload = initthis;

function validateForm() {
    var a = document.forms["register"]["duser"].value;
    var b = document.forms["register"]["demail"].value;
    var c = document.forms["register"]["dcemail"].value;
    var d = document.forms["register"]["dpwd"].value;
    var e = document.forms["register"]["dcpwd"].value;

    if (a == null || a == "") {
        document.getElementById("duser").style.background = "#FDFCDC";
        return false;
    }

    var atpos = b.indexOf("@");
    var dotpos = b.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= b.length) {
        document.getElementById("demail").style.background = "#FDFCDC";
        return false;
    } else {
        document.getElementById("tick").src = "images/tick.gif";
    }
    if (c == null || c == "") {
        document.getElementById("dcemail").style.background = "#FDFCDC";
        alert("Email doesn't match");
        return false;
    }

    if (c != b) {
        alert("Email doesn't match");
        return false;
    }

    if (d == null || d == "") {
        document.getElementById("dpwd").style.background = "#FDFCDC";
        return false;
    }

    if (e == null || e == "") {
        document.getElementById("dcpwd").style.background = "#FDFCDC";
        alert("Password doesn't match");
        return false;
    }


    if (e != d) {
        alert("Password doesn't match");
        return false;
    }


}

これは検証するフォームです

<form name="register" onsubmit="return validateForm();" method="post" action="getdata.php">
    <table border="0">
        <tr>
            <td colspan="2" style="background:url('images/register.jpg') no-repeat; height:50px; width: 350px;"></td>
        </tr>
        <tr>
            <td>
                <label>*Username:</label>
            </td>
            <td>
                <input name="duser" id="duser" value="" type="text" spellcheck="false" size="20" />
            </td>
        </tr>
        <tr>
            <td>
                <label>*Email:</label>
            </td>
            <td>
                <input name="demail" id="demail" value="" type="text" size="20" />
            </td>
        </tr>
        <tr>
            <td>
                <label>*Confirm Email:</label>
            </td>
            <td>
                <input name="dcemail" id="dcemail" value="" type="text" size="20" />
            </td>
        </tr>
        <tr>
            <td>
                <label>*Password:</label>
            </td>
            <td>
                <input name="dpwd" id="dpwd" value="" type="password" size="20" />
            </td>
        </tr>
        <tr>
            <td>
                <label>*Confirm Password:</label>
            </td>
            <td>
                <input name="dcpwd" id="dcpwd" value="" type="password" size="20" />
            </td>
        </tr>
        <tr>
            <td>
                <label>*Gender:</label>
            </td>
            <td>
                <input type="radio" name="gender" id="gender" value="1">Male
                <input type="radio" name="gender" value="0">Female</td>
        </tr>
        <tr>
            <td>
                <label>Birthday:</label>
            </td>
            <td>
                <input name="bday" id="bday" type="date" size="20" />
            </td>
        </tr>
        <tr>
            <td align="middle">
                <input id="signup" class="button" type="submit" value="Sign Up" style="font-size:15px;" />
            </td>
        </tr>
    </table>
</form>

getdata.php

<?php
$_POST[duser];
$_POST[demail];
$_POST[dpwd];
$_POST[gender];

$con=mysqli_connect("localhost","root","root","MyDB");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO Users (UserName, Email, Password, Gender)
VALUES ('$_POST[duser]', '$_POST[demail]','$_POST[dpwd]',$_POST[gender] )");

mysqli_close($con);


header("Location: successful.php");
exit();

?>
4

3 に答える 3

1

参考までに: 助けを求めるときは、より具体的に説明するか、何をしたいのかを簡単に説明してください。インターネットからコードをコピーして、なぜ機能しないのか疑問に思うよりも、迅速な応答が得られます。dis_enable_submit() 関数があるようですが、どこで呼び出しているかわかりません。このような長いファイルがある場合は、jsfiddle.net/ を利用することもできます。

于 2013-08-13T11:52:47.030 に答える
0

ここにいくつかのサンプルコードがあります。

<head>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
            <script>
            $.validator.setDefaults({
            submitHandler: function() { alert("submitted!"); }
         });

         $().ready(function() {
             // validate the comment form when it is submitted
             $("#commentForm").validate();

         });
        </script>

    </head>



    <form id="commentForm" class="formular" method="post" action="" style="width:600px">
                <p class="name">
                    <input value="" class="text-input" type="text" name="fullname" id="fullname" required />
                    <label for="fullname">Name</label>
                </p>
                <p class="email">
                    <input value="" class="text-input" type="text" name="email" id="email" required />
                    <label for="email">E-mail</label>
                </p>
                <p class="web">
                    <input type="text" name="web" id="web" />
                    <label for="web">Website</label>
                </p>
                <p class="text">
                    <textarea name="text" class="text-input" id="comment" required></textarea>
                </p>
                <p class="submit">
                    <input type="submit" id="submit" value="Send" />
                </p>
            </form>
于 2013-08-13T11:56:42.470 に答える
0

validateForm()その関数をどこにも呼び出していないため、関数は実行されていません。

既存のコードに基づく提案:

<input onclick="return validateform()" id="signup" class="button" type="submit" value="Sign Up" style="font-size:15px;" />

これにより、ボタンを押したときに検証が実行され、その関数が TRUE を返した場合にのみ SUBMIT が完了します。

return true;したがって、関数の最後にa も追加する必要があるため、すべてのテストに合格した場合、つまり a を実行しないreturn false;場合return trueは、デフォルトではありません。

于 2013-08-13T11:58:09.467 に答える