0

訪問者追跡システムを構築していますが、コード内に静的変数を配置する必要がなく、できるだけ抽象化したいと考えています。キャンペーン テーブルは次のように構成されています。

ID - NAME - URL - REDIRECT URL

ID はIDキャンペーン ( auto-incremented )、NAMEはキャンペーンの名前、 はキャンペーンURLの URL です。実際には、実際のキャンペーンに基づいてキャンペーンの ID を取得する必要があり、現在の URL と DB 内の URL を比較することでそれを行っています。これにより、キャンペーン ID を取得し、残りの作業を行います。問題は、関数を使用してキャンペーンの URL を正しく取得できることですが、それを DB 内の URL と比較すると、常に期待どおりに返されるとは限りません。可能なすべての変数を含む URL を取得しようとしましたが、URL が正しく返されず、ID が DB で認識されないことがあります。この問題を解決するにはどうすればよいですか? 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;
    }
}

DB 内のキャンペーンの値の例:

ID = 1, Name = tgcampaign, URL = site.com/campains/tgadv

今のところ、予期しないエラーを回避するために、ID をファイルに直接渡すだけですが、これは次のように避けたいものです。

$campaignId = "1";
$campaign = getCampaignDetails("id", $campaignId);
4

0 に答える 0