我正在构建一个访问者跟踪系统,我希望它尽可能抽象,而不必将静态变量放在代码中。 广告系列表的结构是这样的:
ID - NAME - URL - REDIRECT URL
如果ID是广告系列的ID
(自动递增),NAME
是广告系列的名称,URL
是广告系列的网址。
事实上,我应该根据我们实际的广告系列获取广告系列的ID,并通过将当前网址与数据库中的网址进行比较来实现。通过这样做,我获得了活动ID并完成了剩下的工作。
问题是,通过我的功能,我正确地获取了广告系列的网址,但在将其与数据库中的网址进行比较时,并不总是会返回预期的内容。
我试图获取包含所有可能变量的URL,但有时URL没有以正确的方式返回,并且在DB中无法识别ID。
我该如何解决这个问题?我可以使用另一种逻辑而不是比较URL吗?
$campaign = getCampaignDetails("url", cleanUrl($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
function cleanUrl($url) {
$url = str_ireplace("http://www.", "", $url);
$url = str_ireplace("http://", "", $url);
$url = str_ireplace("www.", "", $url);
$url = str_ireplace(".php", "", $url);
$url = str_ireplace("https://www.", "", $url);
$url = str_ireplace("https://", "", $url);
return $url;
}
function getCampaignDetails($table, $var) {
$query = "SELECT * FROM _campains WHERE ".$table." = '$var'";
$result = mysql_query($query) or die("Getting campaign details via url failed: " . mysql_error());
while ($row = mysql_fetch_assoc($result)) {
return $row;
}
}
数据库中广告系列的值示例:
ID = 1, Name = tgcampaign, URL = site.com/campains/tgadv
现在为了避免意外错误,我只是直接在文件中传递ID,但这是我想避免的,如下所示:
$campaignId = "1";
$campaign = getCampaignDetails("id", $campaignId);