0

さて、次のコードで:

$(document).ready(function() {
    $(".list-book-description").css("display", "none");
    $("#user-panel-login").css("display", "none");
    $('#login-form').submit(function(e) {
        e.preventDefault();
        var formUsername=$("#login-form #username").val();
        var formPassword=$("#login-form #password").val();
        if((formUsername.length<6))
        {
        $("#ajax-output").html("<div class='error'>Attenzione username troppo breve!</div>");
        }
        else if((formPassword.length<6))
        {
            $("#ajax-output").html("<div class='error'>Attenzione password troppo breve!</div>");
         }
    else
    {
        $.post(
            'index.php?module=login',
            {
                "username": formUsername,
                "password": formPassword,
            },
            function(data){
                $("#ajax-output").html(data);
            }
        );
    }
});
});

フィールドで取得したユーザー名と?index.php&module=login&function=1パスワードに、データがデータベースにある場合に関数を使用してログインセッションを設定するphp関数に渡そうとしました。#login-form#username#passwordlogin()setLogin();

function Login()
 {
 if(!checkLogin())
    {
    $function=@stringEscape($_GET['function']);

    if($function==1)
    {
        $username=stringEscape($_POST['username']);
        $password=sha1(stringCrypt($_POST['password'], 'sha1').stringCrypt(DB_CRYPT, 'sha1'));
        if(setLogin($username, $password))
        {
            echo "<div class='ok'>Login effettuato con successo, tra pochi secondi verrai riportato alla homepage!</div>";
        }   
    }
}
else notfound();
}

function setLogin($username, $password, $time="")
{
if(!checkLogin())
{
    if((isset($username)) && (isset($password)))
    {
        $query=mysql_query("SELECT * FROM ".DB_PREF."users WHERE user_username='".$username."' AND user_password='".$password."'");
        if(mysql_num_rows($query))
        {
            $fetch=mysql_fetch_assoc($query);
            $_SESSION['logged_user_id']=$fetch['user_id'];
            $_SESSION['logged_user_username']=$fetch['user_username'];
            return true;
        }
        else
        {
            echo "<div class='error'>Dati non validi, ripeti la procedura di login o <a href='?index.php&module=registration'>registrati</a>!</div>";
        }
    }
}
else notfound();
}

$.post()div でログイン フォームを送信した結果を取得するときに問題が発生しました#ajax-input。ログイン関数の結果だけではなく、インデックス ページ + ログイン関数の結果が返されます。

「json」パラメーターを$.post関数に設定しようとするとecho json_encode()、php関数ではまったく機能しません。それで、何が問題になるのでしょうか?

4

1 に答える 1

2

ここでページ全体のリクエストを行うと思います。パラメーターを作成して投稿または取得することができます。たとえば、それが true の場合はページ全体を返します。false の場合は JSON のみを返します。文字列またはそのようなもの。リクエストが ajax からのものかどうかを判断することさえ可能だと思います! それがあなたの2番目の選択肢かもしれません。簡単なif文を追加するだけだと思います。

于 2012-04-16T19:52:19.410 に答える