使用php和mysql跟踪网址

时间:2011-08-06 16:23:11

标签: php mysql .htaccess

如何跟踪此代码正在创建的短网址的网页浏览量和IP地址。提前谢谢。

PHP代码

<?php 

//include database connection details
include('db.php');

//redirect to real link if URL is set
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);  
}
//

//insert new url
if ($_POST['url'] && $_POST['url'] != 'http://') {

//get random string for URL and add http:// if not already there
$short = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 5);

mysql_query("INSERT INTO urls (url_link, url_short, url_ip, url_date) VALUES

    (
    '".addslashes($_POST['url'])."',
    '".$short."',
    '".$_SERVER['REMOTE_ADDR']."',
    '".time()."'
    )

");

$redirect = "?s=$short";
header('Location: '.$redirect); die;

} 

<h1> URL to shrink: </h1>
<form id="form1" name="form1" method="post" action="">
  <input name="url" type="text" id="url" value="http://" size="75" />
  <input type="submit" name="Submit" value="Go" />
</form>

<!--if form was just posted-->
<?php if (!empty($_GET['s'])) { ?>
<br />
<h2>Here's the short URL: <a href="<?php echo $server_name; ?><?php echo $_GET['s']; ?>" target="_blank"><?php echo $server_name; ?><?php echo $_GET['s']; ?></a></h2>
<?php } ?> 

的.htaccess

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*) index.php?url=$1 [L,QSA]

2 个答案:

答案 0 :(得分:1)

您需要创建一个单独的表来保持点击数和IP缩短的URL数。创建一个表(让我们称之为“命中”),其中包含url_id和ip_address作为列。

if (!empty($_GET['url']))条件中,使用其请求的URL的ID以及请求来自的IP地址插入到hits表中。

答案 1 :(得分:-1)

  

如何跟踪此代码正在创建的短网址的网页浏览量和IP地址。

在您的网络服务器中启用日志记录,然后使用日志文件分析器为您提供该信息(大多数常见的日志文件分析器都有您正在寻找的信息)。