【发布时间】:2014-01-10 13:04:45
【问题描述】:
当我从事过程 PHP 编程时,我会有一个登录页面,用户的会话将在其中创建和存储。然后,在每一页上,我只显示用户名并检索我需要的信息。
但是我很无奈,你在对象编程中是如何实现的呢?
所以,程序(login.php):
if ( $_POST['password'] != '' && $_POST['username'] != '' ) {
// check if password&username combination exists in database etc.
$_SESSION['user_id'] = $user_id;
$_SESSION['username'] = $username;
}
我假设它会在 OOP 中这样做:
// include user class
if ( $_POST['password'] != '' && $_POST['username'] != '' ) {
// check if password&username combination exists in database etc.
$user = new User();
$user->id = $userId;
$user->username = $username;
但问题是:我在哪里创建会话?而且这个对象不会存在于这个“login.php”页面之外,因为我在那里创建了它。如何让这些信息随处可见?
您如何使用特殊类(比如说 PDO)从数据库中获取信息,而不将查询放入用户类中?
非常感谢,我就是看不懂结构
【问题讨论】:
-
除了下面的答案之外,如果这将成为一个包含许多不同文件的大型网站的一部分,我建议您通过自动添加一个“主文件”来开始每个脚本执行让您设置所需的一切,例如启动用户类(因此您不必在每个页面上重写代码)。如果允许您使用 apache 指令,请使用“auto_prepend_file”php 标志,否则在每个页面的顶部使用 require/include。