我的 ajax-php 数据库主页上有一个登录状态指示器 div。单击时的登录按钮会做两件事。
<input value="Login" type="button" onclick='logIntheUser(/*function to process login request*/);updateLoginStatusIndicator(/*function to update login status in login staus indicator div*/);' />
- 它调用一个
logIntheUser
函数将登录数据发送到 php 访问处理器文件以设置$_SESSION['username']
用户名和密码是否正确。- 它还调用
updateLoginStatusIndicator
显示已登录的函数,$_SESSION['username']
如果$_SESSION['username']
未设置,则显示“未登录”$_SESSION['username']
。
这是使用updateLoginStatusIndicator
函数执行的控制器代码:
/*===login status indicator/updater===*/
if(isset($_REQUEST['change-login-indicator']))
{
if(!isset($_SESSION))
{
session_start();
}
if(isset($_SESSION['username']))
{
echo 'Logged in as:'.$_SESSION['username'];
}
else
{
echo 'not logged in';
}
现在的问题是,有一段时间用户成功登录(即$_SESSION['username']
设置),但第二个功能仍然updateLoginStatusIndicator
显示“未登录”。登录状态指示器每次都不起作用。可能是如果在updateLoginStatusIndicator
之后运行,logIntheUser
它将正确更新登录状态。但我不知道该怎么做。请帮忙!
编辑
当我将函数作为回调调用时,例如:logIntheUser(updateLoginStatusIndicator()),它仍然不起作用(可能是我的回调方法不正确)。然后,当我添加set_time_limit(1);
到updateLoginStatusIndicator()
函数脚本以将其延迟 1 秒时,它开始工作,但延迟脚本并不是最佳实践。请帮助我如何毫不拖延地工作,以便updateLoginStatusIndicator()
函数仅在logIntheUser()
函数完成执行后执行。请帮忙。