login.php への ajax 呼び出し (jquery から) があり、-{"response":{"error": "false", "user_id" :"141","name": "as"} のような json 応答を受け取ります}。ユーザーをhome.phpにリダイレクトしたいのですが、方法がわかりません。提案やサンプルコードをいただければ幸いです。
ありがとう!!
JSON入力を使用する関数で、応答値(またはその他の必要な条件)を簡単にチェックし、一致する場合はリダイレクトを実行します。
$.post("action.php", { email: email, password:pass, action:action }, function(json)
{
if (json.response.error)
$(window.location).attr('href', 'home.php?id=' + json.response.user_id);
}, 'json');
より一般的なシナリオでは、login.phpが実際に返されることも確認する必要があります。つまり、成功と失敗のハンドラーを指定します。成功ハンドラーは、JSONが存在する場合、応答が適切にフォーマットされている場合、その処理を実行します。他のすべてのケースはhome.phpにリダイレクトされます。
正確に何が起こったかをユーザーに説明するダイアログを追加し、ダイアログ却下ハンドラーにロケーションリダイレクトを配置することを検討してください。
考えてみてください:あなたの応答全体が「応答」と呼ばれる辞書の中にあるように見えること。json.response.error
これは必須ではなく、json.response.user_id
の代わりにのようなものを書くことを強制しますjson.user_id
。
また、ログインによってログイン情報もセッションに保存されていると思います。リダイレクトされたIDを信用しません。そうした場合、FireBugを使用するすべてのユーザーは、同じパスワードを使用する他のユーザーと同じようにログインできます。
// action.php
// receive parameters
if ($login_ok)
{
$_SESSION['user_id'] = $user_id;
Header('Content-Type: application/json');
die(json_encode(array(
'user_id' => $user_id,
...
)));
}
// Send along the error
次に、user_idなしでhome.phpにリダイレクトすると、home.phpはセッションからuser_idを回復します。
コードが正常に機能し、ユーザーを新しい URL にリダイレクトするだけでよい場合。次の JavaScript コードを使用します。
window.location.href = "http://www.google.com.pk"; //whichever URL you want
応答を確認して、エラーがあるかどうかを確認する必要がありますか?? このようなことを試してください:
$.ajax({
url: 'ajax/test.html',
dataType: json,
success: function(data) {
//login success
if(!data.response.error){
windown.location='/home.php';
}else{
...
}
}
});
Javascript を使用してリダイレクトする場合は、次のコードを使用できます。
window.location = "http://www.google.com/";
PHPを使用してリダイレクトする場合は、次のコードを使用できます
header('Location: http://www.example.com/');