Server : nginx/1.22.1
System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/www.jkmold.com/phpsso_server/phpcms/modules/admin/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/www.jkmold.com/phpsso_server/phpcms/modules/admin/administrator.php
<?php

defined('IN_PHPCMS') or exit('No permission resources.');

pc_base::load_app_class('admin','admin',0);

class administrator extends admin{

	

	private $db;

	

	public function __construct() {

		$this->db = pc_base::load_model('admin_model');

		parent::__construct(1);

	}

	

	public function init() {

		$total = $this->db->count();

		$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;

		$pagesize = 20;

		$offset = ($page - 1) * $pagesize;

		$list = $this->db->select('', '*', $offset.','.$pagesize);

		pc_base::load_sys_class('format', '', 0);

		foreach ($list as $key=> $v) {

			$list[$key]['lastlogin'] = format::date($v['lastlogin'], 1);

		}

		$pages = pages($total, $page, $pagesize);

		include $this->admin_tpl('administrator_list');

	}

	

	public function add() {

		if (isset($_POST['dosubmit'])) {

			if($this->check_admin_manage_code()==false){

				showmessage("error auth code");

			}

			$username = isset($_POST['username']) && trim($_POST['username']) ? trim($_POST['username']) : showmessage(L('nameerror'), HTTP_REFERER);

			$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_can_not_be_empty'), HTTP_REFERER);

			$issuper = isset($_POST['issuper']) && intval($_POST['issuper']) ? intval($_POST['issuper']) : 0;

			if ($this->db->get_one(array('username'=>$username))) {

				showmessage(L('user_already_exist'), HTTP_REFERER);

			} else {

				if (strlen($username) > 20 || strlen($username) < 6) {

					showmessage(L('username').L('between_6_to_20'), HTTP_REFERER);

				}

				if (strlen($password) > 20 || strlen($password) < 6) {

					showmessage(L('password_len_error'), HTTP_REFERER);

				}

				list($password, $encrypt) = creat_password($password);

				if ($this->db->insert(array('username'=>$username, 'password'=>$password, 'encrypt'=>$encrypt, 'issuper'=>$issuper))) {

					showmessage(L('add_admin').L('operation_success'), 'm=admin&c=administrator&a=init');

				} else {

					showmessage(L('database_error'), HTTP_REFERER);

				}

			}

		}

		$admin_manage_code = $this->get_admin_manage_code();

		include $this->admin_tpl('administrator_add');

	}

	

	public function del() {

		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : showmessage(L('illegal_parameters'), HTTP_REFERER);

		$r = $this->db->get_one(array('id'=>$id));

		if ($r) {

			if ($r['issuper']) {

				$super_num = $this->db->count(array('issuper'=>1));

				if ($super_num <=1) {

					showmessage(L('least_there_is_a_super_administrator'), HTTP_REFERER);

				}

			}

			if ($this->db->delete(array('id'=>$id))) {

				showmessage(L('operation_success'), HTTP_REFERER);

			} else {

				showmessage(L('operation_failure'), HTTP_REFERER);

			}		

		} else {

			showmessage(L('User_name_could_not_find'), HTTP_REFERER);

		}

	}

	

	public function edit() {

		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : showmessage(L('illegal_parameters'), HTTP_REFERER);

		$data = $this->db->get_one(array('id'=>$id));

		if ($data) {

			if (isset($_POST['dosubmit'])) {

				if($this->check_admin_manage_code()==false){

					showmessage("error auth code");

				}

				$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : '';

				$issuper = isset($_POST['issuper']) && intval($_POST['issuper']) ? intval($_POST['issuper']) : 0;

				$update = array('issuper'=>$issuper);

				if ($password) {

					if (strlen($password) > 20 || strlen($password) < 6) {

					showmessage(L('password_len_error'), HTTP_REFERER);

					}

					list($password, $encrypt) = creat_password($password);

					$update['password'] = $password;

					$update['encrypt'] = $encrypt;

				}

				if ($this->db->update($update, array('id'=>$id))) {

					showmessage(L('operation_success'), 'm=admin&c=administrator&a=init');

				} else {

					showmessage(L('database_error'), HTTP_REFERER);

				}

			}

			$admin_manage_code = $this->get_admin_manage_code();

			include $this->admin_tpl('administrator_edit');

		} else {

			showmessage(L('User_name_could_not_find'), HTTP_REFERER);

		}

	}

	

	public function ajax_username() {

		$username = isset($_GET['username']) && trim($_GET['username']) ? trim($_GET['username']) : exit(0);

		if ($this->db->get_one(array('username'=>$username))) {

			echo 0;exit();

		} else {

			echo 1;exit();

		}

	}

	//添加修改用户 验证串验证

	private function check_admin_manage_code(){

		$admin_manage_code = $_POST['admin_manage_code'];

		$pc_auth_key = md5(pc_base::load_config('system','auth_key').'adminuser');

		$admin_manage_code = sys_auth($admin_manage_code, 'DECODE', $pc_auth_key);	

		if($admin_manage_code==""){

			return false;

		}

		$admin_manage_code = explode("_", $admin_manage_code);

		if($admin_manage_code[0]!="adminuser" || $admin_manage_code[1]!=$_POST[pc_hash]){

			return false;

		}

		return true;

	}

	//添加修改用户 生成验证串

	private function get_admin_manage_code(){

		$pc_auth_key = md5(pc_base::load_config('system','auth_key').'adminuser');

		$code = sys_auth("adminuser_".$_GET[pc_hash]."_".time(), 'ENCODE', $pc_auth_key);

		return $code;

	}

}