Если Вы сравниваете их с кодами возврата, они являются медленными как ад. Однако, поскольку предыдущие плакаты указали, что Вы не хотите добавлять нормальную операцию программы, таким образом, Вы только поражали перфект, когда проблема происходит, и в подавляющем большинстве производительности случаев больше не имеет значения (поскольку исключение подразумевает контрольно-пропускной пункт так или иначе).
Их определенно стоит использовать по кодам ошибки, преимуществами является обширный IMO.
Вы не можете прочитать сохраненные данные сеанса из JavaScript.
Самый простой способ сделать это - создать переменную JS из PHP (проще, чем решение для файлов cookie), например:
if ($_SESSION['logged_in'] == 1) {
echo '<script type="text/javascript">var logged_in=true;</script>';
} else {
echo '<script type="text/javascript">var logged_in=false;</script>';
}
Затем JS просто проверит собственную переменную logged_in
, чтобы убедиться, что пользователь вошел в систему.
<script type="text/javascript">
if (logged_in) {
alert("My user is logged in!");
}
</script>
Это обычно реализуемое решение с серверными языками. С JS вы, по крайней мере, может установить в своем клиенте файл cookie, в котором хранится эта информация.
Однако с Ajax у вас должна быть страница (например, check_login.jsp / .apsx и т. д.), где можно проверить если пользователь вошел в систему (доступ к БД, переменной сеанса и т. д.), и если да, вернитесь обратно в JS (через JSON) эту информацию и, например, зажгите DIV зеленым цветом ...
Итак:
check_login.aspx
-> вернуть информацию через Response.Write ("{user_logged: true}");
из login.aspx
в вашем HTML-коде с JS у вас будет вызов AJAX, где ваш xmlhttp
уже является экземпляром объекта XMLHttpRequest
...
var logged = JSON.parse(xmlhttp.responseText); // don't use eval
if(logged.user_logged)
document.getElementById("u_l").style.backgroundColor = "#00FF00";
[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ] Поскольку я получаю так много комментариев от людей о том, что это «плохая практика», я Я просто собираюсь сказать следующее: делать это таким образом - НЕПРАВИЛЬНАЯ практика, но мы не знаем, что намеревается сделать оригинальный плакат. Насколько нам известно, все остальное он делал на 100% правильно и безопасно, и просто спрашивал, есть ли способ получить это с помощью javascript. То, что я сделал ниже, дает мне лучшее представление о том, как выполнить то, что он просил. [/ DISCLAIMER]
Вы можете настроить свой php или какой-либо серверный язык, который вы используете, установить cookie, который затем можно будет прочитать с помощью javascript.
document.cookie
Все просто. Вам придется искать в строке cookie имя файла cookie для входа в систему.
Вы также можете использовать это, чтобы установить cookie и выполнить вход через javascript (хотя, вероятно, это не лучшая идея).
См. здесь для быстрого обзора доступа к файлам cookie javascript.
[править]
Чтобы решить проблему с клиентским скриптом, имеющим доступ к информации о сеансе, и возможное использование ajax, предложенное в исходном вопросе:
Да, вызов ajax был бы очень простым способом Проверь это. Я больше сторонник jQuery, поэтому мой опыт использования ajax заключается в этом, но в основном вы выполняете вызов ajax для своей бэкэнд-функции, и эта бэкэнд-функция просто проверяет переменную сеанса loggedin, возвращая истину или ложь.
Кроме того, поскольку вы сейчас упомянули, что используете jQuery, см. эту страницу , чтобы получить простой доступ к файлам cookie jQuery. [/ edit]
В этом нет никакого смысла. Если пользователь вошел в систему, вы знаете, что это на стороне сервера. Поэтому вам не нужно проверять, вошли ли вы в систему на стороне клиента.
- РЕДАКТИРОВАТЬ:
После вашего разъяснения я могу только предложить проверить на контроллере, зарегистрирован ли пользователь, если это так, вы покажет нормальный вид, в противном случае вы покажете другой вид.
- EDIT добавил Афоризм:
Некоторые люди, столкнувшись с проблемой, думают: «Я знаю, я буду использовать ajax». Теперь у них как минимум две проблемы