示例#1
0
 function connect($isWrite = false)
 {
     $this->modality = $this->isWrite ? self::MODALITY_WRITE : ($isWrite ? self::MODALITY_WRITE : self::MODALITY_READ);
     $connection_key = 'pdo_mysql_' . $this->dbname . '_' . $this->modality . '_';
     if (isset(self::$connections[$connection_key])) {
         return self::$connections[$connection_key];
     }
     $server = Config::get('db', 'mysql');
     $dbConfig = Config::get('db', 'database,' . $this->dbname);
     $dbModalityConfig = self::getModalityConfig($dbConfig);
     // 置空连接方式
     $this->modality = null;
     $this->resetIsWrite();
     $charset = isset($server['charset']) ? $server['charset'] : 'UTF8';
     $dbname = isset($dbConfig['dbname']) ? $dbConfig['dbname'] : $this->dbname;
     $dsn = 'mysql:host=' . $dbModalityConfig['host'] . ';port=' . $dbModalityConfig['port'] . ';dbname=' . $dbname;
     $options = array(\PDO::ATTR_TIMEOUT => isset($server['timeout']) ? $server['timeout'] : 3, \PDO::ATTR_PERSISTENT => isset($server['persistent']) ? $server['persistent'] : false, \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . $charset);
     try {
         self::$connections[$connection_key] = new \PDO($dsn, $dbModalityConfig['username'], $dbModalityConfig['password'], $options);
         foreach ($this->_attribute as $key => $val) {
             self::$connections[$connection_key]->setAttribute($key, $val);
         }
     } catch (\PDOException $e) {
         throw new \Exception($e->getMessage(), $e->getCode(), $e->getPrevious());
     }
     return self::$connections[$connection_key];
 }
示例#2
0
文件: Cookie.php 项目: im286er/madphp
 /**
  * 设置 cookie
  *
  * @access   public
  * @param    mixed   名  可以是数组
  * @param    string  值
  * @param    string  过期时间
  * @param    string  域  一般设置为:  .yourdomain.com
  * @param    string  路径
  * @param    string  前缀
  * @param    bool    是否通过安全的 HTTPS 连接来传输 cookie
  * @return   void
  */
 public static function set($name = '', $value = '', $expire = 0, $domain = '', $path = '/', $prefix = '', $secure = FALSE)
 {
     if (is_array($name)) {
         foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'name') as $item) {
             if (isset($name[$item])) {
                 ${$item} = $name[$item];
             }
         }
     }
     if ($prefix == '' and Config::get('request', 'cookiePrefix', '') != '') {
         $prefix = Config::get('request', 'cookiePrefix');
     }
     if ($domain == '' and Config::get('request', 'cookieDomain', '') != '') {
         $domain = Config::get('request', 'cookieDomain');
     }
     if ($path == '/' and Config::get('request', 'cookiePath', '/') != '/') {
         $path = Config::get('request', 'cookiePath');
     }
     if ($secure == FALSE and Config::get('request', 'cookieSecure', FALSE) != FALSE) {
         $secure = Config::get('request', 'cookieSecure');
     }
     // 过期时间设置为非数字或数字字符串,删除 cookie
     if (!is_numeric($expire)) {
         $expire = time() - 86500;
     } else {
         // 小于等于 0 设置会话 cookie
         $expire = $expire > 0 ? time() + $expire : 0;
     }
     setcookie($prefix . $name, $value, $expire, $path, $domain, $secure);
 }
示例#3
0
 /**
  * 获取 IP Address
  *
  * @access   public
  * @return   string
  */
 public static function ipAddress()
 {
     if (self::$requestInstance->ipAddress !== FALSE) {
         return self::$requestInstance->ipAddress;
     }
     $proxyIps = Config::get('request', 'proxyIps', '');
     if (!empty($proxyIps)) {
         $proxyIps = explode(',', str_replace(' ', '', $proxyIps));
         foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP') as $header) {
             if (($spoof = self::server($header)) !== FALSE) {
                 if (strpos($spoof, ',') !== FALSE) {
                     $spoof = explode(',', $spoof, 2);
                     $spoof = $spoof[0];
                 }
                 if (!Validate::ip($spoof)) {
                     $spoof = FALSE;
                 } else {
                     break;
                 }
             }
         }
         self::$requestInstance->ipAddress = $spoof !== FALSE && in_array($_SERVER['REMOTE_ADDR'], $proxyIps, TRUE) ? $spoof : $_SERVER['REMOTE_ADDR'];
     } else {
         self::$requestInstance->ipAddress = $_SERVER['REMOTE_ADDR'];
     }
     if (!Validate::ip(self::$requestInstance->ipAddress)) {
         self::$requestInstance->ipAddress = '0.0.0.0';
     }
     return self::$requestInstance->ipAddress;
 }
