[ Index ]
 

Code source de Joomla 1.0.13

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/includes/domit/ -> php_http_server_generic.php (source)

   1  <?php
   2  //*******************************************************************
   3  //php_http_server_generic represents a basic http server
   4  //*******************************************************************
   5  //by John Heinstein
   6  //johnkarl@nbnet.nb.ca
   7  //*******************************************************************
   8  //Version 0.1
   9  //copyright 2004 Engage Interactive
  10  //http://www.engageinteractive.com/dom_xmlrpc/
  11  //All rights reserved
  12  //*******************************************************************
  13  //Licensed under the GNU General Public License (GPL)
  14  //http://www.gnu.org/copyleft/gpl.html
  15  //*******************************************************************
  16  
  17  if (!defined('PHP_HTTP_TOOLS_INCLUDE_PATH')) {
  18      define('PHP_HTTP_TOOLS_INCLUDE_PATH', (dirname(__FILE__) . "/"));
  19  }
  20  
  21  define ('CRLF', "\r\n"); //end-of-line char as defined in HTTP spec
  22  define ('CR', "\r");
  23  define ('LF', "\n");
  24  
  25  class php_http_server_generic {
  26      var $httpStatusCodes;
  27  
  28      var $protocol = 'HTTP';
  29      var $protocolVersion = '1.0';
  30      var $statusCode = 200;
  31  
  32      var $events = array('onRequest' => null, 'onResponse' => null,
  33                          'onGet' => null, 'onHead' => null,
  34                          'onPost' => null, 'onPut' => null);
  35  
  36      function php_http_server_generic() {
  37          //require_once(PHP_HTTP_TOOLS_INCLUDE_PATH . 'php_http_status_codes.php');
  38          //$this->httpStatusCodes =&new php_http_status_codes();
  39      } //php_http_server_generic
  40  
  41      function &getHeaders() {
  42          $headers = headers_list();
  43          $response = '';
  44  
  45          if (count($headers) > 0) {
  46              foreach ($headers as $key => $value) {
  47                  $response .= $value . CRLF;
  48              }
  49          }
  50  
  51          return $response;
  52      } //getHeaders
  53  
  54  	function setProtocolVersion($version) {
  55          if (($version == '1.0') || ($version == '1.1')) {
  56              $$this->protocolVersion = $version;
  57              return true;
  58          }
  59  
  60          return false;
  61      } //setProtocolVersion
  62  
  63  	function setHeader($name, $value) {
  64          header($name . ': ' . $value);
  65      } //setHeader
  66  
  67  	function setHeaders() {
  68          //you will want to override this method
  69          $this->setHeader('Content-Type', 'text/html');
  70          $this->setHeader('Server', 'PHP HTTP Server (Generic)/0.1');
  71      } //setHeaders
  72  
  73  	function fireEvent($target, $data) {
  74          if ($this->events[$target] != null) {
  75              call_user_func($this->events[$target], $data);
  76          }
  77      } //fireEvent
  78  
  79      function fireHTTPEvent($target, $data = null) {
  80          if ($this->events[$target] == null) {
  81              //if no handler is assigned,
  82              //delegate the event to the default handler
  83              $this->setHTTPEvent($target);
  84          }
  85  
  86          call_user_func($this->events[$target], $data);
  87      } //fireHTTPEvent
  88  
  89  	function setHTTPEvent($option, $customHandler = null) {
  90          if ($customHandler != null) {
  91              $handler =& $customHandler;
  92          }
  93          else {
  94              $handler = array(&$this, 'defaultHTTPEventHandler');
  95          }
  96  
  97          switch($option) {
  98              case 'onGet':
  99              case 'onHead':
 100              case 'onPost':
 101              case 'onPut':
 102                  $this->events[$option] =& $handler;
 103                  break;
 104          }
 105      } //setHTTPServerEvent
 106  
 107      function defaultHTTPHandler() {
 108          //will add functionality for this later
 109          //work with subclasses for the time being
 110      } //defaultHTTPHandler
 111  
 112      function setDebug($option, $truthVal, $customHandler = null) {
 113          if ($customHandler != null) {
 114              $handler =& $customHandler;
 115          }
 116          else {
 117              $handler = array(&$this, 'defaultDebugHandler');
 118          }
 119  
 120          switch($option) {
 121              case 'onRequest':
 122              case 'onResponse':
 123                  $truthVal ? ($this->events[$option] =& $handler) :
 124                              ($this->events[$option] = null);
 125                  break;
 126          }
 127      } //setDebug
 128  
 129      function getDebug($option) {
 130          switch($option) {
 131              case 'onRequest':
 132              case 'onResponse':
 133                  return ($this->events[$option] != null);
 134                  break;
 135          }
 136      } //getDebug
 137  
 138      function defaultDebugHandler($data) {
 139          //just write to a log file, since can't display in a browser
 140          $this->writeDebug($data);
 141      } //defaultDebugHandler
 142  
 143      function writeDebug($data) {
 144          $filename = 'debug_' . time() . '.txt';
 145          $fileHandle = fopen($fileName, 'a');
 146          fwrite($fileHandle, $data);
 147          fclose($fileHandle);
 148      } //writeDebug
 149  
 150      function receive() {
 151          global $HTTP_SERVER_VARS;
 152          $requestMethod = strToUpper($HTTP_SERVER_VARS['REQUEST_METHOD']);
 153  
 154          switch ($requestMethod) {
 155              case 'GET':
 156                  $this->fireHTTPEvent('onGet');
 157                  break;
 158  
 159              case 'HEAD':
 160                  $this->fireHTTPEvent('onHead');
 161                  break;
 162  
 163              case 'POST':
 164                  $this->fireHTTPEvent('onPost');
 165                  break;
 166  
 167              case 'PUT':
 168                  $this->fireHTTPEvent('onPut');
 169                  break;
 170          }
 171      } //receive
 172  
 173      function respond($response) {
 174          //build header info
 175          //$response = $this->protocol . '/' . $this->protocolVersion . ' ' .
 176                      //$this->statusCode . ' ' . $this->httpStatusCodes->getCodeString($this->statusCode) . CRLF;
 177  
 178          if (!headers_sent()) { //avoid generating an error when in debug mode
 179              $this->setHeader('Date', "date('r')");
 180              $this->setHeader('Content-Length', strlen($response));
 181              $this->setHeader('Connection', 'Close');
 182          }
 183  
 184          echo $response;
 185      } //respond
 186  } //php_http_server_generic
 187  
 188  
 189  //To invoke the server, do:
 190  //$httpServer = new php_http_server_generic(); //or instance of a subclass
 191  //$httpServer->receive();
 192  
 193  ?>


Généré le : Wed Nov 21 14:43:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics