所以,我一直在努力修复我们在远程访问页面上的PHP脚本。如果网站可用,最初它会使用fopen。如果是用户将被定向到该站点,如果它被关闭,则下一个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是我想要的东西的主要肉和蔬菜,我尝试用我的DAB手攻击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”。我确信我已经错过了一些简单的东西,但我的编程能力只是羞于垃圾,并且会感激有人盯着这个。我认为卷曲的东西应该没关系,但想知道我是否错过了index.php和functionscript.php之间的一些差距。
编辑:所以在阅读下面的Belindas建议之后,我已经更改了代码以阅读此内容(我只打印了已更改的行,这些行都在脚本的末尾):
if($httpcode>=200 && $httpcode<300) {
header('Location:'.$webURL);
exit;
}
else {
}
}
?>
代码似乎仍然有些失败但奇怪的是,现在要在查看源代码时向页面下方的“1,2,3”添加“4”。我只能认为这是积极的!有没有人可能有更多的宝石,他们可以发送我的方式,因为我必须承认我发现这是一个真正的考验,虽然是一个愉快的考验。
答案 0 :(得分:0)
将无法访问标头语句,因为您在到达之前返回true或false。而不是在httpcode上返回200到300之间的真正重定向。不确定这是否会解决它但应该有所帮助。
答案 1 :(得分:0)
添加此项,curl将遵循服务器指示:
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1);