PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
qw334353
New Member
 

加入日期: Feb 2007
文章: 3
PHP新手一問

小弟需要一段PHP來確認網路上某個檔案是否存在,所以開啟一個socket連結,使用HEAD

語法如下:
$fp = fsockopen ("網址", 80, &$errno, &$errstr,10);
fputs ($fp, "HEAD / HTTP/1.0\r\n\r\n");
while (!feof($fp)) { echo fgets ($fp,128); }
fclose ($fp);

測試tw.yahoo.com.tw
回應是HTTP/1.1 200 OK

但是測試www.pcdvd.com.tw
卻回應HTTP/1.1 404 Not found

使用GET /index.php也一樣HTTP/1.1 404 Not found

www.yam.com亦同

有一個相同點是Server: Zeus

但有些Microsoft-IIS/5.0的站也有同樣的情形

是我的語法問題或對方伺服器設定的關係?
有何其他更好的方法嗎?
謝謝
     
      
__________________
-
舊 2007-04-29, 10:20 PM #1
回應時引用此文章
qw334353離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
你有沒把 HEAD 改成 HTTP Request GET 試過?
我記得取 errno 與 errstr 應該不需要用到 reference。
我三四年沒碰 PHP 了,以下寫法沒測試過,你自己試吧。
代碼:
$domain = "www.pcdvd.com.tw";
$port = 80;
$timeout = 30;
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $domain\r\n";
$out .= "Connection: Close\r\n\r\n";
$fp = fsockopen ($domain, $port, $errno, $errstr, $timeout);
fputs ($fp, $out);
while (!feof($fp)) { echo fgets ($fp,128); }
fclose ($fp); 
 
__________________
滿招損 謙受益
舊 2007-04-30, 12:25 AM #2
回應時引用此文章
darkangel離線中  
qw334353
New Member
 

加入日期: Feb 2007
文章: 3
引用:
作者darkangel
你有沒把 HEAD 改成 HTTP Request GET 試過?
我記得取 errno 與 errstr 應該不需要用到 reference。
我三四年沒碰 PHP 了,以下寫法沒測試過,你自己試吧。

$domain = "www.pcdvd.com.tw";
$port = 80;
$timeout = 30;
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $domain\r\n";
$out .= "Connection: Close\r\n\r\n";
$fp = fsockopen ($domain, $port, $errno, $errstr, $timeout);
fputs ($fp, $out);
while (!feof($fp)) { echo fgets ($fp,128); }
fclose ($fp);



測試後正確,大大三四年沒碰依舊熟練喔,在此拜謝

(王建民第二次先發 洋基VS紅襪開打了喔)
__________________
-
舊 2007-04-30, 01:10 AM #3
回應時引用此文章
qw334353離線中  
twu2
Power Member
 

加入日期: Jan 2002
您的住址: Taipei
文章: 664
直接用 curl 抓吧. 使用簡單, 功能用強.
__________________

Tommy 碎碎念...
舊 2007-04-30, 08:52 AM #4
回應時引用此文章
twu2離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者twu2
直接用 curl 抓吧. 使用簡單, 功能用強.


你的想法是對的,但是不是所有裝 php 的機器都會裝 curl extension。
我碰過有人沒有現成 api/library 可以用又要做 web service,後來我直接跑 socket 幫他們解決問題。
很多現在的商業網站都是用較舊的系統在運作的,你不可能要求對方裝 .net 或什麼 extension。
能用現有資源解決問題才是正途。
__________________
滿招損 謙受益
舊 2007-04-30, 03:55 PM #5
回應時引用此文章
darkangel離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者qw334353
測試後正確,大大三四年沒碰依舊熟練喔,在此拜謝

(王建民第二次先發 洋基VS紅襪開打了喔)


解決你的問題就好了,其實那個是拿 manual 跟你的 code copy/paste 後修的,我根本沒試過。
王40又敗投了,洋基最近牛棚都是提油上場的,悶了。
__________________
滿招損 謙受益
舊 2007-04-30, 04:03 PM #6
回應時引用此文章
darkangel離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是12:21 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2026。