Доступ к переменным сеанса из JavaScript - PullRequest
4 голосов
/ 16 ноября 2011

Можно ли получить доступ к переменным сеанса, созданным из JavaScript, и как мне скопировать этот код PHP в JavaScript?

if(empty($_SESSION['name'] {
   echo 'foo';
}

Ответы [ 7 ]

4 голосов
/ 16 ноября 2011

Вы можете получить доступ к странице через Ajax, которая выдаст значение переменной:

Используя jQuery:

$.get('myVariable.php', function ( data ) {
    alert(data)
});

И страницу PHP (myVariable.php):

<?php echo $_SESSION['user_id']; ?>
4 голосов
/ 16 ноября 2011

Если вы настроили свой javascript для анализа по php, вы можете получить доступ к сессиям так же, как и в php:

// Test.php
<?php session_start(); ?>

<?php $_SESSION['foo'] = 'bar' ?>

<script type="text/javascript">
    alert('<?php echo $_SESSION['foo'] ?>');
</scrip>

<?php var_dump($_SESSION['foo']) ?>
3 голосов
/ 16 ноября 2011

Извините, но вы не можете :(

Сначала немного фона:

Поддержка сессий в PHP состоит из способа сохранения определенных данных при последующих обращениях. Это позволяет создавать более настраиваемые приложения и повышать привлекательность вашего веб-сайта.

Посетителю, обращающемуся к вашему веб-сайту, присваивается уникальный идентификатор, так называемый идентификатор сеанса. Он либо сохраняется в файле cookie на стороне пользователя, либо распространяется по URL.

Поддержка сеанса позволяет вам регистрировать произвольное количество переменных, которые будут сохраняться в запросах. Когда посетитель получает доступ к вашему сайту, PHP автоматически проверит (если для session.auto_start установлено значение 1) или по вашему запросу (явно с помощью session_start () или неявно с помощью session_register ()) был ли передан определенный идентификатор сеанса с запросом. В этом случае предварительно сохраненная среда воссоздается. С http://www.php.net/manual/en/intro.session.php

В основном сеансы включают в себя хранение на стороне сервера данных и хранение идентификатора на стороне клиента cookie. Это означает, что JS теоретически может получить доступ к cookie, но тогда все, что у вас будет, - это доступ к переменной PHPSESSID (идентификатор сеанса).

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

Просто создайте серверный скрипт, например getName.php, который содержит:

if(!empty($_SESSION['name'])) {
    echo $_SESSION['name'];
}

И используйте ajax, чтобы получить ответ:)

1 голос
/ 16 ноября 2011

хорошо ... ajax хорош и все, но если вы действительно хотите, вы можете просто напечатать их как переменные в вашем теге в голове и получить к ним доступ через js таким образом.Я никогда не делал этого с переменными сеанса, но я печатаю значения из php (mysql) таким образом все время

0 голосов
/ 16 ноября 2011

Нет, вы не можете.Переменные сеанса хранятся на сервере, а не на клиенте.Самое близкое, что вы можете сделать, это проверить переменную сеанса в php-скрипте и вызвать ее с помощью ajax.

0 голосов
/ 16 ноября 2011

Переменные сессии хранятся на сервере.Единственный способ получить к ним доступ с помощью javascript (который на стороне клиента) - сделать запрос к бэкэнду с AJAX на страницу php, которая затем вернет вам значение.

0 голосов
/ 16 ноября 2011

возможно ли получить доступ к переменным сеанса, созданным в php, из javascript

Нет. Они находятся в памяти вашего веб-сервера, к которому, к счастью, javascript не имеет доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...