自备 PHP 工具函数

获取ip

    function getip() {

        if (isset ( $_SERVER )) {

            if (isset ( $_SERVER ['HTTP_X_FORWARDED_FOR'] )) {

                $aIps = explode ( ',', $_SERVER ['HTTP_X_FORWARDED_FOR'] );

                foreach ( $aIps as $sIp ) {

                    $sIp = trim ( $sIp );

                    if ($sIp != 'unknown') {

                        $sRealIp = $sIp;

                        break;

                    }

                }

            } elseif (isset ( $_SERVER ['HTTP_CLIENT_IP'] )) {

                $sRealIp = $_SERVER ['HTTP_CLIENT_IP'];

            } else {

                if (isset ( $_SERVER ['REMOTE_ADDR'] )) {

                    $sRealIp = $_SERVER ['REMOTE_ADDR'];

                } else {

                    $sRealIp = '0.0.0.0';

                }

            }

        } else {

            if (getenv ( 'HTTP_X_FORWARDED_FOR' )) {

                $sRealIp = getenv ( 'HTTP_X_FORWARDED_FOR' );

            } elseif (getenv ( 'HTTP_CLIENT_IP' )) {

                $sRealIp = getenv ( 'HTTP_CLIENT_IP' );

            } else {

                $sRealIp = getenv ( 'REMOTE_ADDR' );

            }

        }

        return $sRealIp;

    }

session 操作

<?php
/**
该类为session中用于操作session的各中处理
如果该类配置正常,在$_SESSION中的数据会以数据库的形式保存。
通过 session_id()操作可实现session的共享,使多应用可进行同步操作和登录。
这个是上次搞qq绑定时,保留下来的哈。不过网上多如牛毛。咱就不多说了。
*/
$aConfig = array (
		'session' => '1',
		'db' => array (
				'host' => 'localhost',
				'user' => 'root',
				'pass' => '',
				'name' => 'test' 
		) 
);
new session ( $aConfig );

class session {
	/*
	 * 数据库接口
	 */
	private $oDB;
	function __construct($aConfig) {
		session_cache_limiter ( 'private, must-revalidate' );

		session_cache_expire ( 1800 );

		@ini_set ( 'session.cookie_lifetime', 0 );

		@ini_set ( 'session.cookie_httponly', TRUE );

		@ini_set ( 'session.use_cookies', 1 );

		@ini_set ( 'session.use_only_cookies', 1 );

		@ini_set ( 'session.use_trans_sid', 0 );

		@ini_set ( 'session.gc_probability', 1 );

		@ini_set ( 'session.gc_divisor', 1 );

		@ini_set ( 'session.gc_maxlifetime', 1800 );

		if ($aConfig ["session"] == 1) {
			$this->oDB = mysql_connect ( $aConfig ["db"] ["host"], $aConfig ["db"] ["user"], $aConfig ["db"] ["pass"] );
			mysql_select_db ( $aConfig ["db"] ["name"], $this->oDB );
			mysql_query ( "SET NAMES UTF8", $this->oDB );
			session_set_save_handler ( array (
					&$this,
					"open" 
			), array (
					&$this,
					"close" 
			), array (
					&$this,
					"read" 
			), array (
					&$this,
					"write" 
			), array (
					&$this,
					"destory" 
			), array (
					&$this,
					"gc" 
			) );

		} elseif ($aConfig ["session"] == 2) {
			@ini_set ( 'session.save_handler', 'memcache' );

			@ini_set ( "session.save_path", "tcp://" . $aConfig ["mem"] ["host"] . ":" . $aConfig ["mem"] ["port"] );
		}
		session_start ();
	}

	function open($session_save_path, $session_name) {
		return true;
	}

	function close() {
		return true;
	}

	function write($key, $value) {
		$query = mysql_query ( "select * from `sessions` where `sessionkey`='" . $key . "'", $this->oDB );
		if (mysql_num_rows ( $query ) == 0) {
			mysql_query ( "insert into `sessions` set `sessionkey`='" . $key . "',`sessionvalue`='" . $value . "',`sessionip`='" . getip () . "', `sessionexpiry` ='" . date ( "Y-m-d H:i:s", strtotime ( "+1800 seconds" ) ) . "'", $this->oDB );
		} else {
			mysql_query ( "update `sessions` set `sessionvalue`='" . $value . "',`sessionip`='" . getIp () . "',`sessionexpiry`='" . date ( "Y-m-d H:i:s", strtotime ( "+1800 seconds" ) ) . "' where `sessionkey`='" . $key . "'", $this->oDB );
		}
	}

	function read($key) {
		$Query = mysql_query ( "select `sessionvalue` from `sessions` where `sessionkey`='" . $key . "' and `sessionexpiry`>'" . date ( "Y-m-d H:i:s" ) . "' and `sessionip`='" . getIp () . "'", $this->oDB );
		$aValue = mysql_fetch_assoc ( $Query );
		if (empty ( $aValue )) {
			return NULL;
		}
		return $aValue ["sessionvalue"];
	}

	function gc() {
		return mysql_query ( "delete from `sessions` where `sessionexpiry`<='" . date ( "Y-m-d H:i:s" ) . "'", $this->oDB );
	}

	function destory($key) {
		return mysql_query ( "delete from `sessions` where `sessionkey`='" . $key . "'", $this->oDB );
	}
}

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

 

《自备 PHP 工具函数》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注