$_POST

Discussion in 'PHP' started by barnaki, 29 Jan 2009.

  1. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    как при помощи php можно передать данные через post и get без форм ?
     
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?   
     function 
    get($url
        { 
            
    $ch curl_init();   
            
    curl_setopt($chCURLOPT_URL,$url); 
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208'); 
            
    curl_setopt($chCURLOPT_COOKIE"__utma=; __utmb=; __utmc=;__utmz=;");
            
    $ss=curl_exec($ch); 
            
    curl_close($ch); 
            return 
    $ss
        } 
        
    $a=get('http://www.rambler.ru'); 
       echo 
    $a;
    ?>
    про пост тут почитай:

    http://blog.mypapit.net/2006/02/sending-http-post-with-php-curl.html
     
  3. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    barnaki, состряпать своими руками HTTP-запрос к веб-серверу методом GET или POST, и отправить через сокеты.
     
  4. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Воспользуйся моим кодом...

    PHP:
    <?php

        define
    ("HTTP_GET",        0x0001);
        
    define("HTTP_POST",        0x0002);
        
    define("HTTP_HEAD",        0x0003);
        
    define("HTTP_PUT",        0x0004);
        
    define("HTTP_DELETE",    0x0006);
        
    define("HTTP_TRACE",        0x0007);
        
    define("HTTP_OPTIONS",    0x0008);
        
    define("HTTP_PROPFIND",    0x0009);

        
    define("HTTP_10",            0x0001);
        
    define("HTTP_11",            0x0002);



        if (!
    function_exists("curl_setopt_array")) {

           function 
    curl_setopt_array (&$curlHandler$curlOptions)
           {
               if (!
    is_array($curlOptions)) return false;

                foreach (
    $curlOptions as $option => $value) {
                    if (!
    curl_setopt($curlHandler$option$value))
                        return 
    false;
                }
                return 
    true;
            }

        }

        
        
        function 
    httpRequest ($requestMethod$requestVersion,
                                     
    $requestUrl$requestHeaders$requestBody$requestTimeout,
                                     
    $requestProxy,
                                    &
    $responseCode null, &$responseHeaders null, &$responseBody null,
                                    &
    $errCode null, &$errString null)
        {
            if (!
    is_integer($requestTimeout))
                return (
    $responseCode $responseHeaders $responseContent false);

            
    $urlData parse_url($requestUrl);

            if (!isset(
    $urlData["host"]))
                return (
    $responseCode $responseHeaders $responseContent false);

            if (!isset(
    $urlData["scheme"])) $urlData["scheme"] = "http";
            if (!isset(
    $urlData["path"])) $urlData["path"] = "/";
            if (!isset(
    $urlData["port"]) && $urlData["scheme"] == "http"$urlData["port"] = 80;
            if (!isset(
    $urlData["port"]) && $urlData["scheme"] == "https"$urlData["port"] = 443;

            switch (
    $requestMethod) {
                case 
    HTTP_GET :
                    
    $httpMethod "GET";
                break;

                case 
    HTTP_POST :
                    
    $httpMethod "POST";
                break;

                case 
    HTTP_HEAD :
                    
    $httpMethod "HEAD";
                break;

                case 
    HTTP_PUT :
                    
    $httpMethod "PUT";
                break;

                case 
    HTTP_DELETE :
                    
    $httpMethod "DELETE";
                break;

                case 
    HTTP_TRACE :
                    
    $httpMethod "TRACE";
                break;

                case 
    HTTP_OPTIONS :
                    
    $httpMethod "OPTIONS";
                break;

                case 
    HTTP_PROPFIND :
                    
    $httpMethod "PROPFIND";
                break;

                default :
                    return (
    $responseCode $responseHeaders $responseContent false);
                break;
            }

            switch (
    $requestVersion) {
                case 
    HTTP_10 :
                    
    $httpVersion "1.0";
                break;

                case 
    HTTP_11 :
                    
    $httpVersion "1.1";
                break;

                default :
                    return (
    $responseCode $responseHeaders $responseContent false);
                break;
            }

            if (isset(
    $urlData["query"]))
                
    $customRequest  sprintf("%s %s?%s HTTP/%s\r\n"$httpMethod$urlData["path"], $urlData["query"], $httpVersion);
            else
                
    $customRequest  sprintf("%s %s HTTP/%s\r\n"$httpMethod$urlData["path"], $httpVersion);

            
    $customRequest .= sprintf("Host: %s\r\n"$urlData["host"]);

            foreach (
    $requestHeaders as $header)
                
    $customRequest .= sprintf("%s\r\n"$header);

            if (
    $requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
                if (
    strlen($requestBody) > 0$customRequest .= sprintf("Content-Length: %s\r\n"strlen($requestBody));
                else return (
    $responseCode $responseHeaders $responseContent false);

            if (isset(
    $urlData["user"]) && isset($urlData["pass"])) {
                
    $authValue sprintf("%s:%s"$urlData["user"], $urlData["pass"]);
                
    $customRequest .= sprintf("Authorization: Basic %s\r\n"base64_encode($authValue));
            }

            
    $customRequest .= sprintf("Connection: close\r\n"$urlData["host"]);
            
    $customRequest .= "\r\n";

            if (
    $requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
                if (
    strlen($requestBody) > 0$customRequest .= sprintf("%s"$requestBody);
                else return (
    $responseCode $responseHeaders $responseContent false);

            
    $curlHandler curl_init();

            
    $curlOptions = array (
                
    CURLOPT_URL                    =>    sprintf("%s://%s"$urlData["scheme"], $urlData["host"]),
                
    CURLOPT_PORT                =>    $urlData["port"],
                
    CURLOPT_TIMEOUT            =>    $requestTimeout,
                
    CURLOPT_CUSTOMREQUEST    => $customRequest,
                
    CURLOPT_FOLLOWLOCATION    => true,
                
    CURLOPT_HEADER                => true,
                
    CURLOPT_RETURNTRANSFER    => true,
                
    CURLOPT_FAILONERROR        => false,
                
    CURLOPT_VERBOSE            => false,
                
    CURLOPT_NOPROGRESS        => true
            
    );

            if (
    $urlData["scheme"] == "https") {
                
    $curlOptions[CURLOPT_SSL_VERIFYPEER] = false;
                
    $curlOptions[CURLOPT_SSL_VERIFYHOST] = false;
            }

            if (
    $requestMethod == HTTP_HEAD || $requestMethod == HTTP_OPTIONS || $requestMethod == HTTP_DELETE)
                
    $curlOptions[CURLOPT_NOBODY] = true;
            else
                
    $curlOptions[CURLOPT_NOBODY] = false;

            if (!
    is_null($requestProxy)) {
                
    $proxyData parse_url("http://" $requestProxy);

                if (isset(
    $proxyData["user"]) && isset($proxyData["pass"]))
                    
    $curlOptions[CURLOPT_PROXYUSERPWD]    = sprintf("%s:%s"$proxyData["user"], $proxyData["pass"]);

                if (!isset(
    $proxyData["host"]))
                    return (
    $responseCode $responseHeaders $responseContent false);

                
    $curlOptions[CURLOPT_PROXY] = $proxyData["host"];    
            }

            
    $result curl_setopt_array($curlHandler$curlOptions);
            if (!
    $result) return ($responseCode $responseHeaders $responseContent false);

            
    $response curl_exec($curlHandler);

            
    $errCode        curl_errno($curlHandler);
            
    $errString    sprintf("Error: %s"curl_error($curlHandler));

            if (
    curl_errno($curlHandler) != CURLE_OK) {
                
    $responseCode        false;
                
    $responseHeaders    false;
                
    $responseContent    false;

                
    curl_close($curlHandler);

                return 
    false;
            }

            
    curl_close($curlHandler);

            list(
    $headers$responseBody) = preg_split("/\r\n\r\n/"$response2);

            
    $headers                        preg_split("/\r\n/"$headers);
            list(,
    $responseCode,)    = sscanf(array_shift($headers), "%s %d %s");

            
    $responseHeaders    $headers;

            return 
    true;
        }

    ?>
     
    3 people like this.
  5. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    или сокеты...
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Сокеты юзать можно так:
    PHP:
    function LoadPage($host,$port,$head)
    {
     
    $sock=@fsockopen($host,$port,$errno,$errstr,3);
     if (!
    $sock)
     {
      return 
    false;
     }
     
    fwrite($sock,$head);
     
    $ret='';
     while (!
    feof($sock))
     {
      
    $ret.=fread($sock,8192) or last;
     }
     
    fclose($sock);
     return 
    $ret;
    }
    Функции даешь хост куда подрубаться, порт, и HTTP запрос. И она возвращает данные которые вернул сервер или false
    cnhjbm запрос можешь типа так:
    PHP:
    function BuildHeader($method,$page,$host,$ref,$cookie,$data)
    {
     
    $ret="{$method} /{$page} HTTP/1.0\r\n".
          
    "Host: {$host}\r\n".
          
    "Referer: {$ref}\r\n";
     if (!empty(
    $cookie)>0)
      { 
       
    $ret.="Cookie: {$cookie}\r\n";
      } 
     if (
    $method=='POST')
      {
       
    $ret.="Content-Length: ".strlen($data)."\r\n".
             
    "Content-Type: application/x-www-form-urlencoded\r\n\r\n{$data}\r\n";
      } else 
    $ret.="\r\n";
     return 
    $ret;
    }
    Пример использования
    PHP:
     $data="success_url=&fail_url=&try_to_login=1&email={$email}&pass={$pass}";
     
    $head=BuildHeader('POST','login.php','vkontakte.ru','http://vkontakte.ru/login.php','',$data);
     
    $page=LoadPage('vkontakte.ru',80,$head);
     if (
    $page)
      {
         
    чтото делаешь тут
      
    }
     
  7. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Так же можно передать POST через file_get_contents третьим параметром передовать http заголовки :)
     
    1 person likes this.
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 DIAgen эта возможность вроде появилась тока в 5 php, так что на 4 PHP может не прокатить, хотя щас уже 5 везде )
     
  9. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    маньяки всем + 10 .
     
    #9 barnaki, 29 Jan 2009
    Last edited: 29 Jan 2009
    1 person likes this.