当前位置:首页 > PHP教程 > php高级应用 > 列表

【PHP&MySQL】实现修改密码 + 防止通过url强行进入系统

发布:smiling 来源: PHP粉丝网  添加日期:2020-02-18 10:46:10 浏览: 评论:0 

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

本文讲述了使用PHP+MySQL实现修改密码的具体代码,以及操作过程。

页面:

index.php 登陆页面,输入默认密码登陆系统

check.php 核查页面,通过查询数据库检测密码是否正确 ——> 正确,则进入系统 或 错误,提示“密码错误”,返回登录页面

system.php 系统页面,内含“修改密码”链接

change.php 输入新密码修改页面

changePwd.php 修改密码页面

关键代码:

index.php

  1. <form action="check.php" method="post">     
  2.  
  3. <p >请输入密码:</p><input type="password" name="psd"  /> 
  4.  
  5.  <button type="submit" name="submit" value="登录" />登录</button> 
  6.  
  7. </form> 

check.php

  1. <?php 
  2.  
  3. $servername = "localhost"
  4.  
  5. $username = "用户"
  6.  
  7. $password = "密码"
  8.  
  9. $dbname = "数据库名"
  10.  
  11.  
  12.  
  13.  
  14.  
  15. // 创建连接 
  16.  
  17. $conn = new mysqli($servername$username$password$dbname); 
  18.  
  19.  
  20.  
  21. if ($conn->connect_error) { 
  22.  
  23.     die("连接失败: " . $conn->connect_error); 
  24.  
  25.  
  26.  
  27.  
  28. $sql = "SELECT password FROM admin";      //此处涉及名称是admin的数据表,内部有name 和password两个字段,值分别是admin 和 1 
  29.  
  30. $result = $conn->query($sql); 
  31.  
  32.    
  33.  
  34. if ($result->num_rows > 0) { 
  35.  
  36.      while($row = $result->fetch_assoc()) { 
  37.  
  38.     $adminkey = $row["password"];             //设$adminkey是管理员密码,将从数据表中读取的数据赋值进去 
  39.  
  40.     } 
  41.  
  42.  
  43.  
  44.  
  45. $conn->close();    
  46.  
  47.  
  48. /************************请在上方修改管理员密码,默认是'1' *************************/   
  49.  
  50.  
  51.  if( isset($_POST["submit"]) && $_POST["submit"] = "登录"){ 
  52.  
  53.     if($_POST['psd'] == $adminkey){       //如果输入的密码和数据库中的默认密码相同,则进入系统 
  54.  
  55.   header("Location:system.php");   
  56.  
  57.   exit
  58.  
  59.  }else
  60.  
  61.  ?> 
  62.  
  63.  <script language="javascript">                //如果密码错误,给出提示,返回登录页面 
  64.  
  65.   alert("password error"); 
  66.  
  67.   window.location.href="index.php"
  68.  
  69.  </script> 
  70.  
  71.  <?php 
  72.  
  73.    } 
  74.  
  75.  
  76. ?> 

system.php

  1. <a href="change.php" class="chang">修改密码</a> 

change.php

  1. <form action="changPwd.php" method="post" > 
  2.  
  3.   请输入新密码:<input type="password" name="new_psd"> 
  4.  
  5.   <button type="submit" name="submit" value="修改" class="btn "/>修改</button> 
  6.  
  7.  </form> 

changePwd.php

  1. <?php 
  2.  
  3.  if( isset($_POST["submit"]) && $_POST["submit"] = "修改"){ 
  4.  
  5.   $nempas = $_POST["new_psd"]; 
  6.  
  7.   $servername = "localhost"
  8.  
  9.   $username = "用户名"
  10.  
  11.   $password = "密码"
  12.  
  13.   $dbname = "数据库名"
  14.  
  15.  
  16.  
  17.  
  18.  
  19.   // 创建连接 
  20.  
  21.   $conn = new mysqli($servername$username$password$dbname); 
  22.  
  23.   // Check connection 
  24.  
  25.     
  26.  
  27.   mysqli_query($conn,"UPDATE admin SET password='{$nempas}' WHERE name='admin' "); 
  28.  
  29.  
  30.  
  31.   //使用UPDATE语句修改数据库中的password字段,并且新的值来自 change.php页面输入的新密码 
  32.  
  33.  
  34.  
  35.    WHERE语句必须写,否则会更新所有的字段 
  36.  
  37.  
  38.  
  39.   mysqli_close($conn); 
  40.  
  41.   ?> 
  42.  
  43.   <script language="javascript"
  44.  
  45.    alert("change success"); 
  46.  
  47.    window.location.href="system.php"
  48.  
  49.   </script> 
  50.  
  51.   <?php 
  52.  
  53.  }else
  54.  
  55.   echo 'alert("change error"); 
  56.  
  57.  } 
  58.  
  59.   ?> 

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

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

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

先在密码核查页面 check.php 更改:

  1. if( isset($_POST["submit"]) && $_POST["submit"] = "登录"){ 
  2.  
  3.    if($_POST['psd'] == $adminkey){ 
  4.  
  5.   session_start(); 
  6.  
  7.   $_SESSION["loginKey"] = 101;                   //101随缘弄的,别的也行 
  8.  
  9.  // session 变量用于存储关于用户会话 

(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的.

所以,可利用此,只有通过密码验证,才会生成$_SESSION["loginKey"],从而在之后的页面如system.php 的开头加入检查页面 checkInfo.php ,检查有没有生成的$_SESSION["loginKey"]

就可以辨别有没有绕过密码强行进入

  1. header("Location:system.php");   
  2.  
  3.  
  4.   exit
  5.  
  6.  }else
  7.  
  8.  ?> 
  9.  
  10.  <script language="javascript"
  11.  
  12.   alert("password error"); 
  13.  
  14.   window.location.href="index.php"
  15.  
  16.  </script> 
  17.  
  18.  <?php 
  19.  
  20.    } 
  21.  
  22.  
  23.  
  24.  
  25. ?> 

再写checkInfo.php

  1. <?php 
  2.  
  3.  session_start(); 
  4.  
  5.  if(!isset($_SESSION["loginKey"])){     
  6.  
  7.   ?> 
  8.  
  9.   <script language="javascript"
  10.  
  11.   alert("please land first"); 
  12.  
  13.   window.location.href="index.php"
  14.  
  15.   </script> 
  16.  
  17.   <?php 
  18.  
  19.  } 
  20.  
  21. ?> 

举例

在system.php开头加入:

  1. <?phpinclude 'checkInfo.php';?> 
  2.  
  3. <!doctype html> 
  4.  
  5. <html> 
  6.  
  7. ...... .. .. .. 
  8.  
  9. </html> 

注: session_start(); 启动会话时,之前代码不能有任何输出!(如echo '...'; alert("....");)

建议直接扔到开头.

Tags: PHP url强行进入系统

分享到: