目的:使用php和mysql模拟权限管理系统的实现
general用户只能查看其他用户信息,不能进行修改,添加,和删除操作,root用户可以完成以上三种操作。
实现思路
1.在mysql数据库中建立两张数据表。一张数据表保存用户名和密码,用于登陆验证,另一张保存用户权限等基本信息。
2.提交表单登陆时,先在数据库中查找该用户存不存在,若不存在,报错,存在,则验证密码,密码错误则报错,若密码正确,登陆显示所有存储在数据库中的用户信息和当前登陆用户名。
3.在用户进行添加,删除操作时,先判断权限是否足够,有权限则完成相应操作,修改数据库内容,否则提示没有权限
具体实现
1.登陆页面
1
2
3
4
5
6
7
|
<center> <form method= "post" action= "<?php echo $_server['script_name'] ?>" > 用户名: <input type= "text" name= "user_name" > 密码: <input type= "text" name= "password" > <input type= "submit" name= "submit" value= "登陆" > </form> </center> |
效果如下:
2.连接数据库对登陆名和密码进行验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//登陆处理 if (isset( $_post [ 'submit' ])) { // 用户名输入为空 if ( $_post [ 'user_name' ] == '' ) // 调用javascript函数动态提醒 echo "<script type='text/javascript'>dis_alert(\"用户名\",1);</script>" ; // 密码输入为空 if ( $_post [ 'password' ] == '' ) // 调用javascript函数动态提醒 echo "<script type='text/javascript'>dis_alert(\"密码\",1);</script>" ; // 用户名与密码均不为空 $user_name = $_post [ 'user_name' ]; //链接数据库,从中读出用户名和密码 $db = mysql_connect( "localhost" , "root" , "123456" ); mysql_select_db( "linyimin" , $db ); $result = mysql_query( "select * from login where user_name = '$user_name'" ); $num = mysql_num_rows( $result ); //判断用户输入的用户名存在,验证密码 if ( $num != 0) { $user_name = mysql_result( $result ,0, 'user_name' ); $password = mysql_result( $result ,0, 'password' ); if ( strcmp ( $password , $_post [ 'password' ]) != 0) { echo "密码错误" ; //密码错误,报错 $password = $_post [ 'password' ]; echo "<script type='text/javascript'>dis_alert('密码错误',3);</script>" ; } // 密码正确 else { session_unset(); session_start(); $_session [ 'user_name' ] = $_post [user_name]; header( "location:http://localhost/display.php" ); exit ; } } // 用户输入的用户名不存在,报错 else if ( $num == 0) { // 用户名不存在,报错 $user_name = $_post [ 'user_name' ]; echo "<script type='text/javascript'>dis_alert(\"$user_name\",2);</script>" ; } mysql_close( $db ); } //登陆处理结束 |
输入错误提醒函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<script type= "text/javascript" > // 登陆错误提醒 function dis_alert(var1, var2) { // 用户名和密码不能为空提醒 if (var2 == 1) { alert(var1 + " 不能为空,请重新输入" ); history.back(-1); } // 用户名不存在错误提醒 if (var2 == 2) { alert( "该用户名 " + var1 + " 不存在,请重新输入" ); history.back(-1); } // 密码错误提醒 if (var2 == 3) { alert( "密码错误,请重新输入" ); history.back(-1); } } </script> |
错误提醒效果图:
3.成功登陆之后显示数据库中所有用户信息和当前登陆用户名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
// 获取登陆名 session_start(); $name = $_session [ 'user_name' ]; // 连接数据库,获取数据并显示 function display() { global $name ; $db = mysql_connect( "localhost" , "root" , "123456" ); mysql_select_db( "linyimin" , $db ); $sql = "select * from admin_info" ; $result = mysql_query( $sql ); // 显示信息表 echo "<h3 align=right color=#ffffff> 当前用户:$name</h6>" ; echo "<table border = 0 align = center width = 1000></br>" ; // 添加超链接 echo "<tr align = center><th> <a href =\"display.php?add=yes\">add</a></th><br>" ; // 修改添加超连接 echo "<th> <a href =\"display.php?update=yes\">update</a></th><br>" ; // 删除超链接 echo "<th> <a href =\"display.php?delete=yes\">delete</a></th></tr><br>" ; echo "</table>" ; echo "<table border = 2 align = center width = 1000></br>" ; // 表头 echo "<tr><th colspan=\"3\">管理员权限表</th></tr><br>" ; echo "<tr align = center><td>姓名</td><td>权限</td><td>职务</td></tr><br>" ; while ( $row = mysql_fetch_row( $result )) { // 显示管理员信息并通过超链接调用处理函数 echo "<tr align = center><td>$row[0]</td>" ; echo "<td>$row[1]</td>" ; echo "<td>$row[2]</td></tr>" ; } echo "</table>" ; mysql_close( $db ); } |
显示效果如下:
4.修改,删除,添加操作的实现
修改,添加页面
1
2
3
4
5
6
7
8
|
<center> <form method= "post" action= "<?php echo $_server['url'] ?>" > 姓名: <input type= "text" name= "user_name" > 权限: <input type= "text" name= "pemission" > 职务: <input type= "text" name= "position" > <input type= "submit" name= "update" value= "提交" > </form> </center> |
效果如下:
删除页面
1
2
3
4
5
|
<center> <form method= "post" action= "<?php echo $_server['url'] ?>" onsubmit= "return confirm('请确认删除');" > 姓名: <input type= "text" name= "user_name" > <input type= "submit" name= "update" value= "删除" > </center> |
效果图如下:
实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 调用修改函数 if ( $_get [update]) { modify( "update" ); } // 调用添加函数 elseif ( $_get [add]) { modify( "add" ); } elseif ( $_get [ delete ]) { modify( "delete" ); } |
modify()函数的实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// 修改数据函数 /* 点击修改超链接,跳转到修改页面 表单中,名字项指定要修改记录 权限和职务项为可修改内容 */ function modify( $operation ) { if (isset( $_post [ 'update' ])) { // 有root权限修改,修改 if ( $operation == "update" && judge( "update" )) { $user_name = $_post [user_name]; $sql = "update admin_info set pemission = '$_post[pemission]', position ='$_post[position]' where user_name = '$user_name'" ; mysql_query( $sql ); mysql_close( $db ); display(); } // 添加 elseif (judge( "add" ) && $operation == "add" ) { $user_name = $_post [user_name]; $sql = "insert into admin_info (user_name, pemission, position) values ('$_post[user_name]','$_post[pemission]','$_post[position]')" ; mysql_query( $sql ); mysql_close( $db ); display(); } // 删除 elseif (judge( "delete" ) && $operation == "delete" ) { $user_name = $_post [user_name]; // 获取确认情况 $sql = "delete from admin_info where user_name = \"$user_name\"" ; mysql_query( $sql ); } } } |
judge()函数的实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
// 判断修改用户名是否存在和该用户是否具有权限 function judge( $operation ) { global $name ; // 修改用户名 $user_name = $_post [ 'user_name' ]; // 连接数据库,获取数据 $db = mysql_connect( "localhost" , "root" , "123456" ); mysql_select_db( "linyimin" , $db ); // 该用户是否存在 $sql = "select * from admin_info where user_name = \"$user_name\"" ; $result = mysql_query( $sql ); $num = mysql_num_rows( $result ); // 输入名称不存在 if ( $num == 0 && $operation != "add" ) { $user_name = $_post [ 'user_name' ]; echo "<script type='text/javascript'>dis_alert(\"$user_name\",2);</script>" ; return 0; } else { // 判断有没有权限(只有root权限可以修改) $sql = "select * from admin_info where user_name = \"$name\"" ; $result = mysql_query( $sql ); $pemission = mysql_result( $result ,0, 'pemission' ); // 没有root权限,报错 if ( strcmp ( $pemission , "root" ) != 0) { $user_name = $_post [ 'user_name' ]; echo "<script type='text/javascript'>dis_alert(\"$user_name\",1);</script>" ; return 0; } else return 1; } } |
常用技巧记录
1.利用session实现多个php文件使用同一个变量的方法
在定义该变量的文本中打开session,并把值存入session
1
2
3
|
usersession_unset(); session_start(); $_session [ '变量名' ] = "值" ; |
在使用该变量的文本中打开session并取出该变量
1
2
|
session_start(); $name = $_session [ '变量名' ]; |
2.php连接mysql数据库,并对数据库进行查找,添加,删除操作
连接数据库
1
2
3
4
|
// 连接数据库 $db = mysql_connect( "url" , "用户名" , "密码" ); // 选择数据库 mysql_select_db( "数据库名称" , $db ); |
查找
1
2
3
4
5
6
7
8
9
10
11
12
|
$sql = "select * from admin_info where 字段名 = \"查找值\"" ; $result = mysql_query( $sql ); // 对查找返回结果进行操作 // 获取查找返回记录数条数 $num = mysql_num_rows( $result ); // 获取查找结果第一条记录的user_name字段值 $user_name = mysql_result( $result ,0, 'user_name' ); // 逐条取出查询记录 while ( $row = mysql_fetch_row( $result )) { 相关操作; } |
插入
1
2
|
$sql = "insert into 数据表 (字段1, 字段2, 字段3) values ('值1','值2','值3')" ; mysql_query( $sql ); |
删除
1
2
3
4
|
$sql = "delete from 数据表 where 字段名 = \"查找值\"" ; mysql_query( $sql ); // 关闭数据库 mysql_close( $db ); |
3.表格提交前提醒
<form method="post" action="url" onsubmit="return confirm('请确认删除');">
4.在php中调用javascript函数
1
2
3
|
<?php echo "<script type='text/javascript'>javascript函数;</script>" ; ?> |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。