有更好的方法吗?
我可以在类里面开始类(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/