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;
4

1 回答 1

1

在您的代码中,您绝不会增加命中计数器。

在后面添加这一行if (!empty($_GET['url'])) {

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

奖励:为避免违反DRY 原则,您可以将其更改为:

$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'"));
于 2013-04-23T23:29:27.713 回答