2012-04-16 2 views
1

Я хотел бы установить сеанс php с помощью ajax. есть моя функция, чтобы установить сеанс в session.php.Как установить сеанс php с помощью jquery/ajax?

public static function set($key, $value) { 
    $_SESSION[$key] = $value; 
} 

и я подтвердил предупреждение javascript, и если я нажму «да», я хочу установить сеанс. Как я могу установить сеанс просто?

EDIT 16.4.2012 15:31 GMT: +1

Давид: спасибо за ответ, это выглядит хорошо. Я попробовал, но ничего не делает на моем компьютере. Поэтому у меня есть: a.php

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<p>I would like to say: </p> 
<script> 
    $("p").append("<strong>Hello</strong>"); //check jquery is working 
    $.get('a.php', function(data) { 
     // do something on success? 
    }); 
</script> 

b.php (в той же папке)

<script type="text/javascript"> 
    alert('aaa'); 
</script> 
<?php 
echo "print by b.php"; 
?> 

и я бегу A.php в браузере

+1

Вы писали session_start перед тем, как присвоить значение $ _SESSION? –

+0

@ user1336101: Когда вы говорите такие вещи, как «бегать в браузере» и «ничего не делает на моем ПК», моя первая мысль заключается в том, что, возможно, у вас нет веб-сервера с поддержкой PHP? Какой локальный веб-сервер вы используете, и работает ли PHP на этом веб-сервере? – David

+0

Также, если PHP _is_ работает, можете ли вы отладить этот запрос в чем-то вроде Firebug? Таким образом, вы можете видеть, что такое ответ. (Потому что не похоже, что в пользовательском интерфейсе будет указано, что был ответ, так как вы не делаете ничего успешного в вызове AJAX.) – David

ответ

2

Вы можете иметь простой PHP-страницу, которая делает не более, чем установить значение (с использованием кода у вас уже есть), а затем JQuery называют эту страницу:

$.get('setsessionvalue.php', function(data) { 
    // do something on success? 
}); 

Если вы хотите ехр и это, вы можете сделать вызов более общим путем передачи значений в строке запроса:

$.get('setsessionvalue.php?key=someKey&value=someValue', function(data) { 
    // do something on success? 
}); 

Тогда вы бы тянуть эти строки запроса значения из $_GET коллекции на сервере так же, как и любой другой странице.

С точки зрения кода на стороне сервера это не отличается от любой другой страницы. Вам просто не нужно отображать пользовательский интерфейс (и может отображать данные, если вы хотите, возможно, самый простой в формате JSON). Код JavaScript просто вызывает эту страницу, как любую другую страницу.

Следует, конечно, отметить, что пользователь может вызвать эту страницу вручную, если захочет. Поэтому не используйте это как любую «безопасность» для значений сеанса. Если пользователь перейдет по URL-адресу:

setsessionvalue.php?key=someKey&value=someValue 

тогда они смогут установить свои значения сеанса вручную. Даже переопределение значений, которые вы уже установили (которые они могут видеть в коде JavaScript). Мне было бы не особенно удобно отображать структуру значений сеанса (особенно их ключей) для такого клиентского кода. Кажется, что на небольшом расстоянии от некоторых дыр в безопасности на вашем сайте.

+0

О, да, я плохой. Сожалею... – DaveRandom