私はPHPオブジェクト指向を学んでおり、データベースからいくつかのデータを照会し、それらをページに表示したいと思います。基本的に私はこのようになります2つのファイルがあります:私のlogin.php
でこのPHPオブジェクト指向コードは正しいですか?
login.php
dashboard.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!";
}
}
}
}
?>
私はセッションを設定しています
:だから私は、それによって、DBからデータを取得できるようにすることができ、このようにライン16上$_SESSION["admin_username"]
と呼ばれる変数..
そして次は、私はこのように書きます私の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();
?>
それは、データベースからユーザー名を取得し、ページに表示されますが、私はこのコードを実行するたびに、私はこのエラーを取得する必要があります。
パースエラー:構文エラー、予期しない 'public'(T_PUBLIC)in admin.class.php 16行目
どうしたのですか?彼らがコードするように問題がなければならないと思います。 oopのセッション変数によってデータベースからデータを取得する正しい方法は何ですか?
あなたは '__construct'メソッドの' if'と 'while'ループで中括弧を見逃しました。それは閉じていない。 – NoLifeKing
PHPの[Password Hashing API](http://php.net/manual/de/book.password.php)を使用して正しくパスワードをハッシュします。 PHP 5.5をまだお持ちでない場合は、GitHubに掲載されている[Compatibility Pack](https://github.com/ircmaxell/password_compat)を使用してください。 –
OP、@NoLifeKingは言ったように、 'while'が始まるところの中括弧を削除するか、' if'の中括弧を閉じる前に閉じます。 –