i wrote a simple easy class, please give me some advise and help my skills, thank you^_^
(using 'DB/DataObject.php,Smarty...) <?php require_once('DB/DataObject.php'); define('AUTH_PREFIX','__auth__'); class Auth { var $_sessionname; var $name; var $login_time; function &singleton($name,$sessionname) { static $instance; if (!isset($instance)) { $instance = new Auth($name,$sessionname); } return $instance; } function Auth($name,$sessionname) { $this -> _sessionname = $sessionname; $this -> name = $name; $this -> login_time = time(); } function &knock($name,$prefix = null) { if(empty($prefix)) $prefix = AUTH_PREFIX; $session_name = $prefix.$name; if(empty($_SESSION[$session_name])) { $auth = false; $redir = $_SERVER['REQUEST_URI']; Auth::_gologin($name,$redir); }else { $auth = Auth::singleton($name,$session_name); } return $auth; } function &_gologin($name,$redir = null) { $_AUTH = Auth::_loadConfig(); if(key_exists($name,$_AUTH['CONFIG'])) { $action = $_AUTH['CONFIG'][$name]['login']; if(empty($redir)&&!empty($_AUTH['CONFIG'][$name]['door'])) { $redir = $_AUTH['CONFIG'][$name]['door']; } Auth::_forward("$action?name=$name&redir=$redir"); } } function &_loadConfig() { global $_AUTH; if(empty($_AUTH)) $_AUTH['CONFIG'] = &PEAR::getStaticProperty('Auth','options'); return $_AUTH; } function &_forward($url) { ?> <SCRIPT> window.location.replace('<?=$url?>'); </SCRIPT> <? die; } function &login($get,$post){ $_AUTH = Auth::_loadConfig(); if( !empty($get['name']) &&key_exists($get['name'],$_AUTH['CONFIG']) ) // if () { $name = $get['name']; if(!empty($get['redir'])) { $redir = $get['redir']; }else { $redir = './'; } $action = $_AUTH['CONFIG'][$name]['login']; if( !empty($post['action']) &&$post['action'] == 'login' &&!empty($post['username']) &&!empty($post['password']) ) // if () { $username = $post['username']; $password = $post['password']; $do_class = $_AUTH['CONFIG'][$name]['DO_class']; $do_user = $_AUTH['CONFIG'][$name]['DO_userfield']; $do_pass = $_AUTH['CONFIG'][$name]['DO_passfield']; $do = DB_DataObject::staticGet($do_class,$do_user,$username); if(!empty($do)){ //var_dump($do -> $do_pass); if(md5($password) == $do -> $do_pass) { if(empty($prefix)) $prefix = AUTH_PREFIX; $session_name = $prefix.$name; $_SESSION[$session_name] = Auth::singleton($name,$session_name); Auth::_forward($redir); }else { Auth::_forward("$action?name=$name&redir=$redir"); } } }else{ $s = new mSmarty(); $s -> assign('auth_name',$name); $s -> assign('auth_redir',$redir); $s -> display($_AUTH['CONFIG'][$name]['login_template']); die; } } } function &logout($name) { if(empty($prefix)) $prefix = AUTH_PREFIX; $session_name = $prefix.$name; if(!empty($_SESSION[$session_name])) { $_SESSION[$session_name] = null; $_AUTH = Auth::_loadConfig(); if( key_exists($name,$_AUTH['CONFIG']) &&!empty($_AUTH['CONFIG'][$name]['logout_to']) ) // if () { $logout = $_AUTH['CONFIG'][$name]['logout_to']; Auth::_forward($logout); } }else { Auth::_forward('./'); } } } ?> ini file: [admin] login=login.php login_template=admin/login.htm logout=logout.php logout_to=t.php DO_class = DataObjects_Config DO_userfield = admin_user DO_passfield = admin_pass and the setup code: ... require_once('Auth.php'); $Auth_options = &PEAR::getStaticProperty('Auth','options'); $config = parse_ini_file(WEBDOC_PATH.'/auth.ini',true); $Auth_options = $config; ... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php