добавление хитов в короткий URL-скрипт - PullRequest
0 голосов
/ 21 марта 2012

У меня есть короткий 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 голосов
/ 21 марта 2012

На странице перенаправления коротких URL выполните следующие запросы:

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]);
}
0 голосов
/ 21 марта 2012

Ну, я думаю, если вы действительно хотите, чтобы он обновлялся в базе данных, вместо того, чтобы использовать решение, такое как приложения Google, вы можете сделать следующее.

$(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. В случае успеха он будет перенаправлен на соответствующую страницу. Может быть, я неправильно понимаю, что вы собираетесь делать.

...