Я изучаю PHP-ориентированный объект, и я хочу запросить некоторые данные из базы данных и показать их на странице. В принципе у меня есть 2 файла, который выглядит примерно так:Правильно ли этот объектно-ориентированный код PHP?
login.php
dashboard.php
В моем login.php
я закодированы это для того, чтобы подписать пользователя на моем сайте:
<?php
class User{
private $db;
public function __construct(){
$this->db = new Connection();
$this->db = $this->db->dbConnect();
}
public function Login($name, $pass){
if(!empty($name)&&!empty($pass)){
$st = $this->db->prepare("select * from admins where username=? and password=?");
$st->bindParam(1,$name);
$st->bindParam(2,$pass);
$st->execute();
if($st->rowCount() == 1){
header('Location: maint/dashboard.php');
$_SESSION["admin_username"] = $name;
} else {
echo "No user!";
}
}
}
}
?>
Как вы можете видеть, что я поставил сессию переменная, которая называется $_SESSION["admin_username"]
на линии 16. Таким образом, в этом случае я могу быть в состоянии извлекать данные из БД по ней ..
а дальше, я сделал это как мой admin.class.php
, который идет как это:
<?php
class Admin{
private $db;
public function __construct(){
$this->db = new Connection();
$this->db = $this->db->dbConnect();
$inf = $this->db->prepare("select * from admins where username = ".$_SESSION['admin_username']."");
$inf->execute();
if($st->rowCount() == 1){
while ($record = mysql_fetch_array($st)) {
$this->username[] = $record['username'];
}
}
public function get_name() {
return $this->username[];
}
}
?>
Затем я добавил этот код dashboard.php
:
<?php
$adm = new Admin();
echo $adm->get_name();
?>
Он должен получить имя пользователя из базы данных и показать его на странице, но всякий раз, когда я запускаю этот код, я получаю эту ошибку:
Синтаксической ошибки : синтаксическая ошибка, неожиданное «публичное» (T_PUBLIC) в admin.class.php в строке 16
Так что же случилось? Я думаю, что с ними должна быть проблема, как я кодирую. Каков правильный способ получения данных из базы данных с помощью переменной сеанса в oop?
Вы пропустили фигурные скобки в своих циклах 'if' и' while' в методе '__construct'. Он не закрыт. – NoLifeKing
Правильно использовать пароли Hash с помощью [API Hash API] (http://php.net/manual/de/book.password.php) PHP. Если у вас еще нет PHP 5.5, используйте пакет [Compatibility Pack] (https://github.com/ircmaxell/password_compat), опубликованный в GitHub. –
OP, как @NoLifeKing сказал, вы должны либо удалить открытую скобку, где начинается '' ', либо закрыть ее перед закрытием скобки' if'. –