如果网站想要读取另一台主机上的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。远端php代码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
?>



依此类推,这样就能读取远端的内容并分割成多笔变数来应用了。


2023-06-20 11:06:14