我有一个用户可以登录的php网站。用他们的凭据提交POST
数据后,他们会转到启动session
的页面并检查database
。此过程需要很长时间才能最终将用户重定向到站点的后端。 Durring这次用户楼梯在一个空白的白页。我想显示某种加载页面,但当页面上有任何可打印的内容时,由于重定向,我会收到header
错误。
如何创建加载页面?我知道ajax是一个选项,但它是我唯一的选择吗?
更新 PHP应用程序主要需要很长时间,因为每次登录都依赖于需要授权的外部 API 以及收费数据需要被查询。我不是想掩饰一些我可以轻松修复的东西,我正在尝试创建一个更好的用户界面。
登录过程大约需要10秒钟。
答案 0 :(得分:2)
这有一个经典的伎俩:
答案 1 :(得分:2)
嗯,处理这个的简单方法如下:
用户按下登录后,使用javascript,隐藏登录按钮,注入一些 ajaxloader gif,然后发送带有登录凭据的AJAX请求,正确加密,登录用户,将响应发布为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秒的加载时间完全是荒谬的,除非是为了你自己,在这种情况下 - 把自己搞得一团糟。