gpt4 book ai didi

PHP Cookie 和 MySQL

转载 作者:行者123 更新时间:2023-11-29 08:34:17 25 4
gpt4 key购买 nike

我目前正在尝试进行 PHP 调用,以在用户首次登陆页面时接收由以下代码块设置的 cookie

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 中提取

最佳答案

您可能需要考虑在 PHP 中正确设置 cookie。 setcookie() 函数最多需要 6 个参数,如下所示:

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

您的 setcookie() 在调用中有 7 个参数,并且没有正确遵循结构:

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

此外,您正在使用代码 empty($_COOKIE["uuid"]) 检查名为“uuid”的空 cookie,但您正在使用名称信息设置 cookie。

您需要将其重新安排为:

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

但是我不知道 $thisAid$thisSubID$thisURL 变量包含或用途是什么?

W3 Schools有一个很好的 setcookie() 示例,并且总是有 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符号分隔每个值,如下所示:

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 注入(inject)攻击。您知道这些是什么/您是否使用任何预防技术来避免它们?

关于PHP Cookie 和 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com