>  기사  >  백엔드 개발  >  [PHP&MySQL] 비밀번호 수정 + URL을 통한 시스템 강제 진입 방지

[PHP&MySQL] 비밀번호 수정 + URL을 통한 시스템 강제 진입 방지

little bottle
little bottle앞으로
2019-04-16 17:48:092846검색

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

changeP wd .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
   }
}

?>
E

Checkinfo.php 으아악

예를 들어

system.php 시작 부분에 추가:

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

?>

참고: session_start(); 세션을 시작할 때 이전 코드는 어떤 출력도 가질 수 없습니다! (예: echo '...'; Alert("....");)

처음에 직접 던지는 것이 좋습니다

자세한 내용을 알고 싶다면

PHP 동영상 튜토리얼을 참조하세요.

mysql(PHP 중국어 웹사이트) 비디오 튜토리얼 배우기.

위 내용은 [PHP&MySQL] 비밀번호 수정 + URL을 통한 시스템 강제 진입 방지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제