-2

関数がユーザーの検証をチェックすることであるjQueryログインフォームがあります。

これがJSです:

$(document).ready(function()
    {
        $('#button_sign_in').click(function(){
             console.log('login');
            $.ajax({
                url: "login",
                type: "post",
                data: $('#login_form').serialize(),
                success: function (data) {
                    //console.log('data:'+data);
                    if (data.user) {
                        $('#lblUsername').text(data.user.username);
                    }
                    else {
                        $('#button_sign_in').shake(4,6,700,'#CC2222');
                        $('#username').focus();
                    }
                },
                error: function (e) {
                    console.log('error:'+e);
                }
            });
        });
    });

ロジックは、ユーザー名またはパスワードが間違っていると、ボタンが揺れます。ログインが正しい場合は、ホームページにリダイレクトします。

ここに私のPHP関数があります:

require ("functions/_db_.php");

$username = $_POST['username'];
$password = $_POST['password'];

$query = mysql_query("SELECT username, password FROM t_users WHERE username='$username' && password='$password'");
$found = mysql_num_rows($query);
if ($found > 0)
{
    header('location:home.php');
}

問題は次のとおりです。ログインが修正された場合、ページはホームページにリダイレクトされません。

助言がありますか ?

4

5 に答える 5

1

リダイレクト自体を行っていないためでしょうか?

success: function (data) {
                    //console.log('data:'+data);
                    if (data.user) {
                        $('#lblUsername').text(data.user.username);
                        window.location = '/home.php'; // redirect to the homepage
                    }
                    else {
                        $('#button_sign_in').shake(4,6,700,'#CC2222');
                        $('#username').focus();
                    }
                }

AJAX 経由でクライアントに送信する場合、ヘッダーを使用した PHP リダイレクトは機能しません。この場合、JS を使用してクライアント側でリダイレクトする必要があります。

于 2013-07-11T09:18:29.493 に答える
0

おい、javascriptではなく、PHP側に問題があると思います。これを考慮して、これがあなたの解決策であり、場所ではありません

header('Location: http://www.example.com/');

書類

于 2013-07-11T09:22:47.643 に答える
0

PHPスクリプトを次のように保ちます

        //Check your inputs against to mysql injections
        $username = mysql_real_escape_string($_POST['username']); 
        $password = mysql_real_escape_string($_POST['password']);

        $query = mysql_query("SELECT username, password FROM t_users WHERE username='$username' && password='$password'");
        $found = mysql_num_rows($query);


        if ($found > 0)
        {
            $res='SUCCESS';
        }
        else
        {
            $res='ERROR';
        }

        $ary=array("status"=>$res);

        echo json_encode($ary); //Json output - we are sending the assynchronus data in json format

とあなたのスクリプト

$.ajax
({
    url: "login",
    type: "post",
    data: $('#login_form').serialize(),
    dataType:'json', //We need ajax data in json type
    success: function (data) 
    {
        if (data.status=='SUCCESS') //status is proper of the json object, which we gave in php code in above script
        {
            window.location='home.php'; 
        }
        else 
        {
            $('#button_sign_in').shake(4,6,700,'#CC2222');
            $('#username').focus();
        }
    },
    error: function (e) {
        console.log('error:'+e);
    }
});
于 2013-07-11T09:33:13.833 に答える
0
if (data.user) 
{
   $('#lblUsername').text(data.user.username);
   window.location = "home.php";
}
于 2013-07-11T09:18:27.973 に答える
0

PHP スクリプトに対して AJAX 呼び出しを行うと、呼び出しheader()によってブラウザーに新しいページが読み込まれません。AJAX の部分で応答を確認することで、 AJAX 呼び出しに応答echo 'success/fail'し、目的のページにリダイレクトすることができます。success:また、php セッションの設定を忘れずに、ログイン後に表示したいページでユーザーのログインが成功したかどうかを確認してください。したがって、php のコードは次のようになります。

if ($found > 0) {
  //set session here
  echo 'success';
}
else
  echo 'fail';

そしてアヤックスでは、

success: function (data) {
  if (data == 'success') {
    window.location = "home_page.php";
  }
  else {
    $('#button_sign_in').shake(4,6,700,'#CC2222');
    $('#username').focus();
  }
}

あなたのホームページphpで、セッションを確認してください。

于 2013-07-11T09:41:47.120 に答える