Установка PHP $_SESSION ['var'] с помощью jQuery
Мне нужно установить переменную PHP $_SESSION, используя jQuery. Если пользователь нажимает на изображение, я хочу сохранить часть информации, связанную с этим изображением, в качестве переменной сеанса в php.
Я думаю, что могу сделать это, вызвав php-страницу или функцию и добавив эту часть информации в строку запроса.
Любые идеи. Я нашел небольшую помощь через Google.
спасибо
микрофон
Ответы
Ответ 1
Вы не можете сделать это через jQuery; вам понадобится комбинация Ajax (которую вы можете сделать с jQuery) и PHP-back-end. Очень простая версия может выглядеть так:
HTML:
<img class="foo" src="img.jpg" />
<img class="foo" src="img2.jpg" />
<img class="foo" src="img3.jpg" />
JavaScript:
$("img.foo").onclick(function()
{
// Get the src of the image
var src = $(this).attr("src");
// Send Ajax request to backend.php, with src set as "img" in the POST data
$.post("/backend.php", {"img": src});
});
PHP (backend.php):
<?php
// do any authentication first, then add POST variable to session
$_SESSION['imgsrc'] = $_POST['img'];
?>
Ответ 2
Возможно, вы захотите применить функцию PHP на другой странице PHP и использовать вызов AJAX для установки переменной.
Ответ 3
Что вы ищете, это jQuery Ajax. А затем просто настройте php-страницу для обработки запроса.
Ответ 4
Многие ответы здесь касаются того, как, но не почему.
Пара ключей/значений PHP $_SESSION хранится на сервере. Это отличается от файла cookie, который хранится в браузере. Вот почему вы можете получать доступ к значениям в cookie как из PHP, так и из JavaScript.
Хуже того, AJAX-запросы из браузера не включают файлы cookie, которые вы установили для веб-сайта. Таким образом, вам нужно будет заставить JavaScript вытащить файл cookie Session ID и включить его в каждый запрос AJAX для того, чтобы сервер мог создавать головы или хвосты. С яркой стороны сессии PHP предназначены для перехода на HTTP GET или POST-переменную, если файлы cookie не отправляются вместе с заголовками HTTP.
Я бы рассмотрел некоторые из принципов веб-приложений RESTful и использование шаблонов проектирования, которые являются общими для этих приложений, вместо того, чтобы пытаться манипулировать обработчиком сеанса.
Ответ 5
in (backend.php) обязательно включите include
session_start();
-Taylor
http://www.hawkessolutions.com
Ответ 6
Я также разработал решение по настройке "php session set setter" (похожее на решение Luke Dennis). Но после установки значения сеанса мои потребности были "перескакивают на другой .php файл". Хорошо, я сделал это, внутри моего кода jquery... Но что-то не совсем сработало...
Моя проблема была легкой:
-После того, как вы "$.post" ваши значения на небольшой .php файл, вы должны дождаться некоторого "успешного/неудачного" значения возврата и ТОЛЬКО ПОСЛЕ ЧТЕНИЯ ЭТОГО УСПЕШНОГО ЗНАЧЕНИЯ, выполните скачок. Если вы сразу же перейдете к следующему большому .php файлу, ваше значение сеанса, возможно, не будет установлено на процессор времени выполнения php-сессий, и вы, вероятно, будете читать "пусто" при выполнении $_SESSION [ "my_var" ]; из файла .php адресата.
В моем случае, чтобы исправить эту ситуацию, я изменил код jQuery $.post следующим образом:
$.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){
if(ret==0){
window.alert("success!");
location.replace("next_page.php");
}
else{
window.alert("error!");
}
});
Конечно, ваш файл "set_session_value.php" должен возвращать "echo" 0 "; 'или' echo" 1"; '(или любые значения успеха, которые могут вам понадобиться).
Привет.
Ответ 7
Подобно Luke, но с GET.
Поместите этот php-код на php-страницу, например. getpage.php:
<?php
$_SESSION['size'] = $_GET['size'];
?>
Затем вызовите его с помощью jQuery script следующим образом:
$.get( "/getpage.php?size=1");
Соглашаться с Федерико. В некоторых случаях вы можете столкнуться с проблемами с помощью POST, хотя не уверены, может ли он быть связан с браузером.
Ответ 8
Он работает на firefox, если вы измените onClick() на click() в части javascript.
$("img.foo").click(function()
{
// Get the src of the image
var src = $(this).attr("src");
// Send Ajax request to backend.php, with src set as "img" in the POST data
$.post("/backend.php", {"img": src});
});