TS: Funktion für Post2Host via SSL, Zwischenstand 2019-05-30

Beitrag lesen

Hello,

##Zwischenstand 30.05.2019:

<?php   ### function_post2host.php ###

function PostToHost($host,$path,$data,$ssl=FALSE,$autoport=TRUE,$user=FALSE,$pass=FALSE,$referer=FALSE)
{
    //Daten anpassen
    if(is_array($data))
	{
		$data_to_send = '';
		foreach($data as $name => $var)
	    {
            $data_to_send .= urlencode($name) . '=' . urlencode($var) . '&';
        }
        $data_to_send = rtrim($data_to_send, '&');
    }
    else $data_to_send = 'data=' . urlencode($data);
  
	//SSL einbinden, falls gewünscht

	if($ssl === TRUE)
	{
		$port = 443;
		$target = 'ssl://' . $host;
	}
	else
	{
		$port = 80; 
		$target = $host;	
	}

	if ($autoport === TRUE) 
	{
		### alter nothing;
	}
	elseif (is_numeric($autoport) && (0 < $autoport) && ($autoport < 65536))
	{
		$port = $autoport;
	}
    else {return false;}
	  
	//Verbindung öffnen
	if (false === ($fp = fsockopen($target, $port, $errno, $errstr, 30)))
	{ 
		return false;
	}	
  
	stream_set_timeout($fp, 30);
  
	//Header erzeugen
	fputs($fp,"POST " . $path . " HTTP/1.1\r\n");    
	fputs($fp,"Host: " . $host . "\r\n");
  
	if(($user !== FALSE) && ($pass !== FALSE)) 
	{
		fputs($fp, "Authorization: Basic " . base64_encode($user.":".$pass)."\r\n");
	}
  
	if (FALSE !== $referer) 
	{
		fputs($fp, "Referer: " . urlencode($referer) . "\r\n");
	}
	fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
	fputs($fp, "Content-length: " . strlen($data_to_send) . "\r\n");
	fputs($fp, "Connection: close\r\n\r\n");
	fputs($fp, $data_to_send);
  
	//Antwort abfangen
    $res = '';
	while(!feof($fp)) 
	{
		$res .= fgets($fp, 128);
	}
	
	//Verbindung schliessen
	fclose($fp);
	
	//Antwort zurückgeben
	return $res;
}

###============================================================================
#
# PostToHost($host,$path,$data,$ssl=FALSE,$autoport=TRUE,$user=FALSE,$pass=FALSE,$referer=FALSE)

$_data = array();
$_data ['eins'] = 'erster Eintrag';
$_data ['zwei'] = 'zweiter Eintrag';
$_data ['drei'] = 'dritter Eintrag';

echo "<pre>\r\n";
echo PostToHost("bitworks.de", '/sensor/postresponder.php', $_data, TRUE);
echo "</pre>\r\n";

?>

Es fehlen noch Cookies bzw. Additional Headers.

Die Übertragung per "multipart/form-data" bedarf wohl eher einer eigenständigen Funktion, da hierfür z. B. noch umfangreiche Regeln für den Aufbau der Part-Header sowie Übergabe der Parameter dafür und deren Plausiplitätskontrolle ermittelt werden müssen (z. B. für Fileupload, Kontrolle der Boundary, usw.).

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
0 60

Post2Host via SSL

TS
  • php
  • tls
  • webserver
  1. 0
    dedlfix
    1. 0
      TS
      1. 0
        dedlfix
  2. 1
    MudGuard
    1. 0

      Post2Host via SSL, Fehler gefunden

      TS
      1. 0
        pl
      2. 0
        dedlfix
        1. 0
          TS
          1. 0
            dedlfix
            1. 0
              TS
              1. 0
                dedlfix
          2. 0
            pl
            1. 1
              dedlfix
              1. -1
                pl
                1. 0
                  dedlfix
                  1. 0
                    TS
                    1. 0
                      dedlfix
                    2. 0
                      1unitedpower
          3. -1
            pl
      3. 0
        1unitedpower
        1. 0
          TS
        2. -1
          pl
  3. 0
    pl
  4. 0

    Funktion für Post2Host via SSL, Zwischenstand 2019-05-30

    TS
    1. 0
      Mitleser
      1. 0
        TS
        1. 0
          Mitleser
          1. 0
            TS
      2. 1
        1unitedpower
        1. 0
          Mitleser
        2. 0
          TS
          1. 1
            1unitedpower
            1. 0
              TS
      3. 0
        pl
        1. 0

          PHP und PUT

          TS
          1. 0
            dedlfix
          2. 0
            pl
            1. 0
              dedlfix
              1. 0
                pl
                1. 0
                  dedlfix
              2. 0
                TS
                1. 0
                  dedlfix
                  1. 0
                    TS
                    1. 1
                      dedlfix
                    2. 1
                      1unitedpower
          3. 0
            pl
            1. 0
              pl
              1. 0
                TS
                1. 0
                  pl
                  1. 0
                    TS
                    1. 0
                      pl
                      1. 0
                        dedlfix
                        1. 0
                          pl
                  2. 0
                    JürgenB
                    1. 0
                      pl
        2. 0
          Mitleser
          1. 0
            pl
            1. 1
              Mitleser
    2. 1
      dedlfix