2012-01-10 28 views
3

私はユーザーがログインできるPHPサイトを持っています。資格情報とともにPOSTのデータを送信すると、sessionを開始し、databaseを確認するページに移動します。このプロセスは、ユーザーが最終的にサイトのバックエンドにリダイレクトされるまでに時間がかかります。今回は空白の白いページに階段を張っている。何らかの読み込みページを表示したいのですが、印刷可能なものがページにあるときは、リダイレクトのためにheaderエラーが発生します。ログイン読み込みページ

どのように読み込みページを作成できますか?私はajaxが選択肢だと理解していますが、それは私の唯一の選択肢ですか?

更新:各ログインがを照会する必要がデータを充電などを許可する必要があり、外国APIに依存しているため PHPアプリケーションは、主に長い時間がかかっています。私は簡単に修正できるものをマスクしようとしていない、私はより良いユーザーインターフェイスを作成しようとしています。

ログイン処理には約10秒かかります。

+1

は、問題をマスキングするのではなく読み込みに時間がかかる理由を知る必要があるように聞こえます。 –

+0

「長い時間」はどれくらいですか?スクリプトを最適化して時間を短くしないのはなぜですか? – zerkms

+0

小切手(塩漬けで全部)はそれほど長くはならない。 FireBugを使用して、ページが読み込まれるまでに何がかかるかを確認してください。 – Biotox

答えて

2

次のようにまあ、これを処理する簡単な方法は次のとおりです。

ユーザーはJavaScriptを使用して、logingを押したら、ログインボタンを非表示にするには、ログイン資格情報を持つAJAX要求を送信するよりも、いくつかの ajaxloader gifを注入し、塩には、適切にユーザーをログインさせ、JSONとしてレスポンスをポストし、そのレスポンスを傍受し、成功した場合はリダイレクトを行い、失敗を起こす - 適切なメッセージを出力する。

いくつかのコード:

ログイン-handler.php

$user = new user(); 
if ($user -> login($_POST['uid'], $_POST['password'], $_POST['whatever']){ 
    $response['type'] = 'success'; 
} 
else{ 
    $response['type'] = 'failure'; 
} 
echo json_encode($response); 

JS-login.js

$("#login").click(function(){ 
    // verify that user put user name, password and whatever, hide button and show ajax loader 

    $.get("login-handler.php", {user: user, password: password}, function(data){ 
    if (data.type == "success"){ 
     window.location = "http://example.com/new/location/whatever"; 
    } 
    else{ 
     //print message 
    } 
    }, "JSON"); 
}); 

編集:私は他の人々に参加し、使用することを検討したいと思いますあなた自身のためのものでなければ、10秒間の読み込み時間はまったくばかげています。

2

この周りの古典的なトリックがあります:

  • が(見えない)のiframeにログインフォームのターゲットを設定し、それにだけ設定提出リダイレクトURL
  • オンに変数を設定するにはdiv .style.display = 'none'にユーザ名/パスワードを持ち、divを.style.display = 'block'に既にロードしておいてください。
  • 最終的にiframeが読み込まれるときにdocument.getElementById( 'myiframe ').contentWindow.VarNameを使用してURLを取得し、location.hrefに書き込みます。
関連する問題