【问题标题】:Count redirects [closed]计数重定向[关闭]
【发布时间】:2013-04-23 23:25:27
【问题描述】:

我找到了一个重定向脚本,我一直试图让它计算重定向 (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;

【问题讨论】:

  • 我没有看到UPDATE table SET hits=hits+1

标签: php mysql redirect count


【解决方案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'"));

【讨论】:

  • 它几乎成功了,但现在它为所有 url_hits 添加了 +1,而不仅仅是被点击/重定向的那个。
  • @Sinopa 我认为您正在使用我在前几秒钟内发布的代码...从那时起我对其进行了编辑。立即尝试。
  • 成功了!谢谢你:)
猜你喜欢
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 2016-08-10
  • 2010-12-30
  • 2012-12-03
相关资源
最近更新 更多