1

两天后,我尝试从用户名中检查新用户是否可以注册。我已经阅读了我发现的所有内容,但我找不到问题所在。

当用户检查是免费的名称时,我不会成为 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

据我所知,有两种可能:

A) $num = mysql_num_rows($result);没有设置$num为您认为的那样。

B) $num != 1:而不是

if ($num == 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".是错误的,有两个原因。首先,我们需要为这个插件返回一个json_encoded 数组来接受响应。2,当我们需要时,使用“true”将返回“\true\” true。这是我们发送的 BOOLEAN,而不是字符串。

$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 回答