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怎样实现多用户管理?的主要内容,如果未能解决你的问题,请参考以下文章