1.php代码块

一、登录

function login() {
        if(isset($_GET[‘dosubmit‘])) {

            //不为口令卡验证
            if (!isset($_GET[‘card‘])) {
                $username = isset($_POST[‘username‘]) ? trim($_POST[‘username‘]) : showmessage(L(‘nameerror‘),HTTP_REFERER);
                $code = isset($_POST[‘code‘]) && trim($_POST[‘code‘]) ? trim($_POST[‘code‘]) : showmessage(L(‘input_code‘), HTTP_REFERER);
                if ($_SESSION[‘code‘] != strtolower($code)) {
                    $_SESSION[‘code‘] = ‘‘;
                    showmessage(L(‘code_error‘), HTTP_REFERER);
                }
            } else { //口令卡验证
                if (!isset($_SESSION[‘card_verif‘]) || $_SESSION[‘card_verif‘] != 1) {
                    showmessage(L(‘your_password_card_is_not_validate‘), ‘?m=admin&c=index&a=public_card‘);
                }
                $username = $_SESSION[‘card_username‘] ? $_SESSION[‘card_username‘] :  showmessage(L(‘nameerror‘),HTTP_REFERER);
            }

            //密码错误剩余重试次数
            $this->times_db = pc_base::load_model(‘times_model‘);
            $rtime = $this->times_db->get_one(array(‘username‘=>$username,‘isadmin‘=>1));
            $maxloginfailedtimes = getcache(‘common‘,‘commons‘);
            $maxloginfailedtimes = (int)$maxloginfailedtimes[‘maxloginfailedtimes‘];

            if($rtime[‘times‘] >= $maxloginfailedtimes) {
                $minute = 60-floor((SYS_TIME-$rtime[‘logintime‘])/60);
                if($minute>0) showmessage(L(‘wait_1_hour‘,array(‘minute‘=>$minute)));
            }
            //查询帐号
            $r = $this->db->get_one(array(‘username‘=>$username));
            if(!$r) showmessage(L(‘user_not_exist‘),‘?m=admin&c=index&a=login‘);
            $password = md5(md5(trim((!isset($_GET[‘card‘]) ? $_POST[‘password‘] : $_SESSION[‘card_password‘]))).$r[‘encrypt‘]);

            if($r[‘password‘] != $password) {
                $ip = ip();
                if($rtime && $rtime[‘times‘] < $maxloginfailedtimes) {
                    $times = $maxloginfailedtimes-intval($rtime[‘times‘]);
                    $this->times_db->update(array(‘ip‘=>$ip,‘isadmin‘=>1,‘times‘=>‘+=1‘),array(‘username‘=>$username));
                } else {
                    $this->times_db->delete(array(‘username‘=>$username,‘isadmin‘=>1));
                    $this->times_db->insert(array(‘username‘=>$username,‘ip‘=>$ip,‘isadmin‘=>1,‘logintime‘=>SYS_TIME,‘times‘=>1));
                    $times = $maxloginfailedtimes;
                }
                showmessage(L(‘password_error‘,array(‘times‘=>$times)),‘?m=admin&c=index&a=login‘,3000);
            }
            $this->times_db->delete(array(‘username‘=>$username));

            //查看是否使用口令卡
            if (!isset($_GET[‘card‘]) && $r[‘card‘] && pc_base::load_config(‘system‘, ‘safe_card‘) == 1) {
                $_SESSION[‘card_username‘] = $username;
                $_SESSION[‘card_password‘] = $_POST[‘password‘];
                header("location:?m=admin&c=index&a=public_card");
                exit;
            } elseif (isset($_GET[‘card‘]) && pc_base::load_config(‘system‘, ‘safe_card‘) == 1 && $r[‘card‘]) {//对口令卡进行验证
                isset($_SESSION[‘card_username‘]) ? $_SESSION[‘card_username‘] = ‘‘ : ‘‘;
                isset($_SESSION[‘card_password‘]) ? $_SESSION[‘card_password‘] = ‘‘ : ‘‘;
                isset($_SESSION[‘card_password‘]) ? $_SESSION[‘card_verif‘] = ‘‘ : ‘‘;
            }

            $this->db->update(array(‘lastloginip‘=>ip(),‘lastlogintime‘=>SYS_TIME),array(‘userid‘=>$r[‘userid‘]));
            $_SESSION[‘userid‘] = $r[‘userid‘];
            $_SESSION[‘roleid‘] = $r[‘roleid‘];
            $_SESSION[‘pc_hash‘] = random(6,‘abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789‘);
            $_SESSION[‘lock_screen‘] = 0;
            $default_siteid = self::return_siteid();
            $cookie_time = SYS_TIME+86400*30;
            if(!$r[‘lang‘]) $r[‘lang‘] = ‘zh-cn‘;
            param::set_cookie(‘admin_username‘,$username,$cookie_time);
            param::set_cookie(‘siteid‘, $default_siteid,$cookie_time);
            param::set_cookie(‘userid‘, $r[‘userid‘],$cookie_time);
            param::set_cookie(‘admin_email‘, $r[‘email‘],$cookie_time);
            param::set_cookie(‘sys_lang‘, $r[‘lang‘],$cookie_time);
            showmessage(L(‘login_success‘),‘?m=admin&c=index‘);
            //同步登陆vms,先检查是否启用了vms
            $video_setting = getcache(‘video‘, ‘video‘);
            if ($video_setting[‘sn‘] && $video_setting[‘skey‘]) {
                $vmsapi = pc_base::load_app_class(‘ku6api‘, ‘video‘);
                $vmsapi->member_login_vms();
            }
        } else {
            pc_base::load_sys_class(‘form‘, ‘‘, 0);
            include $this->admin_tpl(‘login‘);
        }
    }

二、登出

function public_logout() {
        $_SESSION[‘userid‘] = 0;
        $_SESSION[‘roleid‘] = 0;
        param::set_cookie(‘admin_username‘,‘‘);
        param::set_cookie(‘userid‘,0);

        //退出phpsso
        $phpsso_api_url = pc_base::load_config(‘system‘, ‘phpsso_api_url‘);
        $phpsso_logout = ‘<script type="text/javascript" src="‘.$phpsso_api_url.‘/api.php?op=logout" reload="1"></script>‘;

        showmessage(L(‘logout_success‘).$phpsso_logout,‘?m=admin&c=index&a=login‘);
    }

稍等

1.php代码块

时间: 2024-09-29 18:08:21

1.php代码块的相关文章

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

iOS学习之代码块(Block)

代码块(Block) (1)主要作用:将一段代码保存起来,在需要的地方调用即可. (2)全局变量在代码块中的使用: 全局变量可以在代码块中使用,同时也可以被改变,代码片段如下: 1 int local = 1;//注意:全局变量 2 void (^block0)(void) = ^(void){ 3 local ++; 4 NSLog(@"local = %d",local); 5 }; 6 block0(); 7 NSLog(@"外部 local = %d",lo

[Java基础]代码块

1. 2.构造代码块 public class CBlock { public CBlock()//构造函数 { i=300;//构造函数中初始化 } public int i=100;//显示初始化变量 {//构造代码块 i=200;//构造代码块中初始化变量 } } 从以下几点理解以上代码: java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端. 成员变量的初始化工作其实都在在构造函数中执行的. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动

Java(静态)变量和(静态)代码块的执行顺序

本文讨论Java中(静态)变量.(静态)代码块的执行顺序 首先创建3个类: 1.Foo类,用于打印变量 public class Foo { public Foo(String word) { System.out.println(word); } } 2.Parent类 public class Parent { static Foo FOO = new Foo("Parent's static parameter"); Foo foo = new Foo("Parent'

Java中的4种代码块

一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args){ //普通代码块 { int x = 10; System.out.println("x=" + x); } int x = 100; System.out.println("x=" + x); } } 二.构造代码块 直接在类中定义的没有加static关键字的代码

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

vscode自定义代码块

vscode中设置自定义代码块打开首选项,选择用户代码片段,打开后选择编程语言选中后打开文件,按照格式编辑内容 "Print to console log": { "prefix": "csl", "body": [ "console.log('$1')" ], "description": "log output to console" },

java中静态代码块的用法—— static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

JavaEE初始化时静态代码块加载问题

1.使用java.exe命令运行某个类的时java.exe Person2.创建一个类的对象时Person p=new Person();3.访问类中的静态成员变量(赋值/获取值)System.out.println(Person.className);4.访问了类中的静态成员方法Person.method();5.创建类的子类对象的时候Student s=new Student();6.使用反射方式来强制创建某个类或接口对应的java.lang.Class对象System.out.printl

Java中普通代码块,构造代码块,静态代码块区别及代码示例

//普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行"public class CodeBlock01{ public static void main(String[] args){ { int x=3; System.out.println("1,普通代码块内的变量x="+x); } int x=1; System.out.println("主方法内的变量x="