【PHP&MySQL】實作修改密碼 + 防止透過url強行進入系統

little bottle
發布: 2023-04-05 21:24:01
轉載
2891 人瀏覽過

●使用PHP MySQL實作修改密碼

本文講述了使用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();

 

/************************请在上方修改管理员密码,默认是&#39;1&#39; *************************/


 if( isset($_POST["submit"]) && $_POST["submit"] = "登录"){
    if($_POST[&#39;psd&#39;] == $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=&#39;{$nempas}&#39; WHERE name=&#39;admin&#39; ");

  //使用UPDATE语句修改数据库中的password字段,并且新的值来自 change.php页面输入的新密码

   WHERE语句必须写,否则会更新所有的字段

  mysqli_close($conn);
  ?>
  <script language="javascript">
   alert("change success");
   window.location.href="system.php";
  </script>
  <?php
 }else{
  echo &#39;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[&#39;psd&#39;] == $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開頭加入:

<?phpinclude &#39;checkInfo.php&#39;;?>
<!doctype html>
<html>
...... .. .. ..
</html>
登入後複製

 附註: session_start(); 啟動會話時,之前程式碼不能有任何輸出! (如echo '...';    alert("....");)

建議直接丟到開頭

想了解更多,請移步至PHP中文網的

PHP影片教學

mysql影片教學學習。

以上是【PHP&MySQL】實作修改密碼 + 防止透過url強行進入系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!