我一直在网站上工作,目前处于登录/会话处理阶段。
我想知道你认为什么是更好的设计。 (这个网站将向公众开放,因此它也应该是用户友好的。)
P.S。对不起,如果这不是正确的php'约定',我习惯于c / c ++编程。
设计#1:
define("LOGGED_IN", false);
define("USERNAME", "Guest");
define("PASSWORD", "");
define("PLAYER_ID", -1);
...
if (!LOGGED_IN) {
header("Location: login.php");
} else {
...
}
...
if ({condition for successful login}) {
define("LOGGED_IN", true);
define("USERNAME", "AJ");
define("PASSWORD", "nottellingu");
define("PLAYER_ID", 1);
}
...
printf("Hi, %s. Have a nice day.", USERNAME);
设计#2:
class user {
private $id;
private $logged_in;
private $username;
private $password;
public function __construct($id, $username, $password, $logged_in = false) {
$this->id = $id;
... blablabla
}
public function get_id() {
return $this->id;
}
... blablabla (pretend i declared all needed functions)
}
...
if ({condition for successful login}) {
$id = get_userid($_SESSION['USERNAME']]);
$user = new user($id, $_SESSION['USERNAME'], $_SESSION['PASSWORD'], true);
}
...
printf("Hi, %s. Have a nice day.", $user->get_username());
你也可以给我你的设计。
由于
答案 0 :(得分:1)
我认为无论哪种方式都可以。这实际上取决于你想要完成的事情。如果您要不断提取用户信息,那么课程可能会更好。如果您只需要一些基本的东西,如ID和名称,以及他们是否登录,第一个选项更简单,并且可以正常工作。
当你可以用一种简单的方式完成某些事情时,没有必要复杂化。
答案 1 :(得分:1)
IMO,设计方法#2更好。您不仅可以获得与用户相关的任何内容的封装,而且它也是模块化的,因此您可以在代码库中的任何位置引用任何属性。
您可能还想进行一些谷歌搜索,看看是否有可以使用的独立用户登录系统,而不是重新发明轮子。