⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 php_http_server_generic.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php//*******************************************************************//php_http_server_generic represents a basic http server//*******************************************************************//by John Heinstein//johnkarl@nbnet.nb.ca//*******************************************************************//Version 0.1//copyright 2004 Engage Interactive//http://www.engageinteractive.com/dom_xmlrpc///All rights reserved//*******************************************************************//Licensed under the GNU General Public License (GPL)//http://www.gnu.org/copyleft/gpl.html//*******************************************************************if (!defined('PHP_HTTP_TOOLS_INCLUDE_PATH')) {	define('PHP_HTTP_TOOLS_INCLUDE_PATH', (dirname(__FILE__) . "/"));}define ('CRLF', "\r\n"); //end-of-line char as defined in HTTP specdefine ('CR', "\r");define ('LF', "\n");class php_http_server_generic {	var $httpStatusCodes;	var $protocol = 'HTTP';	var $protocolVersion = '1.0';	var $statusCode = 200;	var $events = array('onRequest' => null, 'onResponse' => null,						'onGet' => null, 'onHead' => null,						'onPost' => null, 'onPut' => null);	function php_http_server_generic() {		//require_once(PHP_HTTP_TOOLS_INCLUDE_PATH . 'php_http_status_codes.php');		//$this->httpStatusCodes =&new php_http_status_codes();	} //php_http_server_generic	function &getHeaders() {		$headers = headers_list();		$response = '';		if (count($headers) > 0) {			foreach ($headers as $key => $value) {				$response .= $value . CRLF;			}		}		return $response;	} //getHeaders	function setProtocolVersion($version) {		if (($version == '1.0') || ($version == '1.1')) {			$$this->protocolVersion = $version;			return true;		}		return false;	} //setProtocolVersion	function setHeader($name, $value) {		header($name . ': ' . $value);	} //setHeader	function setHeaders() {		//you will want to override this method		$this->setHeader('Content-Type', 'text/html');		$this->setHeader('Server', 'PHP HTTP Server (Generic)/0.1');	} //setHeaders	function fireEvent($target, $data) {		if ($this->events[$target] != null) {			call_user_func($this->events[$target], $data);		}	} //fireEvent	function fireHTTPEvent($target, $data = null) {		if ($this->events[$target] == null) {			//if no handler is assigned,			//delegate the event to the default handler			$this->setHTTPEvent($target);		}		call_user_func($this->events[$target], $data);	} //fireHTTPEvent	function setHTTPEvent($option, $customHandler = null) {		if ($customHandler != null) {			$handler =& $customHandler;		}		else {			$handler = array(&$this, 'defaultHTTPEventHandler');		}		switch($option) {			case 'onGet':			case 'onHead':			case 'onPost':			case 'onPut':				$this->events[$option] =& $handler;				break;		}	} //setHTTPServerEvent	function defaultHTTPHandler() {		//will add functionality for this later		//work with subclasses for the time being	} //defaultHTTPHandler	function setDebug($option, $truthVal, $customHandler = null) {		if ($customHandler != null) {			$handler =& $customHandler;		}		else {			$handler = array(&$this, 'defaultDebugHandler');		}		switch($option) {			case 'onRequest':			case 'onResponse':				$truthVal ? ($this->events[$option] =& $handler) :							($this->events[$option] = null);				break;		}	} //setDebug	function getDebug($option) {		switch($option) {			case 'onRequest':			case 'onResponse':				return ($this->events[$option] != null);				break;		}	} //getDebug	function defaultDebugHandler($data) {		//just write to a log file, since can't display in a browser		$this->writeDebug($data);	} //defaultDebugHandler	function writeDebug($data) {		$filename = 'debug_' . time() . '.txt';		$fileHandle = fopen($fileName, 'a');		fwrite($fileHandle, $data);		fclose($fileHandle);	} //writeDebug	function receive() {		global $HTTP_SERVER_VARS;		$requestMethod = strToUpper($HTTP_SERVER_VARS['REQUEST_METHOD']);		switch ($requestMethod) {			case 'GET':				$this->fireHTTPEvent('onGet');				break;			case 'HEAD':				$this->fireHTTPEvent('onHead');				break;			case 'POST':				$this->fireHTTPEvent('onPost');				break;			case 'PUT':				$this->fireHTTPEvent('onPut');				break;		}	} //receive	function respond($response) {		//build header info		//$response = $this->protocol . '/' . $this->protocolVersion . ' ' .					//$this->statusCode . ' ' . $this->httpStatusCodes->getCodeString($this->statusCode) . CRLF;		if (!headers_sent()) { //avoid generating an error when in debug mode			$this->setHeader('Date', "date('r')");			$this->setHeader('Content-Length', strlen($response));			$this->setHeader('Connection', 'Close');		}		echo $response;	} //respond} //php_http_server_generic//To invoke the server, do://$httpServer = new php_http_server_generic(); //or instance of a subclass//$httpServer->receive();?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -