Php 登录加载页面
我有一个php网站,用户可以登录。一旦他们提交了带有凭证的Php 登录加载页面,php,login,header,loading,Php,Login,Header,Loading,我有一个php网站,用户可以登录。一旦他们提交了带有凭证的POST数据,他们就会被带到一个页面,启动会话,并检查数据库。这个过程需要很长时间才能最终将用户重定向到站点的后端。在这一次,用户在一个空白的白色页面楼梯。我想显示某种加载页面,但是当页面上有任何可打印的内容时,由于重定向,我会得到一个标题错误 如何创建加载页?我知道ajax是一种选择,但它是我唯一的选择吗 更新: PHP应用程序主要需要很长时间,因为每个登录都依赖于需要授权的外国API,以及需要查询的收费数据。我不是试图掩盖我可以轻松修
POST
数据,他们就会被带到一个页面,启动会话
,并检查数据库
。这个过程需要很长时间才能最终将用户重定向到站点的后端。在这一次,用户在一个空白的白色页面楼梯。我想显示某种加载页面,但是当页面上有任何可打印的内容时,由于重定向,我会得到一个标题错误
如何创建加载页?我知道ajax是一种选择,但它是我唯一的选择吗
更新:
PHP应用程序主要需要很长时间,因为每个登录都依赖于需要授权的外国API,以及需要查询的收费数据。我不是试图掩盖我可以轻松修复的东西,我是在尝试创建一个更好的用户界面
登录过程大约需要10秒钟。有一个经典技巧:
- 将登录表单的目标设置为(不可见)iframe,但在其中只将变量设置为重定向URL
- 提交时,将带有用户名/密码的div设置为.style.display='none',然后将已加载的“请等待”div设置为.style.display='block'
- 当iframe最终加载时,使用document.getElementById('myiframe').contentWindow.VarName获取URL并将其写入location.href
好吧,处理这个问题的简单方法如下:
一旦用户使用javascript按下loging,隐藏login按钮,注入一些,然后发送带有登录凭据的AJAX请求,正确添加盐,登录用户,将响应作为JSON发布,并截获该响应,如果成功,则执行重定向,如果失败,则打印适当的消息
一些代码:
login-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秒的加载时间是非常荒谬的,除非是为你自己,在这种情况下,敲你自己。听起来你需要找出为什么要花这么长时间来加载而不是掩盖问题。为什么不通过优化脚本来缩短时间呢?检查(包括盐析和其他)不应该花那么长时间。使用FireBug,看看加载页面需要多长时间。我知道为什么要花这么长时间(在问题中)。我会选择Ajax。在我看来,保留所有Javascript似乎不那么刻板,更干净,而且没有像Eugens方法中那样的iFrame。部分原因也是因为我根本不喜欢iFrame。