php安全密码生成器

php安全密码生成器,php,random,passwords,generator,Php,Random,Passwords,Generator,我一直在玩一个密码生成器,但我的php是。。。。充其量只是平庸。这里有很多密码生成器函数示例,所以我从这里开始。我无意中浏览了生成器和用户输入之间的界面,但需要一些建议来清理它 我想在密码长度中设置一个默认值,但如果我使用value=14设置一个值,比如说14,我似乎无法手动更改它。 另外,在生成密码之前,显示密码的带边框框非常小,如何将其设置为设定大小 从表单到函数使用post,然后通过会话将其带回来,这是beast方式吗 只是想学习 index.php <?php session_st

我一直在玩一个密码生成器,但我的php是。。。。充其量只是平庸。这里有很多密码生成器函数示例,所以我从这里开始。我无意中浏览了生成器和用户输入之间的界面,但需要一些建议来清理它

我想在密码长度中设置一个默认值,但如果我使用value=14设置一个值,比如说14,我似乎无法手动更改它。 另外,在生成密码之前,显示密码的带边框框非常小,如何将其设置为设定大小

从表单到函数使用post,然后通过会话将其带回来,这是beast方式吗

只是想学习

index.php

<?php
session_start();
?>
<!doctype html>
<head>
  <title>Password Generator</title>
</head>




      <h1>Password Generator</h1>
      <p>Just a basic password generator.</p>
      <form method="post" action="./pass.php">
      <table>
          <tr>
              <td colspan="2"><h3>Select Characters</h3></td>
          </tr>
          <tr>
              <td colspan="2"><input checked="checked" type="checkbox" name="alpha" /> Lowercase A-Z</td>
          </tr>
          <tr>
              <td colspan="2"><input checked="checked" type="checkbox" name="alpha_upper" /> Uppercase A-Z</td>
          </tr>
          <tr>
              <td colspan="2"><input checked="checked" type="checkbox" name="numeric" /> Numbers (0-9)</td>
          </tr>
          <tr>
              <td colspan="2"><input checked="checked" type="checkbox" name="special" /> Special Characters (.-+=_,!@$#*%<>[]{})</td>
          </tr>
          <tr>
              <td colspan="2"><h3 style="margin: 20px 0;">Password Length</h3></td>
          </tr>
          <tr>
              <td colspan="2"><input type="text" name="length" size="2" maxlength="2" /></td>
          </tr>
          <tr>
              <td colspan="2"><input type="submit" value="Generate" /></td>
          </tr>
          <tr>
              <td colspan="2">
                  <div style="padding: 20px 0;">
                      <div>Your Password:</div>

                    <div style='border:1px black solid; font-size: 14px; font-family: monospace; padding:3px; color:#000; background-color: #D2E0E6; margin: 0;'>
                        <?php
                        echo $_SESSION['password'];
                        ?>
                    </div>

</div>
<?php
session_destroy();
?>
              </td>
          </tr>
      </table>
    </form>

</body>
</html>
pass.php

<?php
$alpha = "abcdefghijklmnopqrstuvwxyz";
$alpha_upper = strtoupper($alpha);
$numeric = "0123456789";
$special = ".-+=_,!@$#*%<>[]{}";
$chars = "";

if (isset($_POST['length'])){
    if (isset($_POST['alpha']) && $_POST['alpha'] == 'on')
        $chars .= $alpha;

    if (isset($_POST['alpha_upper']) && $_POST['alpha_upper'] == 'on')
        $chars .= $alpha_upper;

    if (isset($_POST['numeric']) && $_POST['numeric'] == 'on')
        $chars .= $numeric;

    if (isset($_POST['special']) && $_POST['special'] == 'on')
        $chars .= $special;

    $length = $_POST['length'];
}else{
    $chars = $alpha . $alpha_upper . $numeric;
    $length = 9;
}

$len = strlen($chars);
$pw = '';

for ($i=0;$i<$length;$i++)
        $pw .= substr($chars, rand(0, $len-1), 1);

$pw = str_shuffle($pw);

session_start();
$_SESSION['password'] = $pw;

header("Location: index.php");
die();

?>

您可以将代码放在index.php顶部的pass.php中,然后将表单的action属性设置为index.php。这样,您就不必进行重定向,也不必将密码存储在会话中。否则,会话是好的。你也可以使用cookies,甚至是一个GET变量,比如重定向到index.php?password=THE_password,然后使用$_GET['password']抓取它。是的,这是一个好主意,所有一个php文件都让它变得更容易。。。我考虑过get,但我认为对于任何与密码相关的东西,将数据保留在url之外可能是个好主意。有没有一种方法可以在不调用index.php的情况下指向php文件?因此,在forms action属性中,无论名称如何更改,它都会加载相同的php文件?找到了吗