查看文章 |
一个小类PHP(会员注册登录,文本数据)
2008-04-26 09:12
<?php header("Content-type:text/html;charset=gb2312"); class sky_user { var $username; var $realname; var $password; var $group; function init() { if(!$this->userexists($this->username))$this->write(serialize($this)); return false; } function adduser($username="",$realname="",$password="",$group="") { $this->username=$username; $this->realname=$realname; $this->password=$this->Encode($password); $this->group=$group; $this->init(); } function login($user,$pass) { $obj=$this->userexists($user); if($obj&&$this->decode($obj->password)==$pass) { $this->Setcookie("name",$user); $this->Setcookie("pass",$obj->password); $this->Setcookie("grp",$obj->group); echo "<script language='javascript'>alert('登陆成功');history.back()</script>"; } echo "<script language='javascript'>alert('您的密码或账号错误,登陆失败!!');</script>"; } function loginout() { $this->Deletcookie("name"); $this->Deletcookie("pass"); $this->Deletcookie("grp"); } function userexists($user) { if(file_exists("user.sys")) { $cont=$this->read(); } else { return false; } if($cont[$user]) { return $cont[$user]; } return false; } function Setcookie($key,$value="") { session_start(); $_SESSION[$key]=$value; } function Deletcookie($key) { $this->Setcookie($key); } function write($cont) { $fp=fopen("user.sys","a+"); fwrite($fp,$cont."\t\n"); fclose($fp); } function modefy($cont) { $fp=fopen("user.sys","a+"); fwrite($fp,$cont."\t\n"); fclose($fp); } function read() { if(!file_exists("user.sys")) { fclose(fopen("user.sys","a+")); } $cont=file("user.sys"); foreach($cont as $k=>$v) { $row=unserialize($v); $res[$row->username]=$row; } return $res; } function change($user,$pass) { $arr=$this->read(); $arr[$user]->password=$this->Encode($pass); @unlink("user.sys"); foreach($arr as $k=>$v) { $this->modefy(serialize($v)); } } //密码加密算法 //加密程序 function Encode($pwd,$sign=''){ global $cfg_ddsign; if($sign=='') $sign = $cfg_ddsign; $rtstr = ''; $plen = strlen($pwd); if($plen<10) $plenstr = '0'.$plen; else $plenstr = "$plen"; $sign = substr(md5($sign),0,$plen); $poshandle = mt_rand(65,90); $rtstr .= chr($poshandle); $pwd = base64_encode($pwd); if($poshandle%2==0){ $rtstr .= chr(ord($plenstr[0])+18); $rtstr .= chr(ord($plenstr[1])+36); } for($i=0;$i<strlen($pwd);$i++){ if($i < $plen){ if($poshandle%2==0) $rtstr .= $pwd[$i].$sign[$i]; else $rtstr .= $sign[$i].$pwd[$i]; }else{ $rtstr .= $pwd[$i]; } } if($poshandle%2!=0){ $rtstr .= chr(ord($plenstr[0])+20); $rtstr .= chr(ord($plenstr[1])+25); } return $rtstr; } //解密程序 function Decode($epwd,$sign=''){ global $cfg_ddsign; $n1=0; $n2=0; $pwstr=''; $restr=''; if($sign=='') $sign = $cfg_ddsign; $rtstr = ''; $poshandle = ord($epwd[0]); if($poshandle%2==0){ $n1 = chr(ord($epwd[1])-18); $n2 = chr(ord($epwd[2])-36); $pwstr = substr($epwd,3,strlen($epwd)-3); }else{ $n1 = chr(ord($epwd[strlen($epwd)-2])-20); $n2 = chr(ord($epwd[strlen($epwd)-1])-25); $pwstr = substr($epwd,1,strlen($epwd)-3); } $pwdlen = ($n1.$n2)*2; $pwstrlen = strlen($pwstr); for($i=0;$i<$pwstrlen;$i++){ if($i<$pwdlen){ if($poshandle%2==0){ $restr .= $pwstr[$i]; $i++; } else{ $i++; $restr .= $pwstr[$i]; } }else{ $restr .= $pwstr[$i]; } } $restr = base64_decode($restr); return $restr; } } //$a=new sky_user("sadly","user.sys"); //$a->write(serialize($a)); //$arr=$a->read(); //foreach($arr as $k=>$v) //{ //print_r(unserialize($v)); //} $user=new sky_user; //$$user->adduser("xsf","依天","meme","1"); $user->login("sadly","tttt"); //$user->change("sadly","tttt"); //print_r($user->read()); ?> |
最近读者: