2011-05-31 80 views
1

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

在我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 [“用户名”]之间的某一点变量来获得一个新的值(因为用户它没有登录,它目前是空的,因此我插入数据库不工作)

+2

为什么ajax会干扰初始化会话...只要服务器被隐藏,请求就是一个请求。 – prodigitalson 2011-05-31 14:54:56

+0

他登录并看到这个东西,或者这是登录页面? – 2011-05-31 14:55:30

+0

在你的屏幕上你没有登录后显示的用户名?如果是这样,你的javascript可以检查它,或者,通过PHP更改ajax调用,例如,通过会话写出不同的ajax javascript(取决于用户是否登录) – BugFinder 2011-05-31 14:56:30

回答

3

,如果你想在PHP中使用会话,你的PHP脚本(ruta.php)schould与

session_start(); 

从该点开始,你可以分配到$ _SESSION [ '用户名']任何变量

$_SESSION['Username'] = something_to_generate_a_Username; 

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

+0

Omg我不能相信我忘了这个。我认为这是第一次包含我在ruta.php文件中做的,但事实并非如此。非常感谢你 – 2011-05-31 15:08:48

0

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

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"