php - 登录加载页面

标签 php authentication header loading

我有一个用户可以登录的 php 站点。一旦他们提交了带有凭据的 POST 数据,他们就会被带到一个页面,该页面会启动一个 session 并检查 database。在用户最终被重定向到站点后端之前,此过程需要很长时间。在此期间,用户站在空白的白页上。我想显示某种加载页面,但是当页面上有任何可打印的内容时,由于重定向,我收到了 header 错误。

如何创建加载页面?我知道 ajax 是一种选择,但它是我唯一的选择吗?

更新: PHP应用耗时长主要是因为每次登录都依赖国外的API需要授权以及计费数据需要查询。我不是想掩盖我可以轻松修复的东西,我是想创建一个更好的用户界面。

登录过程大约需要 10 秒。

最佳答案

好吧,处理这个问题的简单方法如下:

一旦用户按下登录,使用javascript,隐藏登录按钮,注入(inject)一些 ajaxloader gif ,然后发送带有登录凭据的 AJAX 请求,正确加盐,让用户登录,将响应作为 JSON 发布,并拦截该响应,如果成功 - 进行重定向,如果失败 - 打印适当的消息。

一些代码:

登录处理程序.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 秒的加载时间是完全荒谬的,除非它是为你自己准备的,在这种情况下 - 让你自己崩溃。

关于php - 登录加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811547/

相关文章:

http - 如何在 nginx 中添加规范 header 和 301 重定向

C++:头文件中的模板正在摧毁我

php - 我应该使用哪些 header 来提供静态内容?

python - django 中的身份验证

Docker Jupyter token 认证 : Invalid Credential

php - 将 BLOB 图像插入 BLOB 列

PHP 网络应用程序国际化

c# - 将身份验证/授权功能从 ASP.NET 4.8 迁移到 ASP.NET Core 6

php - 是否可以在 Yii2 中以登录用户身份发送获取请求?

php - 在 laravel 的嵌套预加载中加载特定关系