0

我正在构建一个访客跟踪系统,我希望它尽可能抽象,而不必在代码中放入静态变量。活动表的结构是这样的:

ID - NAME - URL - REDIRECT URL

其中 ID 是ID广告系列的(自动递增),NAME是广告系列的名称,是广告系列URL的网址。事实上,我应该根据我们实际的活动来获取活动的 ID,并且我通过将当前 URL 与数据库中的 URL 进行比较来做到这一点。通过这样做,我得到了活动 ID 并完成了剩下的工作。问题是,通过我的函数,我正确地获得了活动的 URL,但是当将它与数据库中的 URL 进行比较时,它并不总是返回预期的结果。我试图获取包含所有可能变量的 URL,但有时 URL 不会以正确的方式返回,并且数据库中无法识别 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);
4

0 回答 0