【发布时间】:2010-09-29 17:58:46
【问题描述】:
所以,我一直在尝试修复远程访问页面上的 php 脚本。最初,如果站点可用,它将使用 fopen to。如果是,用户将被定向到该站点,如果它关闭,则将测试下一个 url,如果成功则用户重定向到那里等等。
出于安全原因,我们的新共享主机站点不允许 fopen,因此必须修改脚本。我已经尽力拼凑一些东西,但觉得我错过了一些东西,可能是非常基本的。
脚本是三个简单的 php 文件。第一个是 index.php(它在 Joomla 上运行,所以我假设它必须这样设置),它看起来像这样:
<?php
error_reporting(E_ALL);
ini_set('display_errors',TRUE);
$counter = 1;
include ("URLs.php");
include ("functionscript.php");
error_reporting(0);
while ( $counter <= 5 ) {
$webURL = "URL".$counter;
redirectIfValid( ${"URL".$counter} );
$counter = $counter + 1;
}
?>
URLs.php 只是按顺序尝试的 4 个站点的列表。 functionscript.php 是我认为的主要内容,并且我已经尝试过使用 CURL 而不是 fopen 进行黑客攻击:
<?
function redirectIfValid($webURL)
{
ini_set("default_socket_timeout","05");
set_time_limit(5);
$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL, $webURL);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch,CURLOPT_VERBOSE,false);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$page=curl_exec($ch);
//echo curl_error($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300) return true;
else return false;
if($httpcode==true) {
header('Location:'.$webURL);
exit;
}
else {
}
}
?>
这个 scipt 运行的最终结果是 zip。如果我右键单击并查看加载页面上的源代码,它只会在页面下方显示“1、2、3”。我确信我错过了一些非常简单的东西,但我的编程能力简直是垃圾,如果有人关注这一点,我将不胜感激。我认为 curl 的东西应该没问题,但想知道我是否缺少 index.php 和 functionscript.php 之间的一些空白链接。
编辑:因此,在阅读了下面的 Belindas 建议后,我更改了代码以阅读此内容(我只打印了已更改的所有行都在脚本末尾):
if($httpcode>=200 && $httpcode<300) {
header('Location:'.$webURL);
exit;
}
else {
}
}
?>
尽管奇怪的是,当您查看源代码时,现在要在前面提到的“1、2、3”中添加一个“4”,代码似乎仍然失败了。我只能认为这是积极的!有没有人有更多的宝石可以寄给我,因为我必须承认我发现这是一次真正的考验,虽然很愉快。
【问题讨论】: