2012-01-10 2 views
3

나는 사용자가 로그인 할 수있는 PHP 사이트가 있습니다. 자격 증명을 사용하여 POST 데이터를 제출하면 session을 시작하는 페이지로 이동하여 database을 확인합니다. 이 프로세스는 사용자가 궁극적으로 사이트 백엔드로 리디렉션되기까지 시간이 오래 걸립니다. 이번에는 사용자가 계단을 빈 흰색 페이지로 가져 가야합니다. 어떤 종류의 로딩 페이지를 보여주고 싶습니다만, 인쇄 할 수있는 것이 페이지에 있으면 리디렉션으로 인해 header 오류가 발생합니다.로그인로드 중 페이지

어떻게 로딩 페이지를 만들 수 있습니까? 나는 아약스가 선택 사항이라는 것을 이해하지만 그것은 나의 유일한 선택 사항인가?

업데이트 : 각 로그인 조회 할 필요가 데이터를 충전뿐만 아니라 권한을 부여 할 필요가 외국 API에 의존하기 때문에 는 PHP 응용 프로그램이 주로 시간이 오래 걸립니다. 나는 쉽게 고칠 수있는 것을 가리고 있지 않으며 더 나은 사용자 인터페이스를 만들려고 노력 중이다.

로그인 프로세스가 10 초 정도 걸립니다.

+1

은 왜 문제를 마스킹하지 않고로드하는 데 오랜 시간이 걸리는지 알아야 할 것처럼 들립니다. –

+0

'오랜 시간'은 얼마나 걸리나요? 그리고 왜 스크립트를 최적화하여 시간을 줄이지 않습니까? – zerkms

+0

수표 (소금물과 함께)는 오래 걸리지 않아야합니다. FireBug를 사용하여 페이지를로드하는 데 오랜 시간이 걸리는지 확인하십시오. – Biotox

답변

2

음,이 문제를 처리 할 수있는 쉬운 방법입니다 , 사용자를 로그인하고 응답을 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"); 
}); 

편집 :하지만 난 다른 사람을 가입하고 사용을 고려하고 싶습니다 더 빠르거나 다른 API인데,로드 시간은 10 초이므로 완전히 혼란 스럽습니다.

2

이 주위에 고전적인 트릭이있다 :

  • 이 (보이지 않는)은 iframe에 로그인 폼의 목표를 설정하지만, 거기에 단지를 설정 제출할 리디렉션 URL
  • 에에 변수를 설정는 div .style.display = 'none'으로 사용자 이름/비밀번호를 가지고 있다면, 이미로드 된 "please wait"div를 .style.display = 'block'으로 설정하십시오.
  • iframe이 마침내로드 될 때 document.getElementById ('myiframe ') .contentWindow.VarName을 사용하여 URL을 가져 와서 location.href에 작성하십시오.
로그인 자격 증명이있는 AJAX 요청을 보내는 것보다

는 사용자 누르면 loging되면, 자바 스크립트를 사용하여, 로그인 버튼을 숨길 제대로 소금을, 그것을 어떤 ajaxloader gif을 주입 다음과 같이

관련 문제