php怎样实现多用户管理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php怎样实现多用户管理?相关的知识,希望对你有一定的参考价值。

我正在写一个php网站,刚刚学的,很多东西都不懂。
这次遇到的问题就是多用户管理的,就是比如说我的网站有N个用户注册,并且注册后他们能各自登陆对自己的资料进行自主管理或者修改。
注册很简单,已经搞好了,在开始设计登陆页面时就不知道继续该怎么做了。
我现在用的是这样的判断:
<?
session_start();
include '../conn.php';
$name = $_POST[username];
$password = md5($_POST[userpass]);

$lgsql="select * from user_info where username = '$name' and userpass = '$password'";
$lgexe=mysql_query($lgsql);
$lgresult = mysql_num_rows($lgexe);
//计算出有多少条记录同时吻合username和userpass(返回值也只有0条或者1条,我自己想来想去这么写的。)
//下边的是,如果返回值不为0,也就是说数据库里有同样的用户名和密码则登陆成功,我这个判断登陆的方法用是能用就是不知道有没有啥不妥。
else if($lgresult != 0)
setcookie(); //到这里就不知道继续该怎样写了。。。原因写在后边。
$_SESSION[user] //或者不用cookie用session?那又该怎样做呢?

else
echo "登陆失败";

?>
不知道该怎么继续写的原因:
从来没做过这样的多用户管理的网站啊!以前最多做的也就是新闻发布系统,只有一个管理员登陆的。所以cookie和session基本没接触过。现在就是两个地方搞不明白,首先一个是在修改用户资料页面怎样判断当前登陆的是哪个用户?
现在想这样写:setcookie("cookiename","$name");然后在修改用户界面再获取cookie中的$name值来判断;但是这样安全有问题吧?别人不就可以通过更改cookie来访问其它用户的修改界面了?即使用md5给$name加密,别人也可以用同样的方式给如admin加密后再修改进cookie里来访问admin的界面啊?
又想这样写:$_SESSION[users] = $name;
但是这样我不明白的是:不是说SESSION是放在服务器端的吗?如果有几个用户同时登陆的话,那$_SESSION[users]的值在前一个用户还没下线前不就变成了后一个用户的$name了吗?那这时前一个用户刷新页面会不会就变成后一个用户的界面了啊?

真的,别笑话我,我刚学了一个星期的PHP,从来没做过这种多用户管理的网站,大家教教我怎么做吧!
不要复制的一大段代码,只想要一个思路清晰的说明++1段简洁的代码,谢谢了!

首先一个是在修改用户资料页面怎样判断当前登陆的是哪个用户?
----答:你在数据库里面加个字段,记录用户的类型的,然后登陆的时候用 cookie 或者 sessssion 记录他的用户类型。如 $_session['type']='admin'

然后就是,其实cookie很安全至少不像传说中的那样危险,这个你可以百度下别人的文章,一般情况下cookie是很难被修改的,所以考虑cookie的安全是必要的但是太过分了就没必要了。
其次,session保存在服务器不假,每个session都有一个唯一的id 你打印 session数组久知道,程序可以通过那个id判断session的所有者。
参考技术A SESSION会为每个访问者分配一 ID,用来表示不同访问者,所以不会冲突。

所以我做的站是用COOKIE和SESSION两个一起来解决用户登陆的。。

还有甚者把SESSION挂上的数据库。。这种做法就更BT,更安全了(同时也更方便了。例如查在线人数)。。下次我改写网站,就准备用这方法。

php权限管理(用户界面实现)

上一篇介绍的是管理员页面,能完成对用户的角色修改和保存,这里来说一下用户界面,用户通过登录,显示出其对应功能界面。

1.登录页面(用的ajax,也可以用php表单提交方式)

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <script type="text/javascript" src="../jquery-1.11.12.min.js"></script>
 6 <title>登陆界面</title>
 7 </head>
 8 
 9 <body>
10 <div>用户名:<input type="text" name="uid"  id="uid"/></div>
11 <div>密码:<input type="password" name="pwd" id="pwd" /></div>
12 <button id="login">登陆</button>
13 </body>
14 <script>
15 $("#login").click(function(){
16     var uid=$("#uid").val();
17     var pwd=$("#pwd").val();
18     $.ajax({
19             url:"login.php", 
20             data:{ids:uid,password:pwd},
21             type:"POST",
22             dataType:"TEXT",
23             success: function(data){
24                 if(data.trim()=="OK"){
25                 alert("登陆成功");
26                 window.location.href="zhuyemian.php";
27                 }
28                 else{
29                     
30                     alert("账号或者密码错误");
31                     }
32                 
33                 }
34         
35         
36         
37         })
38     
39     
40     
41     })
42 
43 
44 </script>
45 </html>

登录处理页面(用session存一下用户)

<?php
session_start();
$uid=$_POST["ids"];
$pwd=$_POST["password"];
require "../DataBase.class.php";
$db=new DataBase();
$sql="select pwd from users where uid=\'{$uid}\'";
$arr=$db->Query($sql);
if($arr[0][0]==$pwd &&!empty($pwd)){
    
    echo "OK";
    $_SESSION["uid"]=$uid;
    }
else{
    
    echo "NO";
    }



?>

主页面代码

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>主页面</title>
 6 <style>
 7 .list{ width:100px;
 8         height:30px;
 9         border:1px #0000CC solid;
10         background-color:#36C;}
11 
12 
13 </style>
14 </head>
15 <?php
16 session_start();                     //开启session
17 $uid="";
18 if(empty($_SESSION["uid"]))            //判断一下session是否存在
19 {    header("location:denglu.php");    //不存在就跳转到登陆页面
20     }
21 else{
22     $uid=$_SESSION["uid"];          //存在就交给$uid变量
23     }
24 require "../DataBase.class.php";      
25 $db=new DataBase();
26 $sql="select * from rules where code in (select distinct ruleid from juesewithrules where jueseid in(select jueseid from userinjuese where userid=\'{$uid}\') )";//子查询啊,根据session用户名和表之间的关系找到相对应功能
27 $arr=$db->Query($sql);
28 foreach($arr as $v)
29 {
30     echo "<div code=\'{$v[0]}\' class=\'list\'>$v[1]</div>";//遍历输入div元素显示功能
31     
32     }
33 
34 
35 
36 ?>
37 
38 <body>
39 </body>
40 </html>

看看效果

    对应的主页面 

对应的主页面

 

以上是关于php怎样实现多用户管理?的主要内容,如果未能解决你的问题,请参考以下文章

php权限管理如何实现

怎样修改dedecms管理员密码

教你用Laravel实现一个多用户博客系统

使用PHP+Redis实现微博的用户管理

php权限管理(用户界面实现)

php实现日志管理(记录用户操作)原理