2013-06-24 4 views
4

Я пытаюсь создать некоторую функцию javascript, и мне нужно проверить, вошли ли пользователи в систему или нет. Когда пользователь регистрируется на моем сайте, я устанавливаю переменную в массиве сеанса с именем is_logged. Я хочу достичь этой переменной в javascript, возможно ли это ??? я попробовал несколько способов, но не работает, как следующее:

var session = "<?php print_r $_SESSION['is_logged']; ?>"; 
alert(session); 

и:

var session = '<?php echo json_encode($_SESSION['is_logged']) ?>'; 
alert(session); 

Это либо показать текст или никогда оповещения на всех

+0

является то, что JS файл или файл php, где вы сообщаете значение. ?? –

+0

Как насчет настройки cookie вместо этого и проверить javascript cookie? – gmaliar

+0

это файл js, где я предупреждаю значение – Basel

ответ

2

Если вы хотите, чтобы охватить все элементы $ _SESSION в JavaScript вы можете использовать json_encode,

<?php 
session_start(); 
$_SESSION["x"]="y"; 
?> 

<script> 
var session = eval('(<?php echo json_encode($_SESSION)?>)'); 
console.log(session); 

//you may access session variable "x" as follows 
alert(session.x); 
</script> 

Но обратите внимание, что экспорт всех $ _SESSION переменного клиенту не является безопасным на всех.

+0

Я работаю над файлом js и хочу показать переменную php не наоборот, я использую ваш код, но он показывает мне ошибку синтаксиса. – Basel

+0

. Вы не можете проверить фрагмент кода на js файл, поскольку они обходят выполнение php. Вставьте раздел экспорта в index.php или какой сценарий вы используете для загрузки js-файлов, а затем используйте session.x для ссылки на переменные сеанса. –

+0

пока что я использовал ваш код в своем индексном файле. Надеюсь, он будет работать нормально. спасибо – Basel

6

Просто эхо его:

var session = <?php echo $_SESSION['is_logged']?'true':'false'; ?>; 
alert(session); 

Вам нужен третичный оператор, так как false отражается как пустой stri ng, поэтому это приведет к var session = ;, который является синтаксической ошибкой JS.

+1

Хорошая работа Voitcus.по крайней мере, вы знаете, что происходит. ^^ – EaterOfCode

0

В js-файле вы не можете получить значение переменной php или PHP-код, который не работает в js-файле, потому что PHP-код будет работать в файле расширения .php. Таким образом, один из методов - установить значение сеанса как значение скрытого элемента, а в вашем js-файле получить значение скрытого элемента.

В HTML:

<input type="hidden" id="sess_var" value="<?php echo $_SESSION['is_logged']; ?>"/> 

В ваших ЯШ:

var session = document.getElementById('sess_var').value; 
alert(session); 
+0

просто предупреждает сеанс как текст, не задающий значение переменной – Basel

0

Попробуйте следующий код:

var session = "<?php echo $_SESSION['is_logged'] ?>"; 
-4
var get_session=<?php echo $_SESSION['is_login'] 

    alert(get_session); 
    ?> 

## * Просто попробуйте * ##

+0

Синтаксическая ошибка. no ';' и alert не является функцией в PHP – EaterOfCode

0

Вы можете сделать что-то вроде этого

Просто вставьте $_SESSION['is_logged'] в скрытом поле, как

<input type = "hidden" value = "<?php echo $_SESSION['is_logged']; ?>" id = "is_logged" /> 

Тогда вы можете получить доступ, что в вашем JQuery, как этот

var is_logged = jQuery.trim($('#is_logged').val()); 
//then do validation here 
+0

Ужасно. Здесь jQuery на 100% бесполезен. – Utopik

+0

Почему ты так сказал. –

+0

1) «is_logged» является логическим, без необходимости отделки, 2) 'document.getElementById (« is_logged »). Значение' намного быстрее (http://jsperf.com/getelementbyid-vs-jquery-id/ 13). – Utopik