Server-to-server post

Status
Niet open voor verdere reacties.

5blabla5

Gebruiker
Lid geworden
27 apr 2009
Berichten
485
Heej!

Ik ben nu aan het kijken naar een manier waardoor ik een formulier op mijn (of iemand anders) site kan invullen, laten uitvoeren en het resultaat kan laten ophalen. Helaas lukt mij dit niet helemaal.

Na veel zoekpogingen op google kom ik uit bij het volgende script:
PHP:
<?php

    function httpSocketConnection($host, $method, $path, $data)
        {
            global $Db;
           
          
            $method = strtoupper($method);       
           
            if ($method == "GET")
            {
                $path.= '?'.$data;
            }   
           
            $filePointer = fsockopen($host, 80, $errorNumber, $errorString);
           
            if (!$filePointer)
            {
                throw new Exception("Chyba spojeni $errorNumber $errorString");
            }
   
            $requestHeader = $method." ".$path."  HTTP/1.1\r\n";
            $requestHeader.= "Host: ".$host."\r\n";
            $requestHeader.= "User-Agent:      Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
            $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
   
            if ($method == "POST")
            {
                $requestHeader.= "Content-Length: ".strlen($data)."\r\n";
            }
           
            $requestHeader.= "Connection: close\r\n\r\n";
           
            if ($method == "POST")
            {
                $requestHeader.= $data;
            }           
   
            fwrite($filePointer, $requestHeader);
           
            $responseHeader = '';
            $responseContent = '';
   
            do
            {
                $responseHeader.= fread($filePointer, 1);
            }
            while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
           
           
            if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
            {
                while (!feof($filePointer))
                {
                    $responseContent.= fgets($filePointer, 128);
                }
            }
            else
            {
   
                while ($chunk_length = hexdec(fgets($filePointer)))
                {
                    $responseContentChunk = '';
               
                   
                    $read_length = 0;
                   
                    while ($read_length < $chunk_length)
                    {
                        $responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
                        $read_length = strlen($responseContentChunk);
                    }
   
                    $responseContent.= $responseContentChunk;
                   
                    fgets($filePointer);
                   
                }
               
            }
   
          
           
           
            return chop($responseContent);

        }

echo httpSocketConnection('localhost', 'POST', '/posts.php', 'invullen=hoi&invullen2=ja');

?>

testformulier:

PHP:
<?php

if(isset($_POST['invullen']) && isset($_POST['invullen2'])) {

	if($_POST['invullen'] == 'hoi' && $_POST['invullen2'] == 'ja') {

		echo 'Gelukt!';

	} else {

		echo 'Niet gelukt :(';

	}

} else {

?>

<form action="" method="POST">

<input type="text" name="invullen" />
<input type="text" name="invullen2" />
<input type="submit" value="Submit" />

</form>

<?php
}
?>

Resultaat van uitvoeren php script:
Fatal error: Maximum execution time of 60 seconds exceeded in K:\System\xampp\htdocs\posts.php on line 46

Ik wil niet dat het te lang duurt ;)

Mijn vraag is: Weet iemand hoe dit mogelijk is ZONDER cURL? Gebruik ik dit script verkeerd, of moet ik iets anders proberen?
 
Mag ik vragen waarom je het zonder cURL wil doen? :)
 
Tuurlijk mag dat: Ik heb geen cURL ondersteuning voor mijn xampp installatie :)

En helaas, het is een usb versie, dus ik denk niet dat het er op gezet kan worden :O
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan