KT客棧

Web程式交流 & 聊幹畫 / 心情手札

【PHP】6自訂函式-6.5 取得亂數密碼

*PHP  6自訂函式-6.5  取得亂數密碼
6.5 取得亂數密碼
自訂函式中,我們可以(1)設定一個自訂的傳參方法,接著(2)設定一組字串(數字+符號+英文),將其存入變數,最後(3)透過預設的空字串變數在迴圈中做比對,當值小於傳入參數便會執行迴圈來撈出random的亂數值。此方法可用於核對資料、忘記密碼時可以補發新密碼等。
PS.以下程式碼範例均為寫在同一頁面。


附帶一提關於現行的php設定密碼,基本上也都不建議再用早期的md5、sha等方式,建議以password_hash的雜湊加密以增強您密碼的安全度,有時間的話我再來說明,這邊就不贅述。


#設定產生亂數的自訂函式
<?php
/*自訂一個產生亂數碼的傳參函式*/
function make_random_pass($num){
  $random = "0123456789@&_abcdefghijklmnopqrstuvwxyz";
  //建立一個空的字串來儲存亂數密碼
  $str = "";
  //當空字串$str小於我們傳入的參數時,開始往下執行迴圈
  while(strlen($str)<$num){
    //substr(存取字串的變數, 由哪個字元開始擷取, 取出幾個字元)
    //rand(),代表由0-z之間,填入9表示剃除0-8從9到z來做為開端
    //strlen()計算出$random內的字串長度
    //最後的1,代表取的一個字元後,再合併到$str直到字數符合傳入參數值
    $str .= substr($random, rand(9,strlen($random)), 1);
  }
  return($str);
}
?>

#傳入參數、預設帳號值、送出表單值存入變數
<?php
  //輸入參數8,呼叫出隨機密碼
  $result = make_random_pass(8);
  //設定帳號值
  $account = "ktman";
  //表單送出的參數值,存入$check
  @$check = $_POST["check"];
?>

#若帳號值是"ktman",就會秀出新的亂數密碼,反之會出現帳號有誤的提示
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>6 自訂函式-亂數函式(自動產生亂碼)</title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
  <form action="" method="POST">
    <?php
    if(isset($check) && ($check != $account)){
      echo $check."這帳號有錯誤!";
    } elseif($check == $account) {
      echo "新密碼 : ".$result;
    } else {
        echo "";
    }
    ?>
    <table border="1">
      <tr>
        <td>輸入帳號</td>
        <td><input type="text" name="check" required></td>
      </tr>
      <tr>
        <td colspan="2">
          <input type="submit" value="送出">
          <input type="reset" value="重設">
        </td>
      </tr>
    </table>
  </form>
  </body>
</html>





沒有留言:

張貼留言

@templatesyard