Intereting Posts
Быстрее или лучше использовать MySQL вместо текстовых файлов или имен файлов для порядка изображений с PHP? Выберите записи с сегодняшнего дня, на этой неделе, в этом месяце php mysql Как составить список уникальных элементов из столбца w / repeat в PHP SQL Вывести многомерный массив php в таблицу html MySQL ORDER BY Всего строк пользователя в другой таблице Форма внутри $ .load не правильно размещена Специальные символы в UTF8 mailto: subject = link и Outlook Идентификатор страницы WordPress без идентификатора Ползунок Nivo + php Пользовательский php.ini при выполнении php в качестве сценария оболочки Автозаполнение JQuery и формирование популяции с использованием JSON Как безопасно хранить пароли пользователей? PHP, MySQLi – Как подсчитать строки результатов запроса? Как исправить предупреждение «Создание объекта по умолчанию из пустого значения» в PHP путь назначения для move_uploaded_file в php

Как вставить значение javascript в переменную сеанса php

Я хочу вставить значение javascript в переменную сеанса php, но внутри функции javascript.

Вот что я пробовал и не работает:

function languageChange() { var lang = $('#websites1 option:selected').val(); <?php $_SESSION['SESS_LANGUAGE']?> = lang; alert(<?php echo $_SESSION['SESS_LANGUAGE']?>); } 

Вы не можете получить к нему доступ напрямую (как вы это делаете). Однако это можно сделать с помощью AJAX. Вот идеальное рабочее решение.

Вот HTML:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>1</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <label for="websites1">Websites</label> <select name="websites1" id="websites1"> <option value="Design">Design</option> <option value="Dev">Dev</option> <option value="Ecom">Ecom</option> </select> </form> <script type="text/javascript" src="js/jquery_1.7.1_min.js"></script> <script type="text/javascript"> $(document).ready(function() { function languageChange() { var lang = $('#websites1 option:selected').val(); return lang; } $('#websites1').change(function(e) { var lang = languageChange(); var dataString = 'lang=' + lang; $.ajax({ type: "POST", url: "pass_value.php", data: dataString, dataType: 'json', cache: false, success: function(response) { alert(response.message); } }); return false; }); }); </script> </body> </html> 

Вот часть AJAX:

 //pass_value.php <?php session_start(); $_SESSION['SESS_LANGUAGE'] = $_POST['lang']; $_SESSION['SESS_LANGUAGE'] = 'This is my PHP session var --->'.$_SESSION['SESS_LANGUAGE']; print json_encode(array('message' => $_SESSION['SESS_LANGUAGE'])); die(); ?> 

ИЗМЕНИТЬ 1:

После запуска кода просто выберите любой из других параметров из раскрывающегося меню, и вы получите предупреждение, которое даст вам значение переменной сеанса php вместе с настраиваемым текстом, который я добавил к нему.

EDIT 2:

Если вы хотите запустить мое решение на своем конце, убедитесь, что вы правильно указываете jQuery jQuery. Мой код jquery указывает на src="js/jquery_1.7.1_min.js" . Убедитесь, что вы обновили это.

Javascript не имеет доступа к PHP-переменным. Клиент (веб-браузер / javascript) имеет доступ только к файлу Cookie или Cookieless ID (Querystring), связанным с сеансом.

Сеансы используются таким образом, чтобы не позволить клиенту изменять параметры, связанные с сеансом, не проходя через сервер. Менее безопасным способом является использование файлов cookie для всех настроек. Нечто вроде настройки языка может быть хорошей идеей хранить в cookie, а не в сеансе.

Чтобы решить эту проблему, вы можете создать страницу, которая принимает имя свойства сеанса (например, ваш «SESS_LANGUAGE») и значение, которое помещает его в сеанс, используя php. Я настоятельно советю против этого, потому что любой пользователь может установить любую переменную сеанса.

Лучший способ, я могу себе представить, это то, что вы отправляете AJAX-вызов на страницу, говорящий, что вы хотите изменить язык.

Вызываемый url будет примерно таким: changelanguage.php? Lang = en_US

И php-код для changelaguange.php: $ _SESSION ['SESS_LANGUAGE'] = $ _GET ['lang'];