Maison  >  Article  >  développement back-end  >  [PHP&MySQL] Modifier le mot de passe + empêcher l'entrée forcée dans le système via l'URL

[PHP&MySQL] Modifier le mot de passe + empêcher l'entrée forcée dans le système via l'URL

little bottle
little bottleavant
2019-04-16 17:48:092909parcourir

QuantityUtilisez PHP+MySQL pour changer le mot de passe

Cet article décrit le code spécifique et le processus de fonctionnement de l'utilisation de PHP+MySQL pour changer le mot de passe.

Page :

page de connexion index.php, entrez le mot de passe par défaut pour vous connecter au système

vérifiez. page de vérification php, passez Interrogez la base de données pour vérifier si le mot de passe est correct ——> S'il est correct, entrez le système ou l'erreur, demandez "Mot de passe incorrect", revenez à la page de connexion

page système system.php , contenant le lien "Changer le mot de passe"

change.php Entrez la nouvelle page de changement de mot de passe

changePwd.php Page de changement de mot de passe

Code clé :

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");
 }
  ?>

●Empêcher l'entrée forcée dans le système via l'URL

Par exemple, si le nom du site Web est www.xxx.com, parcourez. Après que le journaliste a remarqué qu'il s'agissait de la page de connexion d'un certain système, il a peut-être contourné la saisie du mot de passe et est entré dans le système en essayant http://www. .xxx.com/system.php. . . . [Niveau débutant]

Vous pouvez ajouter une page de vérification checkInfo.php

Vérifiez d'abord le mot de passe Page check.php Changement :

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
   }
}

?>

Puis écrivez checkInfo.php

<?php
 session_start();
 if(!isset($_SESSION["loginKey"])){    
  ?>
  <script language="javascript">
  alert("please land first");
  window.location.href="index.php";
  </script>
  <?php
 }

?>

Exemple

Ajouter au début de system.php :

<?phpinclude &#39;checkInfo.php&#39;;?>
<!doctype html>
<html>
...... .. .. ..
</html>

Remarque : lors du démarrage d'une session, le code précédent ne peut pas avoir n'importe quelle sortie! (Comme echo '...'; alert("....");)

Il est recommandé de le lancer directement au début

Pour plus d'informations, veuillez vous rendre sur le site Web PHP chinois Tutoriel vidéo PHP et Tutoriel vidéo MySQL pour apprendre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer