2015-04-29 114 views
2

我目前正試圖設置一個cookie,當用戶登錄時cookie的值被PHP有效覆蓋,但它只是創建一個單獨的cookie,這裏是我設置cookie值PHP可以設置cookie功能,覆蓋用JQuery cookie創建的cookie值

<?php 
include("db_connect.php"); 

$input_game = $_POST['game']; 
$input_user = $_POST['email']; 

$sql = "UPDATE users_table SET Pref_Game = '" . $input_game . "' WHERE Email='" . $input_user . "'"; 
if ($conn->query($sql) === TRUE) { 
$cookie_name2 = "content"; 

$sql="SELECT Pref_Game FROM users_table WHERE Email='$input_user'"; 
$result = $conn->query($sql); 
$row = $result->fetch_object(); 
setcookie($cookie_name2,$row->Pref_Game, time() + (86400 * 30), "/"); // 86400 = 1 day 
} else { 
    //Error 
} 
?> 

下面的代碼片段只是爲了清楚起見,JQuery的餅乾代碼:

$("#test-cookie").click(function() { 
    $.cookie('content', 'test'); 
    location.reload(); 
}); 

反正是有PHP可以更新/覆蓋由創建的cookie值JQuery的?

+1

PHP將覆蓋jQuery的餅乾,如果它具有完全相同的名稱,路徑和域。 jQuery cookie的寫入路徑是什麼?在您的瀏覽器開發控制檯中查看它。如果它設置在目錄中,則可能需要使用類似'$ .cookie('name','value',{expires:7,path:'/'});'將其設置爲'/ '正如PHP cookie所做的那樣。 https://github.com/carhartl/jquery-cookie –

+1

這很重要,所以我必須指出,這個代碼很容易受到當前形式的SQL注入的影響,其中'$ input_user,$ input_game'被傳遞到查詢中。這可以通過使用'prepare()/ bind_param()/ execute()'獲益。有關示例,請參見[如何防止PHP中的SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 –

+0

@MichaelBerkowski只是提醒您可以在新的repo網址中找到最新版本:https://github.com/js-cookie/js-cookie/tree/v1.5.1 –

回答

1

如果PHP具有完全相同的名稱, 路徑和域,PHP將覆蓋jQuery的cookie。 jQuery cookie的寫入路徑是什麼? 在您的瀏覽器開發控制檯中查看它。如果它設置在 目錄中,則可能需要使用如下表達式: $ .cookie('name','value',{expires:7,path:'/'});將其設置爲/ 作爲PHP cookie已完成。

這回答我的問題謝謝:

$("#test-cookie").click(function() { 
    $.cookie('content', 'test', { expires: 7, path: '/' }); 
    location.reload(); 
});