Как я могу проверить, чтобы видеть, является ли пользователь анонимным или вошел в систему из JavaScript?

Если Вы сравниваете их с кодами возврата, они являются медленными как ад. Однако, поскольку предыдущие плакаты указали, что Вы не хотите добавлять нормальную операцию программы, таким образом, Вы только поражали перфект, когда проблема происходит, и в подавляющем большинстве производительности случаев больше не имеет значения (поскольку исключение подразумевает контрольно-пропускной пункт так или иначе).

Их определенно стоит использовать по кодам ошибки, преимуществами является обширный IMO.

9
задан Community 23 May 2017 в 11:47
поделиться

5 ответов

Вы не можете прочитать сохраненные данные сеанса из 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>
10
ответ дан 4 December 2019 в 10:33
поделиться

Это обычно реализуемое решение с серверными языками. С 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";
2
ответ дан 4 December 2019 в 10:33
поделиться

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ] Поскольку я получаю так много комментариев от людей о том, что это «плохая практика», я Я просто собираюсь сказать следующее: делать это таким образом - НЕПРАВИЛЬНАЯ практика, но мы не знаем, что намеревается сделать оригинальный плакат. Насколько нам известно, все остальное он делал на 100% правильно и безопасно, и просто спрашивал, есть ли способ получить это с помощью javascript. То, что я сделал ниже, дает мне лучшее представление о том, как выполнить то, что он просил. [/ DISCLAIMER]

Вы можете настроить свой php или какой-либо серверный язык, который вы используете, установить cookie, который затем можно будет прочитать с помощью javascript.

document.cookie

Все просто. Вам придется искать в строке cookie имя файла cookie для входа в систему.

Вы также можете использовать это, чтобы установить cookie и выполнить вход через javascript (хотя, вероятно, это не лучшая идея).

См. здесь для быстрого обзора доступа к файлам cookie javascript.

[править]

Чтобы решить проблему с клиентским скриптом, имеющим доступ к информации о сеансе, и возможное использование ajax, предложенное в исходном вопросе:

Да, вызов ajax был бы очень простым способом Проверь это. Я больше сторонник jQuery, поэтому мой опыт использования ajax заключается в этом, но в основном вы выполняете вызов ajax для своей бэкэнд-функции, и эта бэкэнд-функция просто проверяет переменную сеанса loggedin, возвращая истину или ложь.

Кроме того, поскольку вы сейчас упомянули, что используете jQuery, см. эту страницу , чтобы получить простой доступ к файлам cookie jQuery. [/ edit]

6
ответ дан 4 December 2019 в 10:33
поделиться

В этом нет никакого смысла. Если пользователь вошел в систему, вы знаете, что это на стороне сервера. Поэтому вам не нужно проверять, вошли ли вы в систему на стороне клиента.

- РЕДАКТИРОВАТЬ:

После вашего разъяснения я могу только предложить проверить на контроллере, зарегистрирован ли пользователь, если это так, вы покажет нормальный вид, в противном случае вы покажете другой вид.

- EDIT добавил Афоризм:

Некоторые люди, столкнувшись с проблемой, думают: «Я знаю, я буду использовать ajax». Теперь у них как минимум две проблемы

1
ответ дан 4 December 2019 в 10:33
поделиться

Вы можете проанализировать файл document.cookie.

0
ответ дан 4 December 2019 в 10:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: