1

links.php 包含以下代码:

$ipaddress = $_SERVER["REMOTE_ADDR"];
<p><a href="track.php?page=http://www.google.co.uk" target="_blank">google.co.uk</a></p>
<p><a href="track.php?page=http://www.bbc.co.uk" target="_blank">bbc.co.uk</a></p>
<p><a href="track.php?page=http://www.cnn.com" target="_blank">cnn.com</a></p>
<p><a href="track.php?page=http://www.yahoo.co.uk" target="_blank">yahoo.co.uk</a></p>

track.php 捕获点击的链接:

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("mydb1") or die(mysql_error());

$redirect = mysql_real_escape_string($_GET['page']);
$ipaddress = $_SERVER["REMOTE_ADDR"];

$page_insert = mysql_query("INSERT INTO link_track (myurl, myip1, mydate) VALUES ('$redirect', '$ipaddress', now())") or die(mysql_error());

header("Location: $redirect");

有没有办法阻止某人直接访问track.php。

您的帮助将不胜感激,谢谢。


我对其他问题表示歉意:如果我想http://www.从 url 中删除部分,我可以修改我的 track.php 代码如下:

mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("mydb1") or die(mysql_error());

$redirect = mysql_real_escape_string($_GET['page']);
$redirect2 = parse_url($redirect, PHP_URL_HOST);
$redirect2 = preg_replace('/^(www\.)/i', '', $redirect2);
$ipaddress = $_SERVER["REMOTE_ADDR"];

$page_insert = mysql_query("INSERT INTO link_track (myurl, myip1, mydate) VALUES ('$redirect2', '$ipaddress', now())") or die(mysql_error());

header("Location: $redirect");
4

2 回答 2

4

您无法阻止某人直接访问它,因为您的链接需要可访问网络才能正常工作,但您可以处理 URL 查询字符串不包含 page 参数的异常。

例子

if (empty($_GET['page'])) {
   header("HTTP/1.0 400 Bad Request", true, 400);
   exit('400: Bad Request');
} else {
   // code from current track.php

}
于 2013-06-27T13:43:38.537 回答
0

您可以在以下帮助下停止用户session

    session_start();
    $_SESSION['user'] = 1;

    if(!isset($_SESSION['user'])) {
    header("location:links.php");
    }else {
// your insert query
}
于 2013-06-27T13:43:36.470 回答