我的 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()函数完成执行后执行。请帮忙。