網站讀取另一台主機上php檔案的方法

如果網站想要讀取另一台主機上的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


留言

這個網誌中的熱門文章

jquery.datepicker下拉月曆只顯示年-月的設定方法-教學撰寫:徐嘉裕Neil hsu

在CentOS7上安裝XAMPP並設定允許外部連線phpmyadmin的方法-教學撰寫:徐嘉裕Neil hsu

jQuery用.each()取代for迴圈