PrepareData( $Data[ key( $Data ) ], $TmpKey ); } else { $Result[] = $TmpKey . '=' . urlencode( $Data[ key( $Data ) ] ); } next( $Data ); } $Result = implode( '&', $Result ); return $Result; } private final function XMLToArray( $XML ) { $i = 0; if ( preg_match( '(\<([^>?]*)\>)', $XML ) ) { $Array = array(); while( preg_match( '(\<([^>?]*)\>)', $XML, $ParsedXML ) ) { $i++; $Tag = $ParsedXML[ 1 ]; $Begin = strpos( $XML, '<' . $Tag . '>' ); $Content = substr( $XML, $Begin +strlen( $Tag ) + 2 ); $Begin = strpos( $Content, '<' . $Tag . '>' ); $End = strpos( $Content, '' ); $TagLenght = strlen( '' ); while ( $Begin && $Begin < $End ) { $StartSearch = $End + $TagLenght; $Begin = strpos( $Content, '<' . $Tag . '>', $StartSearch ); $End = strpos( $Content, '', $StartSearch ); } $XML = substr( $XML, -strlen( $Content ) + $End + $TagLenght ); if ( $Tag != 'item' ) { $Array[ $Tag ] = $this -> XMLToArray( substr( $Content, 0, $End ) ); } else { $Array[ ] = $this -> XMLToArray( substr( $Content, 0, $End ) ); } } return $Array; } return $XML; } public final function RealsRequest( $Username, $Password ) { $this -> Username = $Username; $this -> Password = $Password; return; } public final function Send( $Method, $Data ) { $Data = array ( 'data' => $Data, 'method' => $Method, 'username' => $this -> Username, 'password' => $this -> Password ); $Header = ''; $PostData = $this -> PrepareData( $Data ); $URL = parse_url( $this -> URL ); if ( $URL[ 'scheme' ] != 'http' ) { return false; } $Socket = fsockopen( $URL[ 'host' ], 80 ); fputs( $Socket, "POST " . $URL[ 'path' ] . " HTTP/1.1\r\n" ); fputs( $Socket, "Host: " . $URL[ 'host' ] . "\r\n" ); fputs( $Socket, "Content-type: application/x-www-form-urlencoded\r\n" ); fputs( $Socket, "Content-length: ". strlen( $PostData ) ."\r\n" ); fputs( $Socket, "Connection: close\r\n\r\n" ); fputs( $Socket, $PostData ); $Result = ''; while( !feof( $Socket ) ) { $Result .= fgets( $Socket, 65535 ); } fclose( $Socket ); $Result = explode( "\r\n\r\n", $Result, 2 ); $this -> Result = isset( $Result[ 1 ] ) ? $Result[ 1 ] : ''; return $this -> Result; } public final function Result() { return $this -> Result; } public final function ResultAsArray() { return $this -> XMLToArray( $this -> Result ); } } ?>