0

こんにちは仲間のプログラマー!

作成したログイン スクリプトに非常に厄介な問題があります。これは、check.php ファイルへの $.AJAX (jquery) 呼び出しを使用して HTML フォームからユーザー名変数とパスワード変数を送信するスクリプトです。変数は、JS の keyUp 関数で送信されます。トリックは、送信ボタンがなく、変数がデータベースと一致するとユーザーが自動的にログインすることです。check.php は複数のメソッドを持つ OOP であり、変数がデータベースと一致すると、php は json_encode を js に送信します。スクリプトと設定ファイルを分けておきたい。データベース設定をcheck.phpファイルに入れると、スクリプトが機能します。上部にインクルードを付けて外部からロードしようとすると、スクリプトが機能しません。

JS:

$("#wachtwoord, #gebruikersnaam").keyup(function(){
    passnum = $("#wachtwoord").val();
    usernum = $("#gebruikersnaam").val();

    if(passnum.length > 2 && usernum.length > 2) {

        $.ajax({
            type: "POST",
            url: "classes/check.php",
            dataType: 'json',
            data: "gebruikersnaam="+usernum+"&wachtwoord="+passnum, 
            success: function(check){
                          if(check.login == 'true') { 
                      Do Stuff!

PHP:

(other methods and other unnecessary stuff above these lines of code...)
public function check(){


            if ($_POST){
            $u = $_POST['gebruikersnaam'];
            $u = strtolower($u);
            $u = trim($u);
            $p = $_POST['wachtwoord'];
            mysql_connect(host, user, pw);
            mysql_select_db(db);

                $gebruiker = mysql_real_escape_string($u);
                $wachtwoord = mysql_real_escape_string($p);
                $query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".$gebruiker."' AND wachtwoord = '".$wachtwoord."'");
            if(mysql_num_rows($query))
            {
        $this->validate();
        }

    }
}

public function validate(){
        $return['login'] = "true";
        echo json_encode($return);  

この形式のスクリプトが機能するのは特に奇妙ですが、ファイルをインクルードすると、json が JS に返されません。複数のことを試しましたが、何も役に立たないようです。空の php ファイルを含めても、スクリプトが動作しなくなります。問題は、すべての構成データを別のファイルにロードしたいのですが、my_sql データを login/check php ファイルに存在させたくないということです。

これについて何か考えはありますか?

この奇妙な問題のせいで、私はひどい頭痛に悩まされています。

私が愚かな間違いを犯していることを願っています!

前もって感謝します!

RJ

4

1 に答える 1

1

私は自分の問題を解決したと思います。

素晴らしいデバッグツールを使って約2時間、実際に進歩しました。

//the infamous include:
include ("classes/config.php");

//the dir the check.php was in:
classes!!

//error:
Warning: include() [function.include]: Failed opening 'classes/classes/config.php' for inclusion 

奇妙なことに、電源がオンになっている間はphpエラーは表示されませんでしたが、エラーはPOST/GETリクエストでjqueryスクリプトに戻されました。Firebugを使用して、phpエラーを含むPOSTリクエストがhtmlとしてphpファイルにストリーミングされることをついに発見しました。

ヒントとコツをありがとう、それはばかげた間違いでした!

私が誰かの時間をあまり無駄にしなかったことを願っています!

どうも、

RJ

于 2012-06-07T22:49:39.733 に答える