PHP fsockopen是一箇功能比較強大的函數。下面在這篇文章中我們將會對這個函數做一箇具體的介紹,希望對站長維護服務器有所幫助。
如果你要使用一些郵件的類,那麼很多要求支持php的fsockopen函數。但是很多主機商爲了服務器安全考慮禁用了php的fsockopen函數。它可以打開網絡的 Socket 鏈接。
語法: esuce fsockopen(sting hostnme, int pot, int [eno], sting [est], int [timeout]);
返回值: 資源;
函數種類: 網絡系統;
目前這個函數提供兩個 Socket 資料流界面,分別爲 Intenet 用的 AF_INET 及 Unix 用的 AF_UNIX。
在 Intenet 中,參數 hostnme 及 pot 分別代表網址及端口號。
在 UNIX 中,參數hostnme 表示到 socket 的路徑,pot 配置爲 0。timeout可省略表示多久沒有連
上就中斷。該函數返迴文件指針,供文件函數使用,包括 fgets()、fgetss()、fputs()、fclose()
feof()。參數 eno 及 est 可省略,做錯誤處理使用。該函數使用阻塞模式 (blocking mode) 處理,
可用 set_socket_blocking() 轉換成無阻塞模式。 fsockopen(主機名稱,端口號碼,錯誤號的接受變量,錯誤提示的接受變量,超時時間)
主機名稱:就是你需要發送數據的目的地;
端口號:就是這個目的程序會在哪個端口等着你的數據;
錯誤號的接受變量:這個是如果建立socket不成功的時候返回的錯誤編號;
錯誤提示的變量:是錯誤的時候返回的錯誤提示信息;
超時時間:就是post數據之後如果對方沒有回應信息,等待的最長時間。
一、Fsockopen函數的開啓方法
第一步
找到php.ini文件,用記事本打開,查找 llow_ul_fopen = 看看後面是 off 還on, 如果是on,直接看下一步,如果是off 那就修改成on,需要注意完整的是llow_ul_fopen = on等號的左右有空格。
llow_ul_fopen = on
第二步
繼續在php.ini文件中,查找,查找extension=php_openssl.dll 找到以後大家注意,extension=php_openssl.dll這段代碼前面會有個 ; 號,只要把這個 ; 號刪除,然後保存。
extension=php_openssl.dll
第三步
如果是IIS 就重啓IIS
如果是pche 就重啓pche
二、函數pfsockopen()也有相似的功能,只不過後者是一箇“持續&dquo;(pesistent)的fsockopen()函數,它在腳本運行完之後並不立即斷開。
fsockopen()函數以Socket模擬HTTP協議(POST)
可以進行類似真實的http操作,可用於採集,羣發論壇發帖等等。
fsockopen()函數的作用是可以用來打開一箇socket連接,另一箇函數pfsockopen()也有相似的功能,只不過後者是一箇“持續&dquo;(pesistent)的fsockopen()函數,它在腳本運行完之後並不立即斷開。
fsockopen()函數存在着比較大的安全問題,比如曾經就被黑客用來進行PHPDDOS攻擊,因此很多主機提供商禁用了這個函數。
那麼如何知道自己的主機提供商有沒有禁用這個函數呢?
我們可以在任意一箇網站目錄下新建一箇.php文件,在其中輸入如下代碼:
echo phpinfo();
?>
保存之後再在瀏覽器中訪問該頁面,可看到頁面中呈現的是當前PHP的配置信息,按Ctl+F搜索llow_ul_fopen或disble_functions,可以看到如下圖所示:
在llow_ul_fopen那一欄中,如果值爲On,並且disble_functions這個禁用函數列表中沒有fsockopen函數時,則表明fsockopen()函數是可以使用的,否則fsockopen()函數可能就被禁用了。
那如何才能啓用或禁用這個函數呢?
我們需要找到php.ini這個PHP配置文件,如果需要禁用,則需在其中進行如下修改:
.將llow_ul_fopen=On修改成llow_ul_fopen=Off
2.在disble_functions=後添加fsockopen
如果需要啓用,則只需進行相反操作。
以上就是PHP fsockopen函數的具體使用方法,供大家參考學習。