使用PHP、MySQL實現修改密碼 + 防止經過url強行進入系統

●使用PHP+MySQL實現修改密碼javascript

頁面:php

  • index.php  登錄頁面,輸入默認密碼登錄系統
  • check.php 覈查頁面,經過查詢數據庫檢測密碼是否正確   ——> 正確,則進入系統     或 錯誤,提示「密碼錯誤」,返回登陸頁面
  • system.php 系統頁面,內含「修改密碼」連接
  • change.php 輸入新密碼修改頁面
  • changePwd.php 修改密碼頁面

關鍵代碼:html

index.phpjava

    <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強行進入系統mysql

好比,網站名是www.xxx.com,瀏覽者注意到這是某系統的登陸頁面後,可能一試 http://www.xxx.com/system.php 就繞過輸入密碼進入了系統。。。。【小白級】sql

 

能夠加一個檢查頁面 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("....");)
建議直接扔到開頭
相關文章
相關標籤/搜索