Php 显示函数中生成的密码

Php 显示函数中生成的密码,php,function,passwords,Php,Function,Passwords,我是一个PHP初学者,我正在做一个需要登录/注销页面的网站。 为了更清楚,我决定将所有与铭文相关的内容放在一个名为addUser的函数上。我的问题如下:该函数接受用户名和邮件地址参数,生成随机密码,并将数组$user存储在文件中,该数组包含用户名、邮件地址和密码的SHA1散列。如果所有过程都正常,则函数返回true;如果没有用户名或邮件地址,或存在类似用户名,则函数返回false 我的问题是:调用此函数时,如何安全地显示生成的密码 谢谢你,如果我的问题很琐碎,我很抱歉,但我还没有找到任何解决办法

我是一个PHP初学者,我正在做一个需要登录/注销页面的网站。 为了更清楚,我决定将所有与铭文相关的内容放在一个名为addUser的函数上。我的问题如下:该函数接受用户名和邮件地址参数,生成随机密码,并将数组$user存储在文件中,该数组包含用户名、邮件地址和密码的SHA1散列。如果所有过程都正常,则函数返回true;如果没有用户名或邮件地址,或存在类似用户名,则函数返回false

我的问题是:调用此函数时,如何安全地显示生成的密码

谢谢你,如果我的问题很琐碎,我很抱歉,但我还没有找到任何解决办法

添加用户功能:

function addUser($pseudo, $mail)
{
$pseudo = preg_replace('/\s+/', '', $pseudo);
$required = array($pesudo, $mail); 
foreach ($required as $field){
    if (empty($_POST[$field])){
        return(false);
    }
}
else{
// put the existing username test.
$password = random_password();
echo $password;
$hash = sha1($password);
$user = array(
    "pseudo" => $pseudo,
    "mail" => $email,
    "hash" => $hash,
);
$user = serialize($user);
file_put_contents('db', $user."\n", FILE_APPEND);
return(true);
unset($password);
}

如果生成并显示密码,那么它就永远不会真正安全。你可能想考虑,而不是给别人分配密码,你通过电子邮件给他们一个唯一的密钥ID,然后设置他们的密码。 或者减少所有功能,直到在登录时提交自定义密码


当然还有“为什么不允许用户首先设置自己的密码?”

请遵守建议不要这样做!至少,散列用户密码并存储该散列


但是,对于您想要做的事情,您可以在失败时返回FALSE,在成功时返回hash(也就是说,不要返回TRUE)。调用此函数时,请检查FALSE,并假设not FALSE表示“true”-ish。

通常,生成随机密码并分发给用户是一种不好的方法。不应使用初始(随机)密码,因此不必知道。在生成帐户后,为初始登录提供具有有限生存期的登录令牌。该令牌(或者更好的是带有该令牌的链接)可以通过电子邮件发送,这样您就自动实现了今天所需和预期的双重选择。如果您真的想生成随机密码,那么除了以纯文本形式向用户显示外,没有其他选择。没有保存和非安全的方法,你只需在页面上显示。我使用随机生成的密码,因为我缺乏技能。在不久的将来,我将使用用户设置的密码,但现在,随机生成的密码就可以了,例如,使用有限的生命周期?您的问题的答案是“显示生成的密码(或任何密码)永远不会安全”。缺乏技能?你将允许人们登录,在清除标签密码、加密密码的过程中基本上没有区别。。。此外,将用户信息存储在文件中是不安全的,而且隐私管理很差(用户的电子邮件放在一个没有标记且易于获取的文件中)好吧,我花了很长时间,但正如大家所说,我决定使用用户定义的密码,并且该功能不再存在。