Ⅰ 如何使用php往windows中添加用户
方法有二。
一、再Web中添加用户
因为添加用户,所以运行php(做为现在的主流开发语言)程序的用户必须是管理员权限(Administrator),并且同时需要自己的php(做为现在的主流开发语言).ini中的安全模式没有打开,并且关闭函数中没有关闭system()、exec()、passthru()等函数。
( 以下说明针对Windows2000/Windows XP/Windows 2003 )
1、使用iis(微软的WEB服务器平台)做Web服务器
如果是使用iis(微软的WEB服务器平台)做服务器的话,那么运行php(做为现在的主流开发语言)的帐户就是:IUSR_XXXXXXXX,IWAM_XXXXXXX,(XXXX代表服务器的计算机名),那么必须把这两个用户加到管理员组:Administrators 。当然,这样做的话,会给服务器安全带来威胁。
1、使用apache(Unix平台最流行的WEB服务器平台)作为Web服务器
据个人了解,apache(Unix平台最流行的WEB服务器平台)安装成服务以后,那么就是以system权限运行的,那么就是说php(做为现在的主流开发语言)运行的话,直接就是系统权限,已经超过了管理员权限,那么执行命令更不再话下。如果修改了apache(Unix平台最流行的WEB服务器平台)的运行用户,那么必须指定apache(Unix平台最流行的WEB服务器平台)服务运行用户是管理员以上权限,比如Administor或者system权限。
然后就可以在自己的php(做为现在的主流开发语言)代码中执行添加用户操作了:
按照楼主的需求,描述如下代码:
<?php(做为现在的主流开发语言)
define("USER_GROUP", "users"); //用户组,默认为users,为了安全,定义还是的用户组
define("ACTIVE", "YES"); //是否创建后直接激活用户,YES为激活,NO为不激活
//从数据库提取用户名和密码
//假设表为user_info,并且只有字段id, user, passwod
$sql = "SELECT user,password FROM user_info";
$result = MySQL(和PHP搭配之最佳组合)_query($sql) or die("Query database failed");
//循环插入用户
while ($array = MySQL(和PHP搭配之最佳组合)_fetch_array($result)) {
if (!function_exists("system"))
die(Function system() not exists, add user failed.);
//添加用户
@system("net user $array[user] $array[passwd] /active:ACTIVE /add");
//添加到指定组
@system("net localgroup users $array[user] /del");
@system("net localgroup USER_GROUP $array[user] /add");
}
?>
以上代码实现了把自己所有数据库的用户添加到本地系统,如果想单个的添加,可以考虑更改成用户注册成功后就添加用户,这个可以自己扩展。
二、使用php(做为现在的主流开发语言)做shell脚本来添加用户
另外,其实还有个思路。可以在服务器端利用php(做为现在的主流开发语言).exe来执行,并且不会有安全问题。刚做了测试,已经通过。
假设自己的php(做为现在的主流开发语言)安装在c:php(做为现在的主流开发语言)中,那么就使用命令提示符的来执行php(做为现在的主流开发语言)脚本来添加用户。
php(做为现在的主流开发语言)代码:
//c: est.php(做为现在的主流开发语言)
<?php(做为现在的主流开发语言)
@system("net user heiyeluren test /add");
?>
保存在c: est.php(做为现在的主流开发语言)文件中
在cmd下执行:
c:php(做为现在的主流开发语言)php(做为现在的主流开发语言).exe c: est.php(做为现在的主流开发语言)
提示:
C:>c:php(做为现在的主流开发语言)php(做为现在的主流开发语言).exe c: est.php(做为现在的主流开发语言)
命令成功完成。
那么从这个角度出发,完全可以将上面咱写的那段代码拿到这里来执行,然后php(做为现在的主流开发语言).exe充当shell脚本引擎。然后写成批处理,通过定时任务来执行。当然,也可以考虑使用其他语言来实现,比如vb/vc之类的,定期去数据库中检索是否有新添加的用户,然后再把用户添加到系统中。
Ⅱ php封装一个用户类,里面有登录注册方法,这个要怎么写
第一步:login.php
//登陆方法
public function login(){
//如果用户名和密码为空,则返回登陆页面
if(empty($_POST['username']) || empty($_POST['password'])){
$data['verifycode'] = rand(1000,9999);//生成一个四位数字的验证码
//将验证码放入session中,注意:参数是数组的格式
$this->session->set_userdata($data);
//注意:CI框架默认模板引擎解析的模板文件中变量不需要$符号
//$this->parser->parse("admin/login",$data);
//smarty模板变量赋值
$this->tp->assign("verifycode",$data['verifycode']);
//ci框架在模板文件中使用原生态的PHP语法输出数据
//$this->load->view('login',$data);//登陆页面,注意:参数2需要以数组的形式出现
//显示smarty模板引擎设定的模板文件
$this->tp->display("admin/login.php");
}else{
$username = isset($_POST['username'])&&!empty($_POST['username'])?trim($_POST['username']):'';//用户名
$password = isset($_POST['password'])&&!empty($_POST['password'])?trim($_POST['password']):'';//密码
$verifycode = isset($_POST['verifycode'])&&!empty($_POST['verifycode'])?trim($_POST['verifycode']):'';//验证码
//做验证码的校验
if($verifycode == $this->session->userdata('verifycode')){
//根据用户名及密码获取用户信息,注意:参数2是加密的密码
$user_info=$this->user_model->check_user_login($username,md5($password));
if($user_info['user_id'] > 0){
//将用户id、username、password放入cookie中
//第一种设置cookie的方式:采用php原生态的方法设置的cookie的值
//setcookie("user_id",$user_info['user_id'],86500);
//setcookie("username",$user_info['username'],86500);
//setcookie("password",$user_info['password'],86500);
//echo $_COOKIE['username'];
//第二种设置cookie的方式:通过CI框架的input类库
$this->input->set_cookie("username",$user_info['username'],3600);
$this->input->set_cookie("password",$user_info['password'],3600);
$this->input->set_cookie("user_id",$user_info['user_id'],3600);
//echo $this->input->cookie("password");//适用于控制器
//echo $this->input->cookie("username");//适用于控制器
//echo $_COOKIE['username'];//在模型类中可以通过这种方式获取cookie值
//echo $_COOKIE['password'];//在模型类中可以通过这种方式获取cookie值
//第三种设置cookie的方式:通过CI框架的cookie_helper.php函数库文件
//这种方式不是很灵验,建议大家采取第二种方式即可
//set_cookie("username",$user_info['username'],3600);
//echo get_cookie("username");
//session登陆时使用:将用户名和用户id存入session中
//$data['username']=$user_info['username'];
//$data['user_id']=$user_info['user_id'];
//$this->session->set_userdata($data);
//跳转到指定页面
//注意:site_url()与base_url()的区别,前者带index.php,后者不带index.php
header("location:".site_url("index/index"));
}
}else{
//跳转到登陆页面
header("location:".site_url("common/login"));
}
}
}
}
第二步:User_model.php
//cookie登陆:检测用户是否登陆,如果cookie值失效,则返回false,如果cookie值未失效,则根据cookie中的用户名和密码从数据库中获取用户信息,如果能获取到用户信息,则返回查询到的用户信息,如果没有查询到用户信息,则返回0
public function is_login(){
//获取cookie中的值
if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){
$user_info = false;
}else{
$user_info=$this->check_user_login($_COOKIE['username'],$_COOKIE['password']);
}
return $user_info;
}
//根据用户名及加密密码从数据库中获取用户信息,如果能获取到,则返回获取到的用户信息,否则返回false,注意:密码为加密密码
public function check_user_login($username,$password){
//这里大家要注意:$password为md5加密后的密码
//$this->db->query("select * from ");
//快捷查询类的使用:能为我们提供快速获取数据的方法
//此数组为查询条件
//注意:关联数组
$arr=array(
'username'=>$username,//用户名
'password'=>$password,//加密密码
'status'=>1 //账户为开启状态
);
//在database.php文件中已经设置了数据表的前缀,所以此时数据表无需带前缀
$query = $this->db->get_where("users",$arr);
//返回二维数组
//$data=$query->result_array();
//返回一维数组
$user_info=$query->row_array();
if(!empty($user_info)){
return $user_info;
}else{
return false;
}
}
第三步:其它控制器:
public function __construct(){
//调用父类的构造函数
parent::__construct();
$this->load->library('tp'); //smarty模板解析类
$this->load->helper('url'); //url函数库文件
$this->load->model("user_model");//User_model模型类实例化对象
$this->cur_user=$this->user_model->is_login();
if($this->cur_user === false){
header("location:".site_url("common/login"));
}else{
//如果已经登陆,则重新设置cookie的有效期
$this->input->set_cookie("username",$this->cur_user['username'],3600);
$this->input->set_cookie("password",$this->cur_user['password'],3600);
$this->input->set_cookie("user_id",$this->cur_user['user_id'],3600);
}
$this->load->library('pagination');//分页类库
$this->load->model("role_model");//member_model模型类
$this->load->model("operation_model");//引用operation_model模型
$this->load->model("object_model");//引用object_model模型
$this->load->model("permission_model");//引用permission_model模型
}
Ⅲ PHP后台实现用户分配功能,有谁知道怎么实现(PS:后台将用户分配给不同的管理员)
这个网上有很多的案例,可以参照一下,原理就是将所有的操作添加到数据库,然后将权限分成组的,也就是ID集合,或是单独给用户添加权限ID也可以。在所以操作前获取当前操作,简单点所就是地址,将这个地址作为条件获取权限表所对应的ID,将获取的ID和用户权限组集合,或用户单独自定的权限ID对比是否存在,存在,表示拥有这个操作权限,验证通过,不存在,表示没有这个操作权限,验证不通过。
Ⅳ Linux添加删除用户和用户组
方法步骤:
1、创建用户
adser phpq //新建phpq用户
passwd phpq //给phpq用户设置密码
2、建工作组
groupadd tes //新建test工作组
3、新建用户同时增加工作组
useradd -g test phpq //新增phpq用户并增加到test工作组
注:-g所属组 -d家目录 -s所用的shell
4、给已有的用户增加工作组
usermod -G groupname username或者gpasswd -a user group
5、临时关闭
在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了,想恢复该用户,去掉*即可,或者使用如下命令关闭用户账号:passwd
peter -I
重新释放:passwd peter -u
6、永久性删除用户账号
userdel peter、groupdel peter、usermod -G peter
peter(强制删除该用户的主目录和主目录下的所有文件和子目录)
7、从组中删除用户
编辑/etc/group找到GROUP1那一行,删除A,或者用命令gpasswd -d A GROUP
8、显示用户信息
id user、cat /etc/passwd