//造成乱码的原因为数据库(源),网页编码,文件编码,php代码,数据库传输过程编码mysql_query('SET NAMES utf8')

header('Content-Type:text/html;charset=utf-8');

header('Cache-control:private');                //页面启用session之后,退回去时表单数据还存在。

session_start();                        //session_start()前面不能有内容输出

//连接服务器,数据库,(服务器的IP地址或者域名,用户名,密码)

$server = '127.0.0.1';

$user = 'root';

$pwd = '';

//将连接结果存入一个变量,并用错误抑制符@

@ $linkid = mysql_connect($server,$user,$pwd);

//输出错误,终止程序。

if(!$linkid)

{

  die('与服务器'.$server.'的连接失败,原因为'.mysql_error());

}

//选择数据库

$database = 'e1215cms';

$rs = mysql_select_db($database);

if(!$rs)

{

  die('选择数据库'.$database.'失败,错误原因为'.mysql_error());

}

//数据库传输过程编码mysql_query()该函数可以将代码放入服务器、数据库上运行。。

mysql_query('SET NAMES utf8');

将这部分代码作为独立文件,放入includes文件夹,将代码放入新建的config.php文件。

用require('../includes/config.php');调用.

//流程:入口页—login.html,用post方式提交到login.php,到数据库查询post过来的password和username。

$username = $_POST['username'];

$password = md5( $_POST['password'] );      //由于表单中的密码被加密,所以要用加密函数

$sql=" select * from `tb_admin` where `username` = '$username' and `password` = '$password' LIMIT 1";   //加快执行效率

//用双引号

$sql = 'SELECT FROM `tb_admin` WHERE `username ` = " '.$username.' " AND `password` = " '.$password.' " ';

$result = mysql_query($sql);              //$result代表执行sql语句后的结果集,用来判断sql语句是否执行成功

//判断sql语句是否出错,如果有错,终止程序,输出错误。如果查询数据为0,依然代表执行成功,不代表$result为false.

if(!$result)

{

  die(mysql_error());

}

//从查询到的结果集中抓取到$r

$data = mysql_fetch_assoc($result);

if(!$data)

{

  die('<script>alert("不正确");window.location="login.html"</script>')       //退回去,不保留原表单中的数据。

  die('<script>alert("不正确");window.history.back()</script>');        //退回去,能够保留原表单中的数据。

}

else

{

  //验证管理员登陆,用全局变量$_SESSION,服务器端生成文件,安全性高。$_COOKIE验证会员登录,客户端生成,安全性不高。

  $_SESSION['username'] = $data['username'];

  $_SESSION['id'] = $data['id'];

  echo '输入正确,您的ID是:'.$data['id'];

  print_r($r);                        //返回的为数组

  header('location:index.php');                 //PHP跳转

  die('<script>window.location="index.php";</script>')

}

检测$_SESSION,放入includes,

session_start();

if(!$_SESSION['username'] || !$_SESSION['id'])

{

  header('Location:login.html');

  die('<script>window.location="login.html";</script>');

}

//添加管理员,add-admin.php,验证功能尽量写在前端。

require(../includes/check-admin.php);

<script>

function check(obj)

{

  /*var n = document.getElementsByName('username')[0];    //getElementsByName抓取到的是数组,因此需要下标来指定值;*/

  var n = obj.elements['username'];    //返回的为对象或集合(自动判断是对象还是集合,适合单选按钮,复选框。)  OR

  var n = obj.username;

  if(n.value == '' )

  {

    alert('用户名不能为空');

    n.focus();          //定位光标到用户名填写框

    return false;

  }

  var p = obj.password;

  if(p.value )

  {

    alert('密码不能为空');

    p.focus();          //定位光标到用户名填写框

    return false;

  }

  if(p.value != obj.confirmpwd.value)

  {

    alert('密码输入不一致');

    p.focus();

    p.select();                 //获得焦点的同时,选中内容

    obj.confirmpwd.focus();          //定位光标到用户名填写框

    return false;

  }

}

</script>

<form action="admin_action.php" method="post" οnsubmit="return check(this)">

<p>用户名:<input type="text" name="username" /></p>

<p>密码:<input type="password" name="password" /></p>

<p>密码确认:<input type="password" id="confirmpwd" /></p>

<p><input tyep="submit" value="提交" /></p>

</form>

//管理员列表页

<?php

   require(../includes/check-admin.php);

  //查询所有管理员

  $sql = "SELECT * FROM e1215cms ORDER BY id DESC";   //将最新添加的管理员放在前面

  $result = mysql_query($sql);

  if(!$result)

  {

    die(mysql_error());

  } 

?>

<table>

  <tr>

    <th>ID</th>

    <th>用户名</th>

    <th>操作</th>

  </tr>

  <tr>

  <?php

    while($data = mysql_fetch_assoc($result))

    {

  ?>

    <td><?=$data['id']?></td>

    <td><?=$data['username']?></td>

    <td><a href="edit.php">编辑</a><a href="delete.php">删除</a></td>

  </tr>

  <?php

    }

  ?>

</table>

//管理员添加

<?php

header('Cache-control:private');                          //页面启用session之后,退回去时表单数据存在。(密码域和文件域除外)

session_start();

header('Content-Type:text/html;charset=utf-8');

?>

转载于:https://www.cnblogs.com/futan/archive/2012/12/18/php_admin_login.html

PHP管理员登陆、验证与添加(前端验证)相关推荐

  1. CTFHub笔记之WEB文件上传:无验证、前端验证、文件头检查

    小白一个,如有错误请指正! 一.无验证 我们这次来到了文件上传模块了,这是一个无验证的文件上传,那我们直接上传一个一句话木马即可. 代码: <?php@eval($_REQUEST[" ...

  2. 用户注册信息验证功能(前端+后台)

    一.写在前面罗里吧嗦的话 最近在写自己的第一个个人项目,开始写了很久了,但是每天没啥时间记录,趁着周末先记录一些思路和踩过的坑. 项目预计是做一个关于家装的电商网站,样式参考自土巴兔网站(我不是打广告 ...

  3. Django项目实战——7—(openid是否绑定用户的处理、用户基本信息渲染、添加和验证邮箱)

    1.openid是否绑定用户的处理 判断openid是否绑定过用户 使用openid查询该QQ用户是否在商城中绑定过用户. try:oauth_user = OAuthQQUser.objects.g ...

  4. vue firebase_如何使用Vue.js,Vuex,Vuetify和Firebase构建SPA:使用Firebase添加身份验证...

    vue firebase 第4部分:了解如何使用Firebase添加身份验证和购物车 (Part 4: learn how to use Firebase to add authentication ...

  5. jQuery前端验证(四)

    上一章简单介绍了jQuery前端基本验证(三),如果没有看过,请观看上一章 个人认为,Bootstrap提供的验证框架,是目前前端验证最好,最实用的框架.以后的前端验证,强烈建议均使用bootstra ...

  6. 关于iView UI的表单Form如何进行前端验证

    使用iView UI组件进行表单设计的时候,需要进行到的前端验证. 一.引入iView组件 二.表单结构设计完成 三.确保表单元素Form相关指令正确设定 <Formstyle="bo ...

  7. 杰奇CMS前端验证漏洞

    验环境 操作机: Windows XP 目标机:Windows 2003 目标网址:www.test.com 实验目的 掌握杰奇CMS上传漏洞的利用方法 了解如何对此漏洞进行修复 实验工具 中国菜刀: ...

  8. php sawgger token验证,Swagger中添加Token验证

    Swagger中添加Token验证 Swagger中添加Token验证 平常做项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎 ...

  9. 美多商城之用户中心(添加和验证邮箱)

    二.添加和验证邮箱 2.1 添加邮箱后端逻辑 1. 添加邮箱接口设计和定义 1.请求方式 选项 方案 请求方法 PUT 请求地址 /emails/ # 添加邮箱url(r'^emails/$', vi ...

  10. 日期的前端验证 jquery

    日期的前端验证 需求的效果 用户可以输入 yyyy-mm-dd 这样的格式 月和日可以是一位也可以是两位 数据要合法,月只能是1-12.日只能是1-31 年份根据需求不能太离谱就好 参考代码 // 日 ...

最新文章

  1. 2.6内核中被废弃的pci_present()
  2. 什么数字万用表可以测量噪声?
  3. UIBezierPath绘制虚线
  4. 网站被黑搜索快照被劫持怎么办
  5. maven pom java版本_Maven更新POM中的JDK版本(比如更新为JDK1.8)
  6. 用python写一个简单的爬虫_用Python编写一个简单的爬虫
  7. 如何处理Partner function occurs less than specified in customizing error message
  8. 使用 docker 编译运行 abp 项目
  9. 赌场圣手(从不失手)——隐马尔可夫!
  10. spring-data-redis和jedis版本对应问题
  11. 不要在 foreach 循环里进行元素的 remove / add 操作
  12. 深入分析MVC中通过IOC实现Controller依赖注入的原理
  13. 十进制度分秒lisp函数_十进制度批量转换度分秒
  14. 中兴C93E全光网配置
  15. mysql查询数据教程_mysql数据库的查询
  16. 看英语书记录的单词-5
  17. 关于-O0、O1、O2、O3优化
  18. Mac终端命令和连接服务器
  19. sql经典面试题50题
  20. Web2与Web3开发的不同之处

热门文章

  1. vue的多选框存储值操作
  2. Python time和datatime模块
  3. Java利用POI生成Excel强制换行
  4. 欧拉路径 之 poj 2513 Colored Sticks
  5. C++设计模式——简单工厂模式
  6. ASP.NET 实践:写入 Cookie
  7. 粒子滤波 演示与opencv代码
  8. ffmpeg转码速度控制方法
  9. 【用故事解读 MobX源码(一)】 autorun
  10. jsp/servlet学习笔记(核心编程)mysql部分