2013-03-25 143 views
0

目前,我試圖讓一個PHP調用收到一個cookie通過下面的代碼塊設置在一個頁面PHP餅乾和MySQL

if (empty($_COOKIE["uuid"])) { 
$uuid = uniqid(); // or use a real UUID 
setcookie("info", $uuid, $thisAid, $thisSubID, $thisURL, time()+30*24*60*60, "/"); 
} 
else { 
$uuid = $_COOKIE["uuid"]; 
foreach($_COOKIE as $name => $uuid){ 
// you can check any conditions based on cookie name $name 
$cookiequery = "INSERT INTO table_name(WebTraffic) VALUES(" . mysql_escape_string($uuid) . ##")"; 
mysql_query($cookiequery); 
unset($cookiequery); 

在用戶第一次土地,然後再添加另一條線當用戶點擊一個特定的頁面,以從cookie取值,並將其添加到數據庫中

if (isset($_COOKIE["uuid"])) 
$values = ''; 
$sql = " INSERT INTO WebTraffic (aid, subID, campaignID, URL, uuid) VALUES("; 
foreach ($_COOKIE as $name => $uuid) 
$values .= "'$uuid'"; 

$sql .= $values.")"; 

但既不是工作,任何人都可以點我在正確的方向上的數據庫?謝謝!

編輯:值是先前設置字符串:

$thisAID = $_GET['aID']; 
$thisSubID = $_GET['subID']; 
$thisCampaignID = $_GET['campaignID']; 
$thisURL = $_SERVER['REQUEST_URI']; 
$uuid = uniqid(); 

其從URL中拉過去了

回答

2

您可能需要看看正確地放置在PHP中的cookie。該setcookie()函數需要多達6個參數如下:

setcookie(name,value,expire,path,domain,secure) 

setcookie()在通話7個參數和不正確以下結構:

setcookie("info", $uuid, $thisAid, $thisSubID, $thisURL, time()+30*24*60*60, "/") 

除了要檢查一個空餅乾命名爲'uuid',代碼爲empty($_COOKIE["uuid"]),但是您要使用名稱信息設置cookie。

您將需要重新安排這是:

setcookie("uuid", $uuid, time()+30*24*60*60, "/") 

但是我不知道是什麼$thisAid$thisSubID$thisURL變量包含或者是?

W3 Schoolssetcookie()一個很好的例子,總是有PHP Manual本身

如果你想使用一個cookie來存儲所有變量,然後建立自己的SQL查詢,那麼你既可以設置cookie分別爲每個變量,如下所示:

setcookie("uuid", $uuid, time()+30*24*60*60, "/") 
setcookie("thisAid", $thisAid, time()+30*24*60*60, "/") 
setcookie("thisSubID", $thisSubID, time()+30*24*60*60, "/") 
setcookie("thisURL", $thisURL, time()+30*24*60*60, "/") 
setcookie("campaignID", $thisCampaignID, time()+30*24*60*60, "/") 

或者可選地設置一個cookie爲a;符號單獨的每個值像這樣:

setcookie("uuid", $thisAid . ";" . $thisSubId . ";" . $thisCampaignID. ";" . $thisURL . ";" . $uuid, time()+30*24*60*60, "/") 

然後,您可以使用explode()功能來拆分cookie的值,然後使用foreach循環就此建立如下的SQL查詢:

$values = explode(";", $_COOKIE['uuid']); 

    foreach($values as $value) { $sqlValues .= $value . ","; } 

    $sql = "INSERT INTO WebTraffic (aid, subID, campaignID, URL, uuid) VALUES($sqlValues); 

或者使用多個setcookie()函數調用上面你可以做到這一點像這樣:

$sql = "INSERT INTO WebTraffic (aid, subID, campaignID, URL, uuid) VALUES($_COOKIE['thisAid'], $_COOKIE['subID'], $_COOKIE['campaignID'], $_COOKIE['thisURL'], $_COOKIE['uuid']); 

的另一件事不過要注意的是,你真的應該使用準備好的statemen當從數據庫插入或檢索信息以避免SQL注入攻擊時。你知道這些是/你在使用任何預防技術來避免它們嗎?

+0

如果我有setcookie(「info」...)後跟7個參數中的6個,它會更好嗎? – 2013-03-25 22:50:08

+0

您正在檢查名爲'uuid'的cookie,但設置了名爲'info'的cookie,因此您還需要命名cookie'uuid'。你可以把setcookie('uuid',$ uuid,time()+ 30 * 24 * 60 * 60)做得很好。這會自行工作。其他變量($ thisAid,$ thisSubID,$ thisURL)包含了什麼以及它們的用途是什麼? – 2013-03-25 22:53:34

+0

我在用cookies跟蹤分析的URL,我在原始問題 – 2013-03-25 22:58:49