php
  • mysql
  • redirect
  • count
  • 2013-04-23 65 views 0 likes 
    0

    我找到了一個重定向腳本,我一直試圖讓它計算重定向(url_hits)。不能讓它工作,我想知道是否有人可以幫助我。計數重定向

    這是一個重定向的部分:

    if (!empty($_GET['url'])) { 
        $redirect = mysql_fetch_assoc(mysql_query("SELECT url_link FROM urls WHERE url_short = '".addslashes($_GET['url'])."'")); 
        $redirect = "http://".str_replace("http://","",$redirect[url_link]); 
        header('HTTP/1.1 301 Moved Permanently'); 
        header("Location: ".$redirect); 
    } 
    

    這是數據庫

    CREATE TABLE IF NOT EXISTS `urls` (
        `url_id` int(11) NOT NULL auto_increment, 
        `url_link` varchar(255) default NULL, 
        `url_short` varchar(6) default NULL, 
        `url_date` int(10) default NULL, 
        `url_ip` varchar(255) default NULL, 
        `url_hits` int(11) default '0', 
        PRIMARY KEY (`url_id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
    
    +0

    我沒有看到'UPDATE table SET hits = hits + 1'? – Wrikken 2013-04-23 23:28:58

    回答

    1

    在你的代碼,你增加命中計數器沒有意義的。

    加入這一行if (!empty($_GET['url'])) {後:

    mysql_query("UPDATE `urls` SET `url_hits` = `url_hits`+1 WHERE `url_short` = '" . addslashes($_GET['url']) . "'"); 
    

    獎勵:爲了避免違反DRY principle,你可以修改成:

    $urlShort = addslashes($_GET['url']); 
    mysql_query("UPDATE `urls` SET `url_hits` = `url_hits`+1 WHERE `url_short` = '$urlShort'"); 
    

    這將使你可以改變:

    $redirect = mysql_fetch_assoc(mysql_query("SELECT url_link FROM urls WHERE url_short = '".addslashes($_GET['url'])."'")); 
    

    對此:

    $redirect = mysql_fetch_assoc(mysql_query("SELECT url_link FROM urls WHERE url_short = '$urlShort'")); 
    
    +0

    它幾乎可以工作,但現在它爲所有url_hits添加+1,而不僅僅是單擊/重定向的+1。 – Sinopa 2013-04-23 23:40:51

    +0

    @Sinopa我認爲你正在使用我在幾秒鐘內發佈的代碼...我從那時起編輯它。現在試試。 – 2013-04-23 23:43:06

    +1

    它的工作!謝謝 :) – Sinopa 2013-04-23 23:46:37

    相關問題