【问题标题】:PHP Create Session after Valid PasswordPHP在有效密码后创建会话
【发布时间】:2018-02-07 03:03:11
【问题描述】:

我想在访问者输入有效密码后创建一个 PHP 会话,这样我就可以向访问者显示一些隐藏的链接,即使在页面重新加载时也是如此。

<?php
if(isset($_POST['submit'])) {
    $password = crypt('sumpasswurd', password_hash('rasmuslerdorf', PASSWORD_BCRYPT)); // password

    if (hash_equals($password, crypt($_POST['password'], $password))) {
        echo 'VALID!';
        // CREATE SESSION HERE
    } else {
        echo 'INVALID';
    }
}

if(isset($_SESSION)) echo 'YOU ARE LOGGED IN WITH A VALID PASSWORD!';
?>
<form method="POST" action="">
    <input type="text" name="password">
    <input type="submit" name="submit" value="OK">
</form>

我怎样才能做到这一点?我的表单加密是否安全?

【问题讨论】:

  • 您不需要混淆password_hashcryptpassword_verify 应该用于确认用户输入是否等于已知哈希。
  • 那么....密码是什么?它是硬编码在你的文件中的吗?是rasmuslerdorf,还是sumpasswurd?如果它是这样硬编码的,为什么还要散列呢?
  • 它是sumpasswurd,我想如果有人能设法以某种方式看到密码,在这个过程中散列它是一个好习惯
  • 如果您对密码进行哈希处理并将哈希存储在文件中;如果你的代码中有文字密码,散列是绝对没有意义的。

标签: php forms session passwords


【解决方案1】:

手动会话以session_start() 函数开始。尽管您需要通过某种用户识别逻辑来保护会话。例如,您拥有用户的用户名并将其添加为会话变量,然后传递某种会话 id 以验证当前会话用户确实已登录。之后您必须在与用户关联的每个页面加载中检查这些变量。

在:// CREATE SESSION HERE,您可能想要使用这样的东西:

Session_start();
$_SESSION['username'] = $username;
// flollowed by session id logic

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多