示例#4
0
 /**
  * 构造函数
  * @access   private
  * @return   void
  */
 private function __construct()
 {
     writeLog('debug', "Http/Request Class Initialized");
     $this->allowGetArray = Config::get('request', 'allowGetArray', TRUE);
     $this->enableXss = Config::get('request', 'globalXssFiltering', FALSE);
     $this->enableCsrf = Config::get('request', 'csrfProtection', FALSE);
     // 全局数组处理
     $this->sanitizeGlobals();
 }
示例#5
0
文件: Html.php 项目: im286er/madphp
 /**
  * 脚本别名加载
  * @param  dynamic  mixed  配置文件中的别名
  * @return string
  */
 public static function js()
 {
     $configKey = func_get_arg(0);
     list($file, $key) = explode('.', $configKey);
     $args = func_get_args();
     array_shift($args);
     $jsAliases = Config::get($file, $key);
     $scriptArray = array_map(function ($aliases) use($jsAliases) {
         if (isset($jsAliases[$aliases])) {
             return self::script($jsAliases[$aliases]);
         }
     }, $args);
     return implode('', array_filter($scriptArray));
 }
示例#6
0
文件: Mysql.php 项目: im286er/madphp
 function connect()
 {
     $environment = defined('ENVIRONMENT') ? ENVIRONMENT : 'development';
     $connection_key = $this->dbname . $this->modality . $environment;
     if (!isset(self::$connections[$connection_key])) {
         $server = Config::get('db.' . $environment, 'mysql');
         $dbConfig = Config::get('db.' . $environment, 'database,' . $this->dbname);
         $dbHostConfig = explode(':', $dbConfig[$this->modality]);
         $charset = isset($server['charset']) ? $server['charset'] : 'UTF8';
         $dbname = isset($dbConfig['dbname']) ? $dbConfig['dbname'] : $this->dbname;
         $dsn = 'mysql:host=' . $dbHostConfig['0'] . ';port=' . $dbHostConfig['1'] . ';dbname=' . $dbname;
         $options = array(\PDO::ATTR_PERSISTENT => isset($server['persistent']) ? $server['persistent'] : true, \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . $charset);
         try {
             self::$connections[$connection_key] = new \PDO($dsn, $dbConfig['username'], $dbConfig['password'], $options);
             foreach ($this->_attribute as $key => $val) {
                 self::$connections[$connection_key]->setAttribute($key, $val);
             }
         } catch (\PDOException $e) {
             throw new \DebugException($e->getMessage(), $e->getCode(), $e->getPrevious());
         }
     }
     return self::$connections[$connection_key];
 }
示例#7
0
文件: Secure.php 项目: im286er/madphp
 /**
  * Set Cross Site Request Forgery Protection Cookie
  * 在 RequestBase 构造函数中调用,所以不能使用 Request 对象的方法
  * @return  void
  */
 public static function csrfSetCookie()
 {
     writeLog('debug', "Secure::csrfSetCookie() Call.");
     $expire = time() + self::$csrfExpire;
     $secure_cookie = Config::get('request', 'cookieSecure', TRUE) === TRUE ? 1 : 0;
     if ($secure_cookie && (empty($_SERVER['HTTPS']) or strtolower($_SERVER['HTTPS']) === 'off')) {
         return FALSE;
     }
     setcookie(self::$csrfCookieName, self::$csrfHash, $expire, Config::get('request', 'cookiePath', '/'), Config::get('request', 'cookieDomain', ''), $secure_cookie);
     writeLog('debug', "CRSF cookie Set");
 }