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