導航:首頁 > 編程語言 > php遠程訪問文件

php遠程訪問文件

發布時間:2025-01-01 02:32:50

⑴ 用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 include能包含遠程文件嗎

如果要用fopen打開遠程文件,則此時最好檢查一下php.ini中的配置選項allow_url_fopen,如果為on則可以打開,否則不能打開。

⑶ 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 include 能包含遠程文件嗎

可以,但是需要修改配置程序。具體如下:

最好檢查一下php.ini中的配置選項allow_url_include,如果為on則可以包含,否則不能包含
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = Off

做個簡單的測試,此時allow_url_include的值為Off
測試前配置一下hosts文件,這樣可以在一台電腦上面進行模擬測試
192.168.1.101 www.test1.com
192.168.1.102 www.test2.com

path.php文件內容為:
<?php
echo "This is file path.php<br />\n";
include("http://www.test2.com/research/path/path.php");
?>

path1.php文件內容為:
<?php
echo "This is file path1.php in root directory\n";
?>
執行http://www.test1.com/research/path/path.php,輸出如下
This is file path.php

Warning: include() [function.include]: URL file-access is disabled in the server configuration in E:\myphp\research\path\path.php on line 3

Warning: include(http://www.test2.com/research/path/path.php) [function.include]: failed to open stream: no suitable wrapper could be found in E:\myphp\research\path\path.php on line 3

Warning: include() [function.include]: Failed opening 'http://www.test2.com/research/path/path.php' for inclusion (include_path='.;C:\php5\pear') in E:\myphp\research\path\path.php on line 3

將php.ini中的allow_url_include改為On,重新啟動web伺服器,再次執行http://www.test1.com/research/path/path.php,輸出如下:
This is file path.php
This is file path1.php in root directory
將allow_url_include設為On以後,就可以包含遠程文件了,並且包含的是遠程文件執行的結果。

閱讀全文

與php遠程訪問文件相關的資料

熱點內容
上海不動產權證怎麼加密碼 瀏覽:581
linux推薦版本 瀏覽:572
安卓網格布局有什麼特點 瀏覽:322
生化危機用什麼app看 瀏覽:914
布穀鳥搜索演算法matlab 瀏覽:136
伺服器的燈如何設置 瀏覽:862
單片機控制門流程圖 瀏覽:304
滬漂女程序員跳槽 瀏覽:306
百度石榴演算法指的是 瀏覽:782
怎麼將文件壓縮得盡可能小 瀏覽:447
linux開發常用命令 瀏覽:831
我的世界java版如何進入伺服器 瀏覽:897
如何把jpg轉換pdf格式 瀏覽:290
華為p10plus圖片加密 瀏覽:369
宏傑文件夾加密密碼忘了 瀏覽:620
dos命令rd 瀏覽:667
怎麼把wps上的演算法格式改了 瀏覽:806
微信文件文件夾網盤 瀏覽:842
html5pdf教程 瀏覽:648
android聊天鍵盤 瀏覽:914