Создать сеанс перед вызовом ajax - PullRequest
1 голос
/ 31 мая 2011

У меня есть этот веб-сайт, на котором я могу взаимодействовать с Интернетом как зарегистрированный или анонимный пользователь.Когда я нажимаю на ссылку, я вызываю функцию AJAX:

Вы нажимаете здесь:

<a id="alcrearuta" class="'.$row->urlamigable.'" href="#">añadir a ruta</a>

Это моя функция AJAX:

var valor=$("#alcrearuta").attr('class');
$("#alcrearuta").click(function(){
    $.ajax({
        type: "GET",
        url: "../ajax/ruta.php",
        data: "urlamigable=" + valor,
        dataType: 'html',
        success: function(data) {
            $("#listaruta").html(data);
        }
    });        
});

Дело в том, что у меня естьдве возможности: либо зарегистрированный пользователь нажимает на ссылку, а ruta.php выполняет свою работу в базе данных, учитывая идентификатор пользователя, установленный в сеансе, или у меня есть анонимный пользователь, который хочет сделать что-то подобное.

В моемruta.php У меня есть:

if(!empty($_SESSION['Username'])){
    //Insert stuff on DB
}else{
    //I wish I could create the session here but I can't since it's an ajax call
}

Мне нужно в какой-то момент между щелчком ссылки и концом функции ajax. Я могу установить переменную $ SESSION ['Username'], чтобы получитьновое значение (поскольку пользователь не вошел в систему, он в настоящее время пуст и, следовательно, мои вставки в базу данных не работают)

Ответы [ 3 ]

3 голосов
/ 31 мая 2011

Если вы хотите использовать сессии в php, ваш php скрипт (ruta.php) должен начинаться с

session_start();

с этого момента вы можете назначить любую переменную для $ _SESSION ['Username']

$_SESSION['Username'] = something_to_generate_a_Username;

Как и любой другой запрос к серверу.

1 голос
/ 31 мая 2011

Вы можете использовать библиотеку jquery cookie для создания cookie сессии.

$.cookie("Username", "NOTLOGGEDINUSER");

https://github.com/carhartl/jquery-cookie

http://www.electrictoolbox.com/jquery-cookies/

and in beforeSend for Ajax, you can check if username cookie exists, other wise, create the cookie with "NOTLOGGEDINUSER"
0 голосов
/ 31 мая 2011

Может быть, на клике сделать еще один вызов AJAX только для установки SESSION?

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