Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Fsockopen (https://forum.antichat.xyz/showthread.php?t=168938)

In.Exploit 07.01.2010 13:00

Fsockopen
 
Открываю я сокет с помощю
fsockopen()
Подключаюсь к сайту. Как проверить какой ответ отдаёт вервер?
Ну если статус 200! то продолжить.

или же сокет сам закрывается когда ответ приходит отличный от 200?

тогда
$fp = fsockopen()
if (!$fp) {
die("файла на удалённом сервере нет");
}

b3 07.01.2010 13:14

PHP код:

$fp fsockopen("udp://127.0.0.1"13$errno$errstr); 

$errno, $errstr, http://ua2.php.net/fsockopen почитай полностью про функцию.

Gifts 07.01.2010 14:15

In.Exploit по секрету - с помощью ТОЛЬКО fsockopen - можно проверить ТОЛЬКО работоспособность порта на сервере. Как проверить наличие файла - вам отписали в предыдущем топике. Вы еще отмахнулись, мол, вам не нужен кот после !$fp

Заканчивайте плодить темы, для нубских вопросов - есть выделенный топик про пхп

AFoST 07.01.2010 19:40

fsockopen открывает только сокет. через сокет вдальнейшем можно передать инфу. чтобы узнать есть ли на удалённом сайте(соединение с которым ты открыл) файл, нужно отправить http - запрос к нему. тогда уже вернётся код(200/404/...) от сервера.
для этой цели имхо curl легче и лучше. там можно одни заголовки ловить.

vvs777 08.01.2010 00:20

получите и распишитесь. запросы и что делать с ответом думаю сами замените
PHP код:

    if($s=fsockopen($proxy,$prprt))
    
//if($s=fsockopen("ui.bigmir.net",80))
    
{
$strp="GET http://ui.bigmir.net/gen/rnd/".$capt.".png HTTP/1.0
Accept: */*
Cookie: "
.$cookie."
"
.$ua."
Referer: http://passport.bigmir.net/icq/
Host: ui.bigmir.net
Connection: Close\r\n\r\n"
;
        
fputs($s,$strp);
        
$out="";
        while(!
feof($s))
        {
            
$out.=fgets($s,1024);
        }
        
$pos=strpos($out,"\r\n\r\n");
        
$caca=trim(substr($out,$pos+1));
        
$fp=fopen("./cap.png","w");
        
fwrite($fp,$caca);
        
fclose($fp);
        
//echo $caca;
        
if (strstr("$caca","GIF89"))
        {
            
$fp fopen("./cap0.png"'rb' );
            
fpassthru($fp);
            @
fclose($fp);
            die();
        }

        
$fp fopen("./cap.png"'rb' );
        
fpassthru($fp);
        @
fclose($fp);
    }
    else
    {
        if (
$dev!=0) echo "Can't open socket to server in getIMG!";
        die();
    } 

это из древнего реггера асек через бигмир, который я однажда починил и юзал втихаря :D

b3 08.01.2010 01:18

Вот несколько примеров получения Заголовков:
Sockets
PHP код:

<?php
$fp 
= @fsockopen("forum.antichat.ru"80$errno$errstr3);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET /bn/evapharmacy.gif HTTP/1.1\r\n";
    
$out .= "Host: forum.antichat.ru\r\n";
    
$out .= "Connection: Close\r\n\r\n";
    
fwrite($fp$out);
    
    while (!
feof($fp)) {
        @
$data .= fread($fp1024*5);
    }
    
fclose($fp);
    list(
$headers$body) = explode("\r\n\r\n"$data);
    echo 
$headers;    
    
}
?>

cURL
PHP код:

<?php
$ch 
curl_init('http://2forum.antichat.ru/bn/evapharmacy.gif');
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_NOBODY1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_TIMEOUT3);
$res curl_exec($ch);
$errno curl_errno($ch);
$error curl_error($ch);
curl_close($ch);
if(
$errno 0)
echo 
$errno.':'.$error;
else echo 
$res;
?>

get_headers
PHP код:

<?php
$headers 
get_headers('http://forum.antichat.ru/bn/evapharmacy.gif');
foreach (
$headers as $k => $v) {
echo 
'['.$k.'] => '.$v.'<br>';
}
?>


Pashkela 08.01.2010 01:23

Простите, можно поинтересоваться, почему в этой строчке:

@$data .= fread($fp, 1024*5);

стоит собачка и 1024*5? Правда интересно

b3 08.01.2010 01:27

Цитата:

@$data .= fread($fp, 1024*5);
Как видиш дата дописывается а т.к. переменная небыла прежде создана пыха выдаст Нотайс.
Цитата:

1024*5
Привычка записи такая, почему именно по 5кб, моё оптимальное решение


Время: 09:10