2011-05-31 76 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"