PHP MYSQL简易交互式站点开发

目的:使用PHP和MYSQL模拟权限管理系统的实现

general用户只能查看其他用户信息,不能进行修改,添加,和删除操作,root用户可以完成以上三种操作。

实现思路

1.在MySQL数据库中建立两张数据表。一张数据表保存用户名和密码,用于登陆验证,另一张保存用户权限等基本信息。
2.提交表单登陆时,先在数据库中查找该用户存不存在,若不存在,报错,存在,则验证密码,密码错误则报错,若密码正确,登陆显示所有存储在数据库中的用户信息和当前登陆用户名。
3.在用户进行添加,删除操作时,先判断权限是否足够,有权限则完成相应操作,修改数据库内容,否则提示没有权限

具体实现

1.登陆页面

<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.连接数据库对登陆名和密码进行验证

//登陆处理
 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);
 }//登陆处理结束

输入错误提醒函数

<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.成功登陆之后显示数据库中所有用户信息和当前登陆用户名

// 获取登陆名
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.修改,删除,添加操作的实现

修改,添加页面

<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>

效果如下:

删除页面

 <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>

效果图如下:

实现

// 调用修改函数
if ($_GET[update])
{
 modify("update");
}
// 调用添加函数
elseif($_GET[add])
{
 modify("add");
}
elseif($_GET[delete])
{
 modify("delete");
}

modify()函数的实现

// 修改数据函数
/*
点击修改超链接,跳转到修改页面
表单中,名字项指定要修改记录
权限和职务项为可修改内容
*/
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()函数的实现

// 判断修改用户名是否存在和该用户是否具有权限
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

usersession_unset();
session_start();
$_SESSION['变量名'] = "值";

在使用该变量的文本中打开session并取出该变量

session_start();
$NAME = $_SESSION['变量名'];

2.PHP连接MYSQL数据库,并对数据库进行查找,添加,删除操作

连接数据库

// 连接数据库
$db = mysql_connect("url", "用户名", "密码");
// 选择数据库
mysql_select_db("数据库名称",$db);

查找

$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))
{
 相关操作;
}

插入

$sql = "insert into 数据表 (字段1, 字段2, 字段3) values ('值1','值2','值3')";
mysql_query($sql);

删除

$sql = "delete from 数据表 where 字段名 = \"查找值\"";
mysql_query($sql);
// 关闭数据库
mysql_close($db);

3.表格提交前提醒

<form method="post" action="url" onsubmit="return confirm('请确认删除');">

4.在php中调用javascript函数

<?php
echo "<script type='text/javascript'>javascript函数;</script>";
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux中安装Python的交互式解释器IPython的教程

    IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPython会列出zlib模块下所有的属性.方法和类.完全可以取代自带的bash 下面介绍下linux安装IPython四种方法: 第一种:ipython源码安装 ipython的源码下载页面为:https://pypi.python.org/pypi/ipython 或者是到git页面下载:https://

  • phpmyadmin中为站点设置mysql权限的图文方法

    为了防止安全隐患,我们一般针对每个数据库都设置了独立的数据库访问帐号,该帐号仅有访问该数据库的权限.下面就让我们来具体演示一下: 1.首先我们要登陆phpMyAdmin,不做演示. 2.创建一个数据库,如下图,在phpMyAdmin右边窗口中,填写数据库名称,点创建即可.      例如我们这里创建一个名字为:cncmstest 的数据库      创建成功会有如下提示: 3.点击左上角的主页按钮,返回phpMyAdmin主界面: 4.在主界面的右边点击"权限"来创建数据库帐号. 5.

  • 浅析mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接.那么这时候就是非交互式操作. 在之前,我基本上不关系这两个属性,都是用的是mysql服务商推荐的默认值,就是8小时. 但是,从昨天开始,由于在新网租用了一个空间,而他的

  • PowerShell入门教程之高效使用PowerShell交互式运行环境的几个小技巧

    在开始关于脚本.对象和远程处理等复杂的功能之前,一直想再写一篇关于交互式运行环境的文章.因为我觉得这很重要,但是有什么是不重要呢?:)所以,说到底可能是个人喜好吧,我就是特别喜欢这种立等可取的交互方式. 如何高效地使用PowerShell的交互式运行环境呢?所谓"高效",既跟使用这个工具的熟练程度有关,也跟使用这个工具的习惯有关.习惯有无意中养成的,也有主动养成的.如果你恰好玩PowerShell不久,那么就从现在开始主动养成一些好习惯吧. 多用Tab键 在运行环境中,Tab键有补全内

  • ruby开发的交互式程序例子

    实现pry,ronin,msf类似的终端下交互功能,这里主要用到了ripl gem: 1.能够调用定义的方法,如help 2.能够执行系统命令 3.能够类似irb/pry进行ruby语言解析 安装: gem install ripl gem install ripl-shell_commands 示例 ripl这个gem,它也提供很多插件,如下是一个简单的终端下交互实现: require 'ripl' require 'ripl/shell_commands' require 'ripl/col

  • python实现定制交互式命令行的方法

    Python的交互式命令行可通过启动文件来配置. 当Python启动时,会查找环境变量PYTHONSTARTUP,并且执行该变量中所指定文件里的程序代码.该指定文件名称以及地址可以是随意的.按Tab键时会自动补全内容和命令历史.这对命令行的有效增强,而这些工具则是基于readline模块实现的(这需要readline程序库辅助实现). 此处为大家举一个简单的启动脚本文件例子,它为python命令行添加了按键自动补全内容和历史命令功能. [python@python ~]$ cat .python

  • node.js学习之交互式解释器REPL详解

    简介 repl是Node.js提供的一个Read-Eval-Print-Loop (REPL,读取-执行-输出-循环)实现,它即可以做为一个独立的程序使用,又可以包含在其它应用中使用.REPL是一个互式命令行解析器,它提供了一个交互式的编程环境,它可以实时的验证你所编写的代码,非常适合于验证Node.js和JavaScript的相关API. Node 自带了交互式解释器,可以执行以下任务: 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中. 执行 - 执行输入的数据

  • Shell脚本中非交互式修改密码的两种方法

    今天在写一个shell脚本的时候发现需要设置用户的密码,而设置密码是交互式的,这样在脚本中显然是不太好的,因此上网查找资料,发现了以下两种常见的非交互式设置密码的方式: 1:使用chpasswd chpasswd其实是通过用户输入'用户名:密码'来更改一组用户的密码,还是一个可以批量修改密码的工具,具体的用法详见chpasswd用法,这里只做简单的介绍 格式:# echo 用户名:密码 | chpasswd 实例: 添加一个doiido的帐号,密码为123456 复制代码 代码如下: # ech

  • Linux下交互式与非交互式修改用户密码的例子

    最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号的密码改为1234,后来还为了脚本化,很方便的执行,还使用了非交互式地修改用户的密码.简单记录一下吧. 1. 交互式配置本地用户的密码:passwd 命令 复制代码 代码如下: [root@host_221-81 ~]# passwd qa Changing password for user qa. New password: BAD PASSWORD: it is too short BAD PASSWORD: is

  • IIS 配置PHP站点的说明

    第一步:配置PHP 如果你下载的是安装版的php(appserv-win32-2.5.9.exe),按照以下步骤配置: 1.将php.ini-dist复制到 C:\Windows 目录下并改名为php.ini,复制php5ts.dll和libmysql.dll到 C:\Windows\system32 中. 2.用记事本打开php.ini,查找"extension_dir",然后把 extension_dir = "./"修改为 extension_dir = &q

随机推荐