10/10/2018, 09:51
PHP: hỏi về fsockopen
Bít cái này cũng lâu rồi. Nhưng nay mới có dịp ứng dụng thực sự. Nhưng khi test vướng phải một vài lỗi mà chẳng bít tại sao.
Tôi dùng hàm này để get 1 trang html về:
Nhưng sao nó toàn ra kết quả gì ko:
Bác nào có kinh nghiệm cái này chia sẻ tui chút xíu. Lục tung google lên mà vẫn chưa ổn.
Thanks!
Tôi dùng hàm này để get 1 trang html về:
PHP Code:
<?
$current_url="www.ddth.com";
$current_dir="www.ddth.com/showthread.php?p=1862580";
$fp = fsockopen ($current_dir, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>
";
} else {
fputs ($fp, "GET / HTTP/1.0
Host: ".$current_url."
");
while (!feof($fp)) {
$current_url_content.=fgets ($fp,128);
}
fclose ($fp);
}
echo $current_url_content;
?>
Code:
HTTP/1.0 302 Found Location: http://guide.opendns.com/?url=www.ddth.com Content-type: text/html Content-Length: 0 Connection: close Date: Sat, 17 Oct 2009 03:19:39 GMT Server: OpenDNS Guide
Thanks!
Bài liên quan
$fp = fsockopen ($current_dir, 80, $errno, $errstr, 30);
Thành
$fp = fsockopen ($current_url, 80, $errno, $errstr, 30);
$url = 'http://www.ddth.com/showthread.php?p=1862580';
$string = file_get_contents($url);
$hostname = 'www.ddth.com';
$request = '/showthread.php?p=1862580';
if(!($fp = fsockopen($hostname, 80, $errno, $errstr))) {
echo 'Could not connect to DDTH! Error number: ' . $errno . '(' . $errstr . ')';
} else {
$getString = "GET {$request} HTTP/1.0\r\nConnection: close\r\n\r\n";
fputs($fp, $getString);
$buffer = '';
while(!feof($fp)) {
$buffer .= fgets($fp, 128);
}
fclose($fp);
echo $buffer;
}
http://php.net/curl
Bao gồm cả response header + body
Cái ông cần chỉ là body thì xử lí chuỗi thôi, tìm kí tự "\r\n\r\n" đầu tiên rồi lấy dữ liệu từ đó đi thì sẽ ra html content (trg trường hợp này)
Sao giờ........
Nếu dùng được curl là tốt, đơn giản
Còn nếu không dùng được curl, phải dùng fsockopen thì tham khảo cái file http.php của thằng rapidleech! Nó viết chuối (php + html + js lẫn lộn) những cũng đáng để đọc
Trước kia khi chưa biết gì, mình thường dùng flashget down cái trang cần lấy nội dung để xem request của flashget gồm các thông số gì. Áp vào, thế là xong
<?
$num = 122424242;
echo number_format($num, "", "", ",");
?>