У меня есть индикатор состояния входа в систему на моей домашней странице базы данных ajax-php. Кнопка входа в систему при нажатии делает две вещи.функция индикатора состояния входа не работает
<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
, то он правильно обновит статус входа. Но я не знаю, как это сделать. Пожалуйста помоги!
EDIT
Когда я называю эту функцию в качестве обратного вызова, как то есть: logIntheUser (updateLoginStatusIndicator()), она до сих пор не не работает (может быть мой обратный вызов метода является неправильным). Затем, когда я добавляю set_time_limit(1);
в скрипт функции updateLoginStatusIndicator()
, чтобы задержать его в течение 1 секунды, он начинает работать, но это не самая лучшая практика для задержки сценария. Пожалуйста, помогите мне, как я могу работать без задержки, так что функция updateLoginStatusIndicator()
выполняется только после завершения функции logIntheUser()
. Пожалуйста помоги.
попробовать сделать это без использования функции IsSet, иногда Исеть не работает в соответствии с настройками сервера переменных. –
@RavinderSingh хм, это не работает так. Я думаю, это из-за времени выполнения функций. Это вторая функция 'updateLoginStatusIndicator' запускается после того, как первая функция' logIntheUser' будет выполнена полностью, тогда эта ошибка будет исправлена. Но я не знаю, как запустить первую функцию 'logIntheUser', сделать вторую функцию' updateLoginStatusIndicator' дождаться завершения первой функции и затем запустить ее. –
просто верните некоторое значение из функции logInTheUser и вызовите функцию updateLoginStatusIndicator, когда эта функция вернет значение. –