1

新しいユーザーが登録できるようになる前に、2日後にユーザー名からのチェックを試みます。私は見つけたものをすべて読みましたが、問題を見つけることができません。

ユーザーチェックに名前がない場合、php/msqlからの回答にはなりません。私のコードを確認していただけますか?

テーブルコード:

<form id="form" method="get" action="">

    <legend>Formular mit Validierung</legend>
    <tr>
        <td><label id="geschlecht">Geschlecht:* </label></td>
        <td><select name="anrede" value=""/> 
        <option> Frau </option> 
        <option> Mann </option> 
        <option> Paar </option>
        </select>
      </td>
    </tr>
    <tr>
        <td><label for="vorname">Vorname* </label></td>
        <td><input type="text" id="vorname" name="vorname" />
     </td>
    </tr>
    <p>
        <label for="nachname">Nachname* (mindestens 2 Zeichen)</label>
        <input type="text" id="nachname" name="nachname" />
    </p>
    <p>
        <label for="email">E-Mail*</label>
        <input id="email" name="email" />
    </p>

    <p>
        <label for="geburtsDatum">Geburtsdatum:*</label>
        <input type="text" name="geburtsDatum"  id="geburtsDatum" value=""/>
    </p>
    <p>
        <label for="username">Benutzername:*</label>
        <input type="text" name="username"  id="benutzername" value=""/>
    </p>       
    <p>
        <label for="message">Mitteilung*</label>
        <textarea id="message" name="message"></textarea>
    </p
    ><p>
        <input class="submit" type="submit" value="Submit"/>
    </p>
</fieldset>

jsコード:

$(document).ready(function() {
// hier die Methode .validate()
$("#form").validate({
    submitHandler: function() {
    },
    rules: {
        vorname: {
        required: true,
        minlength: 3
    },
        nachname: {
        required: true,
        minlength: 3
    },
    email: {
        required: true,
        email: true 
    },
    geburtsDatum: {
        required: true,
        date: true  
    },

    username: {
            required: true,
            minlength: 3,
            remote: "check.php"
        },

    },
    messages: {
    username: {
            required: "Bitte Tragen Sie ihren Benutzername ein",
            minlength: "Der Benutzername ist zu kurz",
            remote: "Somenoe have already chosen nick like this."
        },
        dateformat: "Choose your preferred dateformat",
        terms: " "
    }
});

var newsletter = $("#newsletter");
var isChecked = newsletter.is(":checked");
var themen = $("#newsletter_themen");
themen[isChecked ? "show" : "hide"]();
//var themaInputs = themen.find("input")
// .attr("disabled", !isChecked);
newsletter.click(function() {
    themen[this.checked ? "fadeIn" : "fadeOut"](1000);
    //themaInputs.attr("disabled", !this.checked);
});

とphpコード:

$username = trim(strtolower($_REQUEST['value']));
$sql =" SELECT  login FROM benutzername WHERE  login =  '".$username."' LIMIT 1";
$result = $connector->query($sql);
$num = mysql_num_rows($result);
if ($num == 1){
    echo "true";

あなたが私を助けてくれることを願っています。

よろしくトーマス

4

3 に答える 3

0

私が見ることができることから、2つの可能性があります:

A) あなたが思っていることに$num = mysql_num_rows($result);設定されていません。$num

B) $num != 1:代わりに

if ($num == 1) { ... }

レコードが1つだけ存在するのではなく、レコードの存在をテストしているので、以下も同様に機能します。

if ($num > 0) { ... }
于 2012-08-06T20:59:46.427 に答える
0

ここでの問題は、ここでのコードが開発者とまったく同じである場合、$_REQUEST['value']間違っていることです。

remote sends the name of the validation element任意のプレースホルダーではないため、常に未定義になります。

$_REQUEST['username']さらに、コードの後半で、このオブジェクトの検証を再宣言する必要があります。

また........

あなたはecho "true".2つの理由でどちらが間違っているかを行います。まず、json_encodeこのプラグインが応答を受け入れるためにd配列を返す必要があります。2番目に、「true」を使用すると、必要に応じて「\true\」が返されますtrue。これは、文字列ではなく、送信するブール値です。

$username = trim(strtolower($_REQUEST['username']));
$sql = sprintf("SELECT login FROM benutzername WHERE login = '%s' LIMIT 1", $username);
$result = $connector->query($sql);
$num = mysql_num_rows($result);
if ($num == 1){
    $valid = true;
}else{
    $valid = false;
}
return json_encode($valid);

これで十分です。

于 2012-08-06T21:01:08.723 に答える
0
$username = trim(strtolower($_REQUEST['value'])); SHOULD BE
$username = trim(strtolower($_REQUEST['username']));

また、mysql関数の使用を停止し、PDOまたはMySQLiの使用に切り替える必要があります。

于 2012-08-06T21:02:01.357 に答える