如果网站想要读取另一台主机上的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 ?>
依此类推,这样就能读取远端的内容并分割成多笔变数来应用了。