我在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秒钟时,它开始工作,但它不是推迟脚本的最佳做法。请帮助我,我该如何使用它,以便函数仅在logIntheUser()
函数完成执行后才能执行。请帮忙。
尝试这样做,而不使用isset功能,有时isset不根据变量的服务器设置工作。 – 2012-04-23 08:50:34
@RavinderSingh嗯它的工作方式不行。我认为这是由于功能执行的时间。它的第二个函数'updateLoginStatusIndicator'在完成第一个函数'logIntheUser'后运行,这个错误将被修复。但我不知道如何运行第一个函数'logIntheUser',使第二个函数'updateLoginStatusIndicator'等待第一个函数完成并运行它。 – 2012-04-23 09:00:46
只是从logInTheUser函数返回一些值,并在此函数返回值时调用updateLoginStatusIndicator函数。 – 2012-04-23 09:24:23