2013-04-23 4 views
0

Я нашел сценарий переадресации, и я пытался подсчитать его переадресацию (url_hits). Не могу заставить его работать, и мне было интересно, может ли кто-то там помочь мне.Count redirects

Это та часть, которая перенаправляет:

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

ответ

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

Он почти сработал, но теперь он добавляет +1 ко всем url_hits, а не только тот, который нажат/перенаправлен. – Sinopa

+0

@Sinopa Я думаю, вы используете код, который я опубликовал в течение первых нескольких секунд ... Я отредактировал его с тех пор. Попробуй. –

+1

Это сработало! Спасибо :) – Sinopa