PHP登录..有更好的方法吗?

标签 php mysql authentication

有更好的方法吗?


我可以在类里面开始类(class)吗? 并检查类中的是否 isset??

class users {
    function login($username, $password) {
        $stmt = $db->prepare("SELECT * FROM users WHERE username=? AND password =?");
        $result = $stmt->execute(array($username, $hashedPassword));
        // count the returned rows, if you have 1 then good.
        if($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            // get the data you need and store it in the session.
            $_SESSION['username'] = $row['username'];
            return TRUE;
        } else { return FALSE; }
    }
    function getForm() {
        return "<form method='post'>username <input type=text name=username>\n";
        return "password <input type=password name=password></form>;
    }
} 

我的目标是减少这里的代码:

$user = new users();
echo $user->getLoginForm()
if(isset($_POST['username'])) {
    if($users->login($_POST['username'], crypt($_POST['password'], $salt) == TRUE) {
        //logged in
        session_start();
        //other stuff
    } else { echo "error"; }
}

我对面向对象编程非常陌生 提前谢谢大家!

最佳答案

更好的方法是在客户端对密码进行哈希处理,这样密码就不会通过网络传输。

此外,如果您可以添加一个特殊的 token 来使用密码进行编码,它应该会提高安全性..(哈希值不会始终相同地通过网络传输)

另外添加数据库的 token 应该可以提高安全性,以便相同密码的哈希值在数据库中不相同。

另请注意,md5 已被破解,因此您应该至少使用 sha_256..

你的问题的答案是,是的,你可以在类的函数中启动 session 。但是如果你在脚本启动时不初始化它,你将无权访问你的 session 变量。

但是你应该更多地考虑的是使用一些标准库进行身份验证,这样它是安全的..

关于PHP登录..有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928097/

相关文章:

php - 如果某列中存在某个变量,则查询列出该行

php - 如何使用 where 和 like 语句从表中选择数据并回显它

javascript - Facebook 登录警告

authentication - Grails Spring Security登录失败未重定向到登录 View

php - 加密密码并存储在android上的数据库中

javascript - WooCommerce 单一产品页面上的倒计时器,直到产品销售结束

php - 来自 jQuery 或 JavaScript 的 XMLRPC 调用

mysql - wp_postmeta 还是自定义表?

mysql - 为什么innoDB会锁表

android - 如何从 Facebook 获取 ParseUser 的名称?