我們要先明白一個概念,什麼是跨域?例如a.com下面的a.js檔案呼叫b.com中的b.js檔案是就發生了跨域行為。瀏覽器出於對同源策略的保護會限制這種行為,當然也有解決的方案,大家可以使用搜尋引擎搜尋。而今天我們講的php是伺服器端語言,它是區別於瀏覽器的,屬於後端語言。它的跨域引用文件是如何實現的呢,本文提供一些方法,希望對需要的同學有所幫助。
首先我們假設這兩台主機的後台語言都是php,大家可以選擇兩台線上的環境,或是1台線上1臺本地環境,或使用虛擬機器(這個不是我們今天重點內容,請自行解決)。分別在兩個環境中建立a.php,b.php,程式碼如下:
a.php:
<?php echo '我是老A,呼叫老B,听到请回答:<br>'; /* 以下是源服务器的代码*/ /* 以上是源服务器的代码*/ ?>
b.php:
<?php header("Content-type:text/html;charset=utf-8"); echo "我是老B,叫我干嘛????";?>
分別使用瀏覽器存取a.php,b.php查看未設定之前的效果:
方法一:開啟a. php,輸入以下程式碼:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $str = file_get_contents($file_path); $str = str_replace("\r\n","<br />",$str); echo $str; /* 以上是源服务器的代码*/ ?>
重新造訪a.php,查看效果:
方法二:修改a.php,貼上以下程式碼:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $fp = fopen($file_path,"r"); $str = ""; $buffer = 1024; while(!feof($fp)){ $str .= fread($fp,$buffer); } $str = str_replace("\r\n","<br />",$str); echo $str; /* 以上是源服务器的代码*/ ?>
重新造訪a.php,查看效果:
#方法三:修改a.php ,貼上以下程式碼:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $file_path = "此处输入b.php的访问地址"; $file_arr = file($file_path); for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容 echo $file_arr[$i]."<br />"; } /* 以上是源服务器的代码*/ ?>
方法四:修改a.php,調整下列程式碼:
<?php echo '我是老a,呼叫老b,请回答:<br>'; /* 以下是源服务器的代码*/ $url = "此处输入b.php的访问地址"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout) $contents = curl_exec($ch); curl_close($ch); echo $contents; /* 以上是源服务器的代码*/ ?>##注意:使用curl的時候請確保php開啟了curl模組
#
以上是php如何跨域引入文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!