在简短的url脚本中添加命中

时间:2012-03-20 23:59:21

标签: php mysql url short hit

我有一个简短的url脚本,我想为它添加链接命中功能。

当有人访问从脚本生成的链接时,匹配将在数据库中更新。

我制作了一个包含以下字段的mysql表:

id, shortened_url, url, timestamp, hits.


  `id` int(11) NOT NULL auto_increment,
  `shortened_url` varchar(10) NOT NULL,
  `url` varchar(255) NOT NULL,
  `hits` int(11) NOT NULL,
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

嗯,我想如果你真的希望它在数据库中更新,而不是像谷歌应用程序这样的解决方案,你可以做到以下几点。

$(document).ready(function(){
   $("a .scriptGenerated").bind('click', function(e){
       e.preventDefault();
       var postUrl = 'some page on your site to post to';

       var shortUrl = $(this).attr('shorturl');   ///replace short url with whatever that means
       var url = $(this).attr('href');
       var time = new Date();

       var data = {"shorturl":shorturl, "url" : url, "time" : time};

       $.post({null, postUrl, data, success:function(result){window.location = url;}});
   });
});

我认为这有一些错误,但我的想法是它停止了具有“scriptGenerated”类的锚,执行,从中提取数据(锚DOM元素),并将其发布到您的某个页面应用程序,您可以从POST中获取数据。如果成功,它将重定向到适当的页面。也许我误解了你想要做的事情。

答案 1 :(得分:0)

在短网址重定向页面上,执行以下查询:

SELECT url from [tablename] WHERE shortened_url=[short_url]
UPDATE [table_name] SET hits=hits+1 WHERE shortened_url=[short_url]

#redirect to url retrieved from first query

如果您愿意,可以使用shortened_url作为表的唯一标识符(因为根据定义,每个短URL都必须是唯一的)。在这种情况下无需数字id


试试这个:

$shortened_url = mysql_real_escape_string($shortened_url);

mysql_query("UPDATE [tablename] SET hits=hits+1 WHERE
    shortened_url='$shortened_url'");

$query = mysql_query("SELECT * FROM [tablename] WHERE
    shortened_url='$shortened_url' LIMIT 1", $db);
echo mysql_errno($link) . ": " . mysql_error($link);
$row = mysql_fetch_row($query);
if (!empty($row)) { 
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: " . $row[2]);
}