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 に答える