public function client( $key = null ) {

		// check if we already set the client object
		if ( is_null( $this->client ) ) 
		{
			// make client 
			$this->client = new \stdClass;

			/*
			 * get clients ip address
			 */
			// Cloudlfare fix 
			if ( $this->has_server( 'HTTP_CF_CONNECTING_IP' ) ) 
			{
				$this->client->ip = $this->server( 'HTTP_CF_CONNECTING_IP' );
			}
			// proxy?
			elseif ( $this->has_server( 'HTTP_X_FORWARDED_FOR' ) ) 
			{
				$this->client->ip = $this->server( 'HTTP_X_FORWARDED_FOR' );
			} 
			// another proxy?
			elseif ( $this->has_server( 'HTTP_CLIENT_IP' ) )
			{
				$this->client->ip = $this->server( 'HTTP_CLIENT_IP' );
			}
			// or default
			else 
			{
				$this->client->ip = $this->server( 'REMOTE_ADDR', '127.0.0.1' );
			}

			/*
			 * set clients user agent
			 */
			$this->client->agent = $this->server( 'HTTP_USER_AGENT', '' );

			/*
			 * set clients port
			 */
			$this->client->port = $this->server( 'REMOTE_PORT', '' );

			/*
			 * set clients fingerprint based on host and agent
			 */
			$this->client->fingerprint = CCStr::hash( $this->client('agent').$this->client('ip') );

			/*
			 * set clients language
			 */
			$this->client->language = CCLang::set_current( $this->server( 'HTTP_ACCEPT_LANGUAGE' ) );
		}

		// return the object
		if ( is_null( $key ) ) 
		{
			return $this->client;
		}

		// return a special key
		return $this->client->{$key};
	}
public function client( $key = null ) {

		// check if we already set the client object
		if ( is_null( $this->client ) ) 
		{
			// make client 
			$this->client = new \stdClass;

			/*
			 * get clients ip address
			 */
			// Cloudlfare fix 
			if ( $this->has_server( 'HTTP_CF_CONNECTING_IP' ) ) 
			{
				$this->client->ip = $this->server( 'HTTP_CF_CONNECTING_IP' );
			}
			// proxy?
			elseif ( $this->has_server( 'HTTP_X_FORWARDED_FOR' ) ) 
			{
				$this->client->ip = $this->server( 'HTTP_X_FORWARDED_FOR' );
			} 
			// another proxy?
			elseif ( $this->has_server( 'HTTP_CLIENT_IP' ) )
			{
				$this->client->ip = $this->server( 'HTTP_CLIENT_IP' );
			}
			// or default
			else 
			{
				$this->client->ip = $this->server( 'REMOTE_ADDR', '127.0.0.1' );
			}

			/*
			 * set clients user agent
			 */
			$this->client->agent = $this->server( 'HTTP_USER_AGENT', '' );

			/*
			 * set clients port
			 */
			$this->client->port = $this->server( 'REMOTE_PORT', '' );

			/*
			 * set clients fingerprint based on host and agent
			 */
			$this->client->fingerprint = CCStr::hash( $this->client('agent').$this->client('ip') );

			/*
			 * set clients language
			 */
			$this->client->language = CCLang::set_current( $this->server( 'HTTP_ACCEPT_LANGUAGE' ) );
		}

		// return the object
		if ( is_null( $key ) ) 
		{
			return $this->client;
		}

		// return a special key
		return $this->client->{$key};
	}
public function client ( $ key = null ) { // check if we already set the client object if ( is_null ( $ this -> client ) ) { // make client  $ this -> client = new \ stdClass ; /*
			 * get clients ip address
			 */ // Cloudlfare fix  if ( $ this -> has_server ( 'HTTP_CF_CONNECTING_IP' ) ) { $ this -> client -> ip = $ this -> server ( 'HTTP_CF_CONNECTING_IP' ) ; } // proxy? elseif ( $ this -> has_server ( 'HTTP_X_FORWARDED_FOR' ) ) { $ this -> client -> ip = $ this -> server ( 'HTTP_X_FORWARDED_FOR' ) ; } // another proxy? elseif ( $ this -> has_server ( 'HTTP_CLIENT_IP' ) ) { $ this -> client -> ip = $ this -> server ( 'HTTP_CLIENT_IP' ) ; } // or default else { $ this -> client -> ip = $ this -> server ( 'REMOTE_ADDR' , '127.0.0.1' ) ; } /*
			 * set clients user agent
			 */ $ this -> client -> agent = $ this -> server ( 'HTTP_USER_AGENT' , '' ) ; /*
			 * set clients port
			 */ $ this -> client -> port = $ this -> server ( 'REMOTE_PORT' , '' ) ; /*
			 * set clients fingerprint based on host and agent
			 */ $ this -> client -> fingerprint = CCStr :: hash ( $ this -> client ( 'agent' ) . $ this -> client ( 'ip' ) ) ; /*
			 * set clients language
			 */ $ this -> client -> language = CCLang :: set_current ( $ this -> server ( 'HTTP_ACCEPT_LANGUAGE' ) ) ; } // return the object if ( is_null ( $ key ) ) { return $ this -> client ; } // return a special key return $ this -> client -> { $ key } ; }
get the client data

@param string		$key
@return mixed
get the client data