溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

通過PHP&MySQL成功實(shí)現(xiàn)修改密碼 + 防止通過url強(qiáng)行進(jìn)入系統(tǒng)詳細(xì)步驟

發(fā)布時(shí)間:2020-05-09 15:29:31 來源:億速云 閱讀:250 作者:三月 欄目:編程語言

本文主要給大家介紹通過PHP&MySQL成功實(shí)現(xiàn)修改密碼 + 防止通過url強(qiáng)行進(jìn)入系統(tǒng)詳細(xì)步驟,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對(duì)性,對(duì)大家的參考意義還是比較大的,下面跟筆者一起了解下通過PHP&MySQL成功實(shí)現(xiàn)修改密碼 + 防止通過url強(qiáng)行進(jìn)入系統(tǒng)詳細(xì)步驟吧。                                                          

頁面:

index.php  登陸頁面,輸入默認(rèn)密碼登陸系統(tǒng)

check.php 核查頁面,通過查詢數(shù)據(jù)庫檢測密碼是否正確   ——> 正確,則進(jìn)入系統(tǒng)     或 錯(cuò)誤,提示“密碼錯(cuò)誤”,返回登錄頁面

system.php 系統(tǒng)頁面,內(nèi)含“修改密碼”鏈接

change.php 輸入新密碼修改頁面

changePwd.php 修改密碼頁面

關(guān)鍵代碼:

index.php

   <form action="check.php" method="post">    
   <p >請(qǐng)輸入密碼:</p><input type="password" name="psd"  />
    <button type="submit" name="submit" value="登錄" />登錄</button>
   </form>

check.php

<?php

$servername = "localhost";
$username = "用戶";
$password = "密碼";
$dbname = "數(shù)據(jù)庫名";


// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}

$sql = "SELECT password FROM admin";      //此處涉及名稱是admin的數(shù)據(jù)表,內(nèi)部有name 和password兩個(gè)字段,值分別是admin 和 1
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
     while($row = $result->fetch_assoc()) {
    $adminkey = $row["password"];             //設(shè)$adminkey是管理員密碼,將從數(shù)據(jù)表中讀取的數(shù)據(jù)賦值進(jìn)去
    }
}

$conn->close();

 

/************************請(qǐng)?jiān)谏戏叫薷墓芾韱T密碼,默認(rèn)是'1' *************************/


 if( isset($_POST["submit"]) && $_POST["submit"] = "登錄"){
    if($_POST['psd'] == $adminkey){       //如果輸入的密碼和數(shù)據(jù)庫中的默認(rèn)密碼相同,則進(jìn)入系統(tǒng)
  header("Location:system.php");  
  exit;
 }else{
 ?>
 <script language="javascript">                //如果密碼錯(cuò)誤,給出提示,返回登錄頁面
  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" >
  請(qǐng)輸入新密碼:<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 = "數(shù)據(jù)庫名";


  // 創(chuàng)建連接
  $conn = new mysqli($servername, $username, $password, $dbname);
  // Check connection
  
  mysqli_query($conn,"UPDATE admin SET password='{$nempas}' WHERE name='admin' ");

  //使用UPDATE語句修改數(shù)據(jù)庫中的password字段,并且新的值來自 change.php頁面輸入的新密碼

   WHERE語句必須寫,否則會(huì)更新所有的字段

  mysqli_close($conn);
  ?>
  <script language="javascript">
   alert("change success");
   window.location.href="system.php";
  </script>
  <?php
 }else{
  echo 'alert("change error");
 }
  ?>

●防止通過url強(qiáng)行進(jìn)入系統(tǒng)

比如,網(wǎng)站名是www.xxx.com,瀏覽者注意到這是某系統(tǒng)的登錄頁面后,可能一試 http://www.xxx.com/system.php 就繞過輸入密碼進(jìn)入了系統(tǒng)。。。。【小白級(jí)】

可以加一個(gè)檢查頁面 checkInfo.php

先在密碼核查頁面 check.php 更改:

if( isset($_POST["submit"]) && $_POST["submit"] = "登錄"){

   if($_POST['psd'] == $adminkey){

  session_start();
  $_SESSION["loginKey"] = 101;                   //101隨緣弄的,別的也行
 // session 變量用于存儲(chǔ)關(guān)于用戶會(huì)話(session)的信息,或者更改用戶會(huì)話(session)的設(shè)置。Session 變量存儲(chǔ)單一用戶的信息,并且對(duì)于應(yīng)用程序中的所有頁面都是可用的

所以,可利用此,只有通過密碼驗(yàn)證,才會(huì)生成$_SESSION["loginKey"],從而在之后的頁面如system.php 的開頭加入檢查頁面 checkInfo.php ,檢查有沒有生成的$_SESSION["loginKey"]

就可以辨別有沒有繞過密碼強(qiáng)行進(jìn)入

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 'checkInfo.php';?>
<!doctype html>
<html>
...... .. .. ..
</html>

注: session_start(); 啟動(dòng)會(huì)話時(shí),之前代碼不能有任何輸出?。ㄈ鏴cho '...';    alert("....");)

建議直接扔到開頭

看完以上關(guān)于通過PHP&MySQL成功實(shí)現(xiàn)修改密碼 + 防止通過url強(qiáng)行進(jìn)入系統(tǒng)詳細(xì)步驟,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識(shí)信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI