百度首页 | 百度空间
 
查看文章
 
一个小类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());
?>

类别:计算机技术 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu