【问题标题】:PHP preventing direct access to a php pagePHP 阻止直接访问 php 页面
【发布时间】:2013-06-27 22:29:59
【问题描述】:

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。

非常感谢您的帮助,谢谢。


对于其他问题,我深表歉意: 如果我想从 url 中删除 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");

【问题讨论】:

标签: php html mysql


【解决方案1】:

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

例子

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

}

【讨论】:

  • 我为其他问题道歉:
【解决方案2】:

你可以在session的帮助下阻止用户

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

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

【讨论】:

  • 这很危险,因为用户会话可能会被其他用户破坏
猜你喜欢
  • 2010-11-05
  • 2010-09-16
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多