在ajax调用之前创建会话

时间:2011-05-31 14:50:48

标签: php mysql ajax

我有这个网站,我可以作为记录或匿名用户与网络进行交互。当我点击一个链接时,我称之为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考虑在会话中设置的用户ID或者我有一个想要做类似事情的匿名用户在数据库上做它的东西。

在我的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 个答案:

答案 0 :(得分:3)

如果你想在php中使用会话,你的php脚本(ruta.php)应该从

开始
session_start();

从那时起,您可以将任何变量分配给$ _SESSION ['Username']

$_SESSION['Username'] = something_to_generate_a_Username;

就像任何其他服务器请求一样。

答案 1 :(得分:1)

您可以使用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"

答案 2 :(得分:0)

也许在点击时只做另一个AJAX调用来设置SESSION?