我一直在網站上工作,目前處於登錄/會話處理階段。PHP設計建議
我想知道你認爲什麼是更好的設計。 (這個網站將向公衆開放,所以它也應該是用戶友好的)。
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());
你可以給我你的設計以及。
謝謝
無論哪種方式,第一種方法不會太好。 define()方法用於設置全局常量。因此,如果您使用方法#1,它們將永遠不會成功登錄。 – Norguard
我強烈建議閱讀文檔並查看CI的['Tank Auth'](http://konyukhov.com/soft/tank_auth/)的代碼。 –
如果您應該使用過程式編程(第一個示例)或面向對象(第二個),您的要求是什麼。閱讀差異來找出你喜歡的東西。 OO有時難以讓你頭腦發熱,但它使得跟蹤大型節目變得更加容易。 –