zoukankan      html  css  js  c++  java
  • 使用PHP、MySQL实现修改密码 + 防止通过url强行进入系统

    ●使用PHP+MySQL实现修改密码

    页面:

    • index.php  登陆页面,输入默认密码登陆系统
    • check.php 核查页面,通过查询数据库检测密码是否正确   ——> 正确,则进入系统     或 错误,提示“密码错误”,返回登录页面
    • system.php 系统页面,内含“修改密码”链接
    • change.php 输入新密码修改页面
    • changePwd.php 修改密码页面

    关键代码:

    index.php

        <form action="check.php" method="post">
        <p >请输入密码:</p><input type="password" name="psd"  />
        <button type="submit" name="submit" value="登录" />登录</button>
       </form>
    check.php
    <?php
    $servername = "localhost";
    $username = "用户";
    $password = "密码";
    $dbname = "数据库名";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }
    $sql = "SELECT password FROM admin";      //此处涉及名称是admin的数据表,内部有name 和password两个字段,值分别是admin 和 1
    $result = $conn->query($sql);
     
    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
        $adminkey = $row["password"];             //设$adminkey是管理员密码,将从数据表中读取的数据赋值进去
        }
    }
    $conn->close();
     
    /************************请在上方修改管理员密码,默认是'1' *************************/

     if( isset($_POST["submit"]) && $_POST["submit"] = "登录"){
        if($_POST['psd'] == $adminkey){       //如果输入的密码和数据库中的默认密码相同,则进入系统
      header("Location:system.php"); 
      exit;
     }else{
     ?>
     <script language="javascript">                //如果密码错误,给出提示,返回登录页面
      alert("password error");
      window.location.href="index.php";
     </script>
     <?php
       }
    }
    ?>
    system.php
    <a href="change.php" class="chang">修改密码</a>
    change.php
    <form action="changPwd.php" method="post" >
      请输入新密码:<input type="password" name="new_psd">
      <button type="submit" name="submit" value="修改" class="btn "/>修改</button>
     </form>
    changePwd.php
    <?php
     if( isset($_POST["submit"]) && $_POST["submit"] = "修改"){
      $nempas = $_POST["new_psd"];
      $servername = "localhost";
      $username = "用户名";
      $password = "密码";
      $dbname = "数据库名";

      // 创建连接
      $conn = new mysqli($servername, $username, $password, $dbname);
      // Check connection
      
      mysqli_query($conn,"UPDATE admin SET password='{$nempas}' WHERE name='admin' ");
      //使用UPDATE语句修改数据库中的password字段,并且新的值来自 change.php页面输入的新密码
       WHERE语句必须写,否则会更新所有的字段
      mysqli_close($conn);
      ?>
      <script language="javascript">
       alert("change success");
       window.location.href="system.php";
      </script>
      <?php
     }else{
      echo 'alert("change error");
     }
      ?>
     

    ●防止通过url强行进入系统

    比如,网站名是www.xxx.com,浏览者注意到这是某系统的登录页面后,可能一试 http://www.xxx.com/system.php 就绕过输入密码进入了系统。。。。【小白级】

    可以加一个检查页面 checkInfo.php

    先在密码核查页面 check.php 更改:
     
    if( isset($_POST["submit"]) && $_POST["submit"] = "登录"){
       if($_POST['psd'] == $adminkey){
      session_start();
      $_SESSION["loginKey"] = 101;                   //101随缘弄的,别的也行
     // session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的
    所以,可利用此,只有通过密码验证,才会生成$_SESSION["loginKey"],从而在之后的页面如system.php 的开头加入检查页面 checkInfo.php ,检查有没有生成的$_SESSION["loginKey"]
    就可以辨别有没有绕过密码强行进入
    header("Location:system.php"); 
      exit;
     }else{
     ?>
     <script language="javascript">
      alert("password error");
      window.location.href="index.php";
     </script>
     <?php
       }
    }
    ?>
     
    再写checkInfo.php
    <?php
     session_start();
     if(!isset($_SESSION["loginKey"])){    
      ?>
      <script language="javascript">
      alert("please land first");
      window.location.href="index.php";
      </script>
      <?php
     }
    ?>
     
     
    举例
    在system.php开头加入:
    <?php
    include 'checkInfo.php';
    ?>
    <!doctype html>
    <html>
    ...... .. .. ..
    </html>
     
    注: session_start(); 启动会话时,之前代码不能有任何输出!(如echo '...';    alert("....");)
    建议直接扔到开头
  • 相关阅读:
    TensorFlow学习('utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
    Python常用库之三:Matplotlib
    线性回归 Python实现
    go 算法 查询字符在字符串中的位置
    Python与Go快速排序
    Python与Go斐波那契数列
    Python与Go选择排序
    Python与Go插入排序
    Python与Go冒泡排序
    git clone直接提交用户名和密码
  • 原文地址:https://www.cnblogs.com/expedition/p/10638678.html
Copyright © 2011-2022 走看看