Показать сообщение отдельно

  #18  
Старый 17.05.2010, 23:41
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
С нами: 8557551

Репутация: 56
Talking

Цитата:
Сообщение от LStr1ke  
При base64 строка увеличиться в несколько раз, а метод GET при отправки большого количества данных какбе не лучший вариант.

^_WhitE_DeMoN_^, Ты сокетами, надеюсь, отправлял заголовки?
я об этом и говорю, что заголовки ппц будут


^_WhitE_DeMoN_^, написл для тебя функцию с коментами. Если не новиш в php, то дальше сам разрулишь
(функцию можешь не изучать, просто используй как надо, хотя в ней многое не учтено, но для простых запросов хватит)

PHP код:
function HTTP_request($serv='127.0.0.1'$port=80$timeout=30$host='localhost'$addr='/index.php'$post=null$cookies=null){
    
$str='';$heads='';
    if(
is_array($post))if(count($post)>0){
        
$method='POST';
        
$str.="\r\n\r";
        foreach(
$post as $k=>$v){
            
$str.='&'.$k.'='.urlencode($v);
        }
        
$str{4}="\n";
        
$heads.="\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ".(strlen($str)-4);
    }
    if(!isset(
$method)){
        
$method='GET';
        
//$heads.="\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        
$str="\r\n\r\n";
    }
    if(
is_array($cookies))if(count($cookies)>0){
        
$cook="\r\nCookie: ";
        foreach(
$cookies as $k=>$v){$cook.=$k.'='.urlencode($v).'; ';}
        
$heads.=substr($cook,0,-2);
    }
    if(
false!=($f=@fsockopen($serv$port$errno$errstr$timeout))){
        
$ss='';
        
fputs ($f"$method $addr HTTP/1.1".$heads."\r\nHost: $host\r\nConnection: close".$str);
        while (!
feof($f)) {
            
$ss.=fgets($f512);
        }
        
fclose($f);
    }else return array(
false$errstr);
    return array(
true$ss); 
}    
// вернёт массив 0=>сокет сконнектил 1=> если не сконнектил, то текст ошибки, иначе овтет сервера

//////////////////////////
//////
$serv='127.0.0.1';    // IP или домен сервера
$port=80;            // порт
$host='localhost';    // Что передавать в заголовке HOST
$addr='/index.php';// Адрес до страницы на сайте
$timeout=30;    // таймаут соединения
$post=array();    // массив с переменными в формате ($var1 => $value1, $var2 => $value2...) {в $var# желательно использовать только латину}
$cookie=array();// cookies заполняется аналогично $post

print_r(HTTP_request($serv$port$timeout$host$addr$post$cookie)); 

Последний раз редактировалось roxblnfk; 18.05.2010 в 00:12.. Причина: добавил куки, таймлимит сдвинул влево, чтоб не мешался :) поставил пробелы, а то принудитльно ставятся форумом где не надо
 
Ответить с цитированием