1

現在、ユーザーがデータベースに存在するかどうかをajaxがチェックする必要があるWebサイトに取り組んでいます。ほぼ完成しましたが、利用できないという問題があります。これは、ユーザー管理者がデータベースで維持される方法ですが、データベース内の管理者ユーザーではなく、何を見て「利用できません」と言っても、管理者ユーザーではありません。

この問題を解決するのを手伝ってくれる人がいることを願っています。

私はfirefoxに夢中になり、firebugまたはそれが呼ばれるもので調べましたが、まったく問題が見つかりません!.

明確にしてほしいこと - だからこそ、データベースに存在するユーザーにとって正しいかどうかを検討します。

現在、どのような問題が存在し、ここにありますか - ユーザー名が「利用できない」と言っているものは何でも。これを変更して、存在するかどうかを明らかにするのを手伝いたい

<tr>
<td>
<p>Brugernavn</p>
</td>
<td>
<input type="text" name="brugernavn" id="brugernavn" onblur="CheckUserName(this.value)"/>
</td>
<td>
<span id="availability_status"/></div>
</td>
</tr>


function CheckUserName(username){
    if(username.length > 3){
        var url = "ajax_check_username.php";        
        var params = "brugernavn="+ username +"&rand="+Math.random();
        http = new XMLHttpRequest();
        http.open("POST", url, true);
        //Send the proper header information along with the request
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.setRequestHeader("Content-length", params.length);
        http.setRequestHeader("Connection", "close");
        http.send(params);
        http.onreadystatechange = function () {
            if(http.readyState == 4 && http.status == 200 ){    
                var val = parseInt(http.responseText);
                var html=(val == 0) ? '<font color="Green">Tilgængelig</font>' : '<font color="red">Ikke tilgængelig</font>';
                document.getElementById('availability_status').innerHTML = html;
            }
        }
    }
    else{
        document.getElementById('availability_status').innerHTML = '<font color="#cc0000">Username too short</font>';               
    }       
}

ajax_check_username.phpはこちらから!

<?php
// bør ligge i en extern fil,bruges generalt til alle db opslag
function MySqlIConnOOP(){
    $conn = new mysqli("localhost", "root", "", "test");    
    if (!$conn) {
        echo 'Der opsod en fejl.';
        exit();     
    }
    $conn->set_charset("utf8"); 
    return $conn;
}

// bør ligge i en extern fil, da man også bør checke det inden man opretter brugeren serverside, nogle kunne jo have pillet i JS
// retunerer 0 eller brugerens id (tal størrer end 0)
function IsUserCreated($mysqli, $username){
    if($stmt = $mysqli->prepare("SELECT `id` FROM `bruger` WHERE `brugernavn` = ? ")){
        /* bind parameters for markers */       
        $stmt->bind_param("s", $username);              
        $stmt->execute();       
        $stmt->bind_result($id);    
        $stmt->fetch();                     
        $status = ($id >0) ? $id : 0;
        $stmt->close();     
    }
    else $status = -1;
    return $status; 
}

$conn=MySqlIConnOOP();
$brugernavn = $_POST["brugernavn"];
$status = IsUserCreated($conn, $brugernavn);
echo ($status >0)? 1 : $status;
?>
4

1 に答える 1

1

これは私が理解していることです:

IsUserCreated PHP 関数は整数を返します (ユーザー名が見つかった場合は > 0)

CheckUserName JS 関数は戻り値をチェックします。

var val = parseInt(http.responseText);
var html=(val == 0) ? '<font color="Green">Tilgængelig</font>' : '<font color="red">Ikke tilgængelig</font>';

if val == 0, "Tilgængelig" else (val != 0) は "Ikke tilgængelig" です。

ユーザー名が存在する場合、「Ikke tilgængelig」と出力されます。ユーザー名が存在しない場合は、「Tilgængelig」と出力されます。

単純なラベル編集じゃないですか。

var html=(val > 0) ? '<font color="Green">Username exists</font>' : '<font color="Red">Username does not exist</font>';
于 2012-10-12T21:12:23.117 に答える