• PHP管理员登陆、验证与添加(前端验证)


    //造成乱码的原因为数据库(源),网页编码,文件编码,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" onsubmit="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');

    ?>

  • 相关阅读:
    docker中安装python3.8
    deeplearning系列(四)主成分分析与白化
    Aspect# 应用实例
    招兼职程序员(仅限北京)
    今天开始学Pattern Recognition and Machine Learning (PRML)书,章节1.2,Probability Theory 概率论(上)
    今天开始学Pattern Recognition and Machine Learning (PRML),章节1.2,Probability Theory (下)
    今天开始学Pattern Recognition and Machine Learning (PRML),章节1.1,介绍与多项式曲线拟合(Polynomial Curve Fitting)
    机器学习降维算法四:Laplacian Eigenmaps 拉普拉斯特征映射
    今天开始学Pattern Recognition and Machine Learning (PRML),章节1.6,Information Theory信息论简介
    Linux系统安装shapely报错:OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']解决办法
  • 原文地址:https://www.cnblogs.com/futan/p/php_admin_login.html
Copyright © 2020-2023  润新知