2013-06-27 48 views
1

links.php直接享受有以下代码:PHP防止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.部分从网址我可以修改我的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"); 
+1

号有一切的方式。你可以混淆它。但是你不能阻止它。 –

+1

http://stackoverflow.com/questions/1408538/what-c​​hecks-to-use-to-prevent-direct-access-to-pages-using-php?rq=1 – matino

+0

http://stackoverflow.com/questions/1044643/php-prevent-direct-access-to page –

回答

4

帮助你不能直接访问它阻止别人,因为这将需要为您的链接,W网络访问ork,但是您可以处理URL查询字符串不包含页面参数的异常。

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

} 
+0

谢谢大家,这个符合我的要求 – bickyz

+0

我对于其他问题的道歉: – bickyz

0

您可以用停止用户的session

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

    if(!isset($_SESSION['user'])) { 
    header("location:links.php"); 
    }else { 
// your insert query 
} 
+1

这是危险的,因为用户会话可能会受到其他用户的妥协 –