问题 1 我在下面有这段代码,而且我一直听到人们谈论使用大量的类。将下面的代码作为一个类对我有什么好处(我已经将数据转换为对象),我将如何去做?(我是 OOP PHP 新手)。
try {
$connection = new PDO(DATA, USER, PASSWORD);
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $error) {
PDOcrash($error);
}
// Scrubbing remember data
$_POST['remember'] = (int)$_POST['remember'];
// Query the database for the unique salt
$query = $connection->prepare("SELECT id, salt FROM {$_SESSION['environment']->database}.system_user WHERE username = :username LIMIT 1");
$query->execute(array(':username' => $_POST['username']));
$security = $query->fetch(PDO::FETCH_OBJ);
$query->closeCursor();
// Form the hash using sha1 alrorithm
$_POST['password'] = sha1(sha1($security->salt) . sha1($_POST['password']));
$query = $connection->prepare("SELECT id, centre, reference, first_name, last_name FROM {$_SESSION['environment']->database}.system_user WHERE username = :username AND password = :password");
$query->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));
$_SESSION['user'] = $query->fetch(PDO::FETCH_OBJ);
$query->closeCursor();
第 2 期
对于此代码块:
try {
$connection = new PDO(DATA, USER, PASSWORD);
} catch (PDOException $error) {
PDOcrash($error);
}
我正在使用常量来定义我的连接详细信息,但它们似乎只有在我直接在页面上定义它们时才有效。我认为常数会在整个系统中保持不变。如果我将我的define()
函数移动到之前遇到的页面,它们就不起作用。这是否意味着常量的范围是单个页面?我还听说您可以在一些单独的 apache 文档中定义连接信息,这是一种更安全的方法。我该怎么做呢?