問題 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 ドキュメントで接続情報を定義できると聞きましたが、これはより安全な方法です。どうすればこれを行うことができますか?