【问题标题】:Check if server running script?检查服务器是否运行脚本?
【发布时间】:2013-08-05 02:52:05
【问题描述】:

您好,我有一个执行以下操作的脚本:

if(isset($_GET['reloadImages']))
{
    echo "<img src='site.com/image.jpg' />";
    exit;
}

发生在 index.php?reloadImages 上

我现在有一个基于这些图像更新的 ajax 请求:

$('#ImageDiv').load('index.php?reloadImages');

这在加载图像时效果很好,但我需要知道的是你是否可以设置像

这样的变量
if(SCRIPT_RUNNER == SERVER)

这样当系统转到 index.php?reloadImages 时它仍然会检索图像,但当用户通过 Web 浏览器中的 url 导航到那里时不会检索图像

这可能吗?

【问题讨论】:

  • 我猜你的意思是echo '&lt;img src="site.com/image.jpg" /&gt;'; ?
  • PHP 始终由服务器运行,在这两种情况下,它都会根据浏览器的请求运行。所以,不,不是你描述的方式。我可以想象有几种方法可以让直接打开页面变得更加困难,但没有什么比这更简单的了,也可能没有什么是不能被愚弄的。无论如何,用户直接打开页面有什么不好?
  • 当系统进入 index.php?reloadImages - 系统是什么
  • @MajidFouladpour,如果我理解正确的话,他希望一个页面只能由他的 AJAX 脚本打开,而不是由用户直接导航到它。
  • @ironcito,啊,如果是这样,那么:davidwalsh.name/detect-ajax

标签: php


【解决方案1】:

首先找到请求链接的机器的IP地址:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
   $ip = $_SERVER['HTTP_CLIENT_IP']; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
   $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
   $ip = $_SERVER['REMOTE_ADDR'];
}

现在 $ip 是请求机器的 IP 地址。 假设您的计算机 IP 是 123.456.789.1(类似)

让我们把它赋给一个变量

$server_ip  = "123.456.789.1";

现在

if($ip == $server_ip && isset($_GET['reloadImages'])){
   echo "<img src=\"site.com/image.jpg\" />";
   exit;
}
else{
   echo "Sorry! you cannot see";
}

【讨论】:

  • 啊聪明!我也可以这样做吗? if($_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR'])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
相关资源
最近更新 更多