Php 登录加载页面

Php 登录加载页面,php,login,header,loading,Php,Login,Header,Loading,我有一个php网站,用户可以登录。一旦他们提交了带有凭证的POST数据,他们就会被带到一个页面,启动会话,并检查数据库。这个过程需要很长时间才能最终将用户重定向到站点的后端。在这一次,用户在一个空白的白色页面楼梯。我想显示某种加载页面,但是当页面上有任何可打印的内容时,由于重定向,我会得到一个标题错误 如何创建加载页?我知道ajax是一种选择,但它是我唯一的选择吗 更新: PHP应用程序主要需要很长时间,因为每个登录都依赖于需要授权的外国API,以及需要查询的收费数据。我不是试图掩盖我可以轻松修

我有一个php网站,用户可以登录。一旦他们提交了带有凭证的
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。