当用户第一次登陆页面
时,我正在尝试进行PHP调用以接收以下代码块设置的cookieif (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
您可能需要查看如何在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'的空cookie与你的代码empty($_COOKIE["uuid"])
,但是你正在设置一个名称为info的cookie。
您需要将其重新排列为:
setcookie("uuid", $uuid, time()+30*24*60*60, "/")
但是我不知道$thisAid
, $thisSubID
或$thisURL
变量包含或用于什么?
W3学校有一个很好的setcookie()
的例子,总是有PHP手册本身
如果您想使用一个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与;符号来分隔每个值:
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'] );
另一件要注意的事情是,当从数据库插入或检索信息时,您确实应该使用准备好的语句,以避免SQL注入攻击。你知道这些是什么吗/你有使用任何预防技巧来避免它们吗?