当前位置:首页 » 编程语言 » php读取远程文件

php读取远程文件

发布时间: 2022-11-21 00:57:57

‘壹’ php 网络开发详解之远程文件包含漏洞

以下代码(Code)实现了根据浏览器地址栏参数的文件名称包含不同文件的功能。
复制代码
代码如下:
<?php
$file_name
=
$_GET["filename"];
//获得当前文件名
include("$file_name
");
//包含文件
//一些其他操作
?>
这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能。例如,通过在浏览器上访问http://localhost/test.php?filename=myinc.php就可以在代码(Code)中包含并执行myinc.php文件。
由于上面的代码(Code)没有进行任何错误处理,在浏览器上不加参数运行,所以将得到以下运行结果。
Warning:
include(.php)
[function.include]:
failed
to
open
stream:
No
such
file
or
directory
in
C:\Program
Files\xampp\htdocs\Bugs\test6.php
on
line
3
Warning:
include()
[function.include]:
Failed
opening
'.php'
for
inclusion
(include_path='.;C:\Program
Files\xampp\php\pear\')
in
C:\Program
Files\xampp\htdocs\Bugs\test6.php
on
line
3
访问者通过读取这段错误信息,可以得知当前的操作是一个文件包含操作。这时,可以在自己的服务器上放置一个相应的脚本代码。需要注意的是PHP在获取远程文件时获得的是远程服务器的最终输出结果,而不是文件本身。该脚本代码位于192.168.0.1服务器上,文件名为hello.txt,脚本代码(Code)如下所示。
复制代码
代码如下:
<?php
echo
"hello
world!";
?>
这时,通过在浏览器中访问http://localhost/test.php?filename=http://192.168.0.1/hello.txt就可以运行hello.txt中的脚本了。
为了解决这个问题,一种方式是完善代码的错误信息,使访问者无法知道当前脚本正在包含参数中指定的文件。修改后的代码(Code)如下所示。
复制代码
代码如下:
<?php
$file_name
=
$_GET["filename"];
//获得当前文件名
if(!@include("$file_name.php"))
//包含文件
{
die("页面在浏览过程中出现错误");
}
//一些其他操作
?>
修改后,如果在被包含的文件无法找到时将出现“页面在浏览过程中出现错误”的错误信息,访问者将无法获得当前页面的具体操作信息。
第二种方式可以更加有效地防止远程文件包含攻击。方式是替换地址栏参数中的斜线“/”。这样,在地址栏参数中输入远程文件地址时,代码将无法正确地获得参数。修改后的代码(Code)如下所示。
复制代码
代码如下:
<?php
$file_name
=
str_replace('/',
'',
$_GET["filename"]);
//获得当前文件名
if(!@include("$file_name.php"))
//包含文件
{
die("页面在浏览过程中出现错误");
}
//一些其他操作
?>
这样,在浏览器中访问http://localhost/test.php?filename=http://192.168.0.1/hello.txt
时,实际上PHP代码(Code)获得的包含文件名称是http:192.168.0.1bugstest6_test。页面将不会包含远程文件,并显示相应的错误信息。

‘贰’ PHP远程读取excel文件,怎么读取

先用file_get_contents
或者curl把文件取回来
用phpexcel打开即可

‘叁’ 用php如何获取远程的xls表格文件地址,并将它下载到本地

写段伪代码给你:

//先获取远程网页的源代码
$html=file_get_contents(http://mp3..com/歌曲播放页.html);

//用正则表达式分析源代码中的资源链接
$link=preg_match_all(正则)...

//读取资源文件
$bin=file_get_contents(http://mp3..com/时间都去哪了.mp3);

//保存资源文件到本地
$fp=fopen(时间都去哪了.mp3,wb)
$fp.writh($bin);
$fp.close();


先说好,不要让我写完整的源代码,因为这里还涉及一些细节,比如说,你才提供的 xls ,就是需要登录的,那么你还要实现模拟登录。

有些网站的资源链接有各种限制,需要你慢慢去深入。

‘肆’ 请问php如何像打开本地文件一样打开远程ftp服务器上的文件

<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:[email protected]/somefile.txt", "w");
?>
这样不就好了,
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

之后你就可以直接查询php的手册 ,,fopen fwrite file_get_content file_put_content 这几个函数就好了

‘伍’ php读取远程xml文件简单方法

<?php
set_time_limit(0);
function_rand(){
$length=26;
$chars="";
$max=strlen($chars)-1;
mt_srand((double)microtime()*1000000);
$string='';
for($i=0;$i<$length;$i++){
$string.=$chars[mt_rand(0,$max)];
}
return$string;
}
$HTTP_SESSION=_rand();
$HTTP_SESSION;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather?&theUserID=&theCityCode=贵港");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)");
$res=curl_exec($ch);
curl_close($ch);
//print_r($res);
$xml_array=simplexml_load_string($res);
//www.hi-docs.com/php/simplexml_load_string.html
foreach($xml_arrayas$tq){
echo$tq;
}
?>

‘陆’ 用PHP怎么获取远程文件文件类型

1.图片文件可以使用getimagesize函数。
2.其他文件可以解析文件的后缀。

‘柒’ 如何用PHP获取远程大文件的大小

1、用file_get_contents或者fopen、file、readfile等函数读取url的时候,会创建一个名为$http_response_header的变量来保存http响应的报头.
示例代码一:
[php]viewplain<?php$url='http://www..com';$html=file_get_contents($url);print_r($http_response_header);//输出结果Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:51:01GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:51:01GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:51:01GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)?>2、使用fopen等函数打开的数据流信息可以用stream_get_meta_data来获取。示例代码二:[php]viewplain<?php$fp=fopen($url,'r');print_r(stream_get_meta_data($fp));fclose($fp);//输出结果Array([wrapper_data]=>Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:54:22GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:54:22GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:54:22GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)[wrapper_type]=>http[stream_type]=>tcp_socket[mode]=>r[unread_bytes]=>0[seekable]=>[uri]=>http://www..com[timed_out]=>[blocked]=>1[eof]=>)?>3、get_headers()也可以获取请求url的响应报文。示例代码三:[html]viewplain<?phpprint_r(get_headers($url));Array([0]=>HTTP/1.1200OK[1]=>Date:Tue,06Nov201208:58:41GMT[2]=>Server:BWS/1.0[3]=>Content-Length:9803[4]=>Content-Type:text/html;charset=gbk[5]=>Cache-Control:private[6]=>Expires:Tue,06Nov201208:58:41GMT[7]=>Set-Cookie:BAIDUID=:FG=1;expires=Tue,06-Nov-4208:58:41GMT;path=/;domain=..com[8]=>P3P:CP="OTIDSPCORIVAOURINDCOM"[9]=>Connection:Close)?>4、php5中新增的参数context使这些函数更加灵活,通过它我们可以定制http请求,甚至post数据。

‘捌’ 用php程序自动读取远程文件并更新到本地,每天一次,如何做

windows:
准备:
1.将 php.exe 的路径加入 windows 的环境变量
2.编写文件:
D:\fileGeter.php
<?php
$filelist = Array(
"http://**********/a.txt",
"http://**********/b.txt",
);

$saveas="D:\\" ;
$endl = ".txt"

function getfile(){
foreach( $filelist as $k => $file )
file_put_contents( $saveas . $k . $endl , file_get_contents( $file ) ) ;
}
getfile();
?>
3.执行cmd命令
at 11:20 /every:1,2,3,4,5,6,7 "php D:\fileGeter.php"

linux 更方便

直接把此文件包含进 你要写的程序里就OK了,

fileGeter.php:
<?php
...
...
$saveas = "./";
...
..

?>
index.php:
<?php
require_once("fileGeter.php");
//and so on .....
.....
....
....
?>

‘玖’ php获取远程文件的大小

本文实例讲述了php获取远程文件大小的方法,分享给大家供大家参考。具体实现方法如下:
/*
**功能:获取远程文件的大小,返回值的单位是:字节
*/
function
get_fileSize($url){
if(!isset($url)||trim($url)==''){
return
'';
}
ob_start();
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_NOBODY,1);
$okay=curl_exec($ch);
curl_close($ch);
$head=ob_get_contents();
ob_end_clean();
$regex='/Content-Length:\s([0-9].+?)\s/';
$count=preg_match($regex,$head,$matches);
return
isset($matches[1])&&is_numeric($matches[1])?$matches[1]:'';
}
希望本文所述对大家的php程序设计有所帮助,大家能够喜欢小便的文章,大家共同进步。

‘拾’ PHP远程读取excel文件,怎么读取

PHPExcel 通过 PHPExcel_Shared_OLERead 类的 read 方法读取文件
但 read 方法里使用了 is_readable 函数来确认文件是否存在,而 is_readable 不能作用于 url
所以不可直接远程读取
但若绕过 is_readable 函数的话,就是可以的
public function read($sFileName)
{
// Check if file exists and is readable
if(!is_readable($sFileName)) {
throw new Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable.");
}

// Get the file data
$this->data = file_get_contents($sFileName);

热点内容
apkso反编译 发布:2025-01-15 23:53:20 浏览:4
买的腾讯服务器是装在电脑上吗 发布:2025-01-15 23:25:58 浏览:411
如何查看电脑的配置是不是i5 发布:2025-01-15 23:24:21 浏览:434
PI数据库 发布:2025-01-15 23:14:42 浏览:882
我的世界手机版暖心服务器 发布:2025-01-15 23:05:02 浏览:169
xts压缩比 发布:2025-01-15 23:02:41 浏览:424
怎么看联系人存储位置 发布:2025-01-15 22:47:14 浏览:794
旗舰560配置的是什么发动机 发布:2025-01-15 22:40:59 浏览:626
sql多表连接查询 发布:2025-01-15 22:33:12 浏览:221
android网络休眠 发布:2025-01-15 22:32:12 浏览:350