htaccess.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 461 行

PHP
461
字号
<?php/* vim: set ts=4 sw=4: */// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license,       |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Author: Mika Tuupola <tuupola@appelsiini.net>                        |// +----------------------------------------------------------------------+//// $Id: HtAccess.php,v 1.11 2003/02/19 14:50:15 tuupola Exp $//require_once 'PEAR.php' ;/*** Class for manipulating .htaccess files** A class which provided common methods to manipulate Apache / NCSA* style .htaccess files.** Example 1 (modifying existing file):** $h = new File_HtAccess('.htaccess');* $h->load();* $h->setRequire('valid-user');* $h->save();** Example 2 (modifying existing file):** $h = new File_HtAccess('.htaccess');* $h->load();* $h->addRequire('newuser');* $h->save();** Example 3 (creating a new file):** $params['authname']      = 'Private';* $params['authtype']      = 'Basic';* $params['authuserfile']  = '/path/to/.htpasswd';* $params['authgroupfile'] = '/path/to/.htgroup';* $params['require']       = array('group', 'admins');** $h = new File_HtAccess('/path/to/.htaccess', $params);* $h->save();** @author  Mika Tuupola <tuupola@appelsiini.net>* @access  public* @version 1.0.0* @package File_HtAccess* @category File*/class File_HtAccess {    var $file;    var $authname;    var $authtype;    var $authuserfile;    var $authgroupfile;    var $authdigestfile;    var $authdigestgroupfile;    var $require    = array();    var $additional = array();    /**    * Constructor    *    * @access public    * @param  string $file    * @param  array  $params     * @return object File_HtAccess    */           function File_HtAccess($file='.htaccess', $params='') {        $this->file = $file;        $this->setProperties($params);    }        /**    * Load the given .htaccess file    *    * @access public    * @return mixed   true on success, PEAR_Error on failure    */    function load() {        $retval = true;                $fd = @fopen($this->getFile(), 'r');        if ($fd) {            while ($buffer = fgets($fd, 4096)) {                $buffer = trim($buffer);                if ($buffer) {                    $data = split(' ', $buffer, 2);                    if (preg_match('/AuthName/i', $data[0])) {                       $this->setAuthName($data[1]);                    } elseif (preg_match('/AuthType/i', $data[0])) {                       $this->setAuthType($data[1]);                                                        } elseif (preg_match('/AuthUserFile/i', $data[0])) {                       $this->setAuthUserFile($data[1]);                                                           } elseif (preg_match('/AuthGroupFile/i', $data[0])) {                       $this->setAuthGroupFile($data[1]);                    } elseif (preg_match('/AuthDigestFile/i', $data[0])) {                       $this->setAuthDigestFile($data[1]);                    } elseif (preg_match('/AuthDigestGroupFile/i', $data[0])) {                       $this->setAuthDigestGroupFile($data[1]);                    } elseif (preg_match('/Require/i', $buffer)) {                       $require = split(' ', $data[1]);                       $this->setRequire($require);                    } elseif (trim($buffer)) {                       $this->addAdditional($buffer);                    }                }            }            fclose($fd);        } else {            $retval = PEAR::raiseError('Could not open ' . $this->getFile() .                                        ' for reading.');        }        return($retval);    }    /**    * Set class properties    *    * @access public    * @param  array  $params    */    function setProperties($params) {        if (is_array($params)) {            foreach ($params as $key => $value) {                $method = 'set' . $key;                $this->$method($value);            }        }    }        /**    * Set the value of authname property    *     * @access public    * @param  string $name    */    function setAuthName($name='Restricted') {        $this->authname = $name;    }    /**    * Set the value of authtype propery    *    * @access public    * @param  string $type    */    function setAuthType($type='Basic') {        $this->authtype = $type;    }    /**    * Set the value of authuserfile propery    *    * @access public    * @param  string $file    */    function setAuthUserFile($file='') {        $this->authuserfile = $file;    }    /**    * Set the value of authgroupfile property    *    * @access public    * @param  string $file    */    function setAuthGroupFile($file='') {        $this->authgroupfile = $file;    }    /**    * Set the value of authdigestfile property    *    * @access public    * @param  string $file    */    function setAuthDigestFile($file='') {        $this->authdigestfile = $file;    }    /**    * Set the value of authdigestgroupfile property    *    * @access public    * @param  string $file    */    function setAuthDigestGroupFile($file='') {        $this->authdigestgroupfile = $file;    }    /**    * Set the value of require property    *    * Parameter can be given as an array or string. If given as a string    * the value will be exploded in to an array by using space as a     * separator.    *    * @access public    * @param  mixed $require    */    function setRequire($require='') {        if (is_array($require)) {            $this->require = $require;        } else {            $this->require = explode(' ', $require);        }    }    /**    * Add a value to require property    *    * @access public    * @param  string $require    */    function addRequire($require) {        $this->require[] = $require;    }    /**    * Delete a value from require property    *    * @access public    * @param  string $require    */    function delRequire($require) {        $pos = array_search($require, $this->require);        unset($this->require[$pos]);    }    /**    * Set the value of additional property    *    * Additional property is used for all the extra things in .htaccess    * file which don't have specific accessor method for them.     *    * @access public    * @param  array  $additional    */    function setAdditional($additional='') {        $this->additional = (array)$additional;    }    /**    * Add a value to additional property    *    * @access public    * @param  string $additional    */    function addAdditional($additional='') {        $this->additional[] = $additional;    }        /**    * Set the value of file property    *    * @access public    * @param  file   $file    */    function setFile($file) {        $this->file = $file;    }        /**    * Get the value of authname property    *    * @access public    * @return string      */    function getAuthName() {        return($this->authname);    }    /**    * Get the value of authtype property    *    * @access public    * @return string      */    function getAuthType() {        return($this->authtype);    }        /**    * Get the value of authuserfile property    *    * @access public    * @return string      */    function getAuthUserFile() {        return($this->authuserfile);    }    /**    * Get the value of authgroupfile property    *    * @access public    * @return string      */    function getAuthGroupFile() {        return($this->authgroupfile);    }    /**    * Get the value of authdigestfile property    *    * @access public    * @return string      */    function getAuthDigestFile() {        return($this->authdigestfile);    }    /**    * Get the value of authdigestgroupfile property    *    * @access public    * @return string      */    function getAuthDigestGroupFile() {        return($this->authdigestgroupfile);    }    /**    * Get the value(s) of require property    *    * @access public    * @param  string $type whether to return an array or string    * @return mixed  string or array, defaults to an array      */     function getRequire($type='') {        $retval = $this->require;        if ($type == 'string') {            $retval = implode($retval, ' ');        }        return($retval);    }    /**    * Get the value(s) of additional property    *    * @access public    * @param  string $type whether to return an array or string    * @return mixed  string or array, defaults to an array      */    function getAdditional($type='') {        $retval = $this->additional;        if ($type == 'string') {            $retval = implode($retval, "\n");        }        return($retval);    }    /**    * Get the value of file property    *    * @access public    * @return string      */    function getFile() {        return($this->file);    }    /**    * Save the .htaccess file    *    * @access public    * @return mixed      true on success, PEAR_Error on failure    * @see    PEAR_Error    */    function save() {        $retval = true;        $str  = 'AuthName '     . $this->getAuthName() . "\n";        $str .= 'AuthType '     . $this->getAuthType() . "\n";        if ('basic' == strtolower($this->getAuthType())) {            $str .= 'AuthUserFile ' . $this->getAuthUserFile() . "\n";            if (trim($this->getAuthGroupFile())) {                $str .= 'AuthGroupFile ' . $this->getAuthGroupFile() . "\n";               }        } elseif ('digest' == strtolower($this->getAuthType())) {            $str .= 'AuthDigestFile ' . $this->getAuthDigestFile() . "\n";            if (trim($this->getAuthDigestGroupFile())) {                $str .= 'AuthDigestGroupFile ' . $this->getAuthDigestGroupFile() . "\n";               }        }        $str .= 'Require ' . $this->getRequire('string') . "\n";        $str .= $this->getAdditional('string') . "\n";                $fd = @fopen($this->getFile(), 'w');        if ($fd) {            fwrite($fd, $str, strlen($str));        } else {            $retval = PEAR::raiseError('Could not open ' . $this->getFile() .                                        ' for writing.');        }        return($retval);            }}?>

⌨️ 快捷键说明

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