如果網站想要讀取另一台主機上的php檔,並存成變數使用,最常用的方法是使用PHP的file_get_contents()函數
$test = file_get_contents('http://test.com/test.php');
echo $test;
但是這方法有一個問題,就是php.ini必須啟用allow_url_include才行,通常虛擬主機這項設定是關閉的,如果開啟也會有安全性的疑慮,所以建議使用curl_init()函數來讀取遠端的檔案,方法如下:
如果curl_init()也沒啟用可以參考以下ˇ方法來啟用curl_init()功能
1、修改php.ini,將extension=php_curl.dll 這一行前面的註釋去掉。
2、將PHP安裝目錄下的libeay32.dll、ssleay32.dll兩個文件拷貝到c:\windows目錄中。
3、重新啟動Apache。
遠端檔案test.php
<?php
$id=(empty($_REQUEST['id']))?"":$_REQUEST['id']; //接收引入端網站的GET變數
if($id==test){ //加上判斷以防止別人也亂引入
$content="這是遠端的檔案中文字內容";
echo $content;
}
?>
其中變數部分如果想要更安全,可以用MD5加密,主要就是防止檔案被其他不相關的人也拿來引入
本機檔案includetest.php
<?php
$localhostcontent = curl_init();
curl_setopt($localhostcontent , CURLOPT_URL, 'http://test.com/test.php?id=test);
curl_setopt($localhostcontent, CURLOPT_HEADER, false); //不顯示內容改存變數
curl_setopt($localhostcontent, CURLOPT_RETURNTRANSFER,1);
$localhostcontent=curl_exec($localhostcontent);
curl_close($localhostcontent); //關閉遠端連線
echo $localhostcontent; //輸出內容為'這是遠端的檔案中文字內容'
?>
如果遠端有多個變數內容要讓本機端讀取並存成各別變數,可以修改遠端的文字內容,用,分開
遠端檔案test.php
<?php
$id=(empty($_REQUEST['id']))?"":$_REQUEST['id']; //接收引入端網站的GET變數
if($id==test){ //加上判斷以防止別人也亂引入
$content="文字內容1,文字內容2,文字內容3"; //用,隔開
echo $content;
}
?>
然後本機端使用PHP的preg_split();函數吧,切割成陣列如下:
<?php
$localhostcontent = curl_init();
curl_setopt($localhostcontent , CURLOPT_URL, 'http://test.com/test.php?id=test);
curl_setopt($localhostcontent, CURLOPT_HEADER, false); //不顯示內容改存變數
curl_setopt($localhostcontent, CURLOPT_RETURNTRANSFER,1);
$localhostcontent=curl_exec($localhostcontent);
curl_close($localhostcontent); //關閉遠端連線
$localhostcontent=preg_split('/,/',$localhostcontent);
echo $localhostcontent[0]; //輸出 文字內容1
echo $localhostcontent[1]; //輸出 文字內容2
echo $localhostcontent[2]; //輸出 文字內容3
?>
依此類推,這樣就能讀取遠端的內容並分割成多筆變數來應用了。
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言