Öğrenme amaçlı basit bir OOP giriş sistemi oluşturmaya çalışıyorum.Sayım hataları mantık sorunu
Bu, kayıt/oturum açma sistemi için kullandığım Auth sınıfıdır.
<?php
require_once 'Database.class.php';
class Auth extends Database
{
const DATEFORMAT = 'd/m/Y';
const TIMEFORMAT = 'H:i:s';
public function __construct($host, $username, $password, $database)
{
parent::__construct($host, $username, $password, $database);
$this->connect();
$this->setTable('users');
}
public function insert(array $data)
{
$username = $data['username'];
$password = $data['password'];
$repeat_password = $data['repeat_password'];
$last_login = date(self::DATEFORMAT . ' ' . self::TIMEFORMAT);
if ($password == $repeat_password)
{
$password = hash("sha256", $password);
$stmt = $this->connection->prepare("INSERT INTO {$this->table} (username, password, last_login) VALUES(:username, :password, :last_login)");
$stmt->execute(array(':username' => $username,
':password' => $password,
':last_login' => $last_login
)
);
}
else
{
// do something
}
}
public function select(array $data)
{
$username = $data['username'];
$password = $data['password'];
$password = hash("sha256", $password);
$stmt = $this->connection->prepare("SELECT * FROM {$this->table} WHERE username=:username AND password=:password LIMIT 1");
$stmt->execute(array(':username' => $username,
':password' => $password
)
);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
}
Ve bu sınıfını kullanın yerdir:
<?php
require_once 'Auth.class.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$auth = new Auth('localhost', 'root', '', 'oop');
$user = $auth->select($_POST);
if (count($user) === 0) {
echo 'User not found!';
}else{
echo 'Hello, ' . ucfirst($user['username']);
}
sorun olduğunu şifre hatalı veya kullanıcı adı o hata mesajı "göstermez var olmasa bile Kullanıcı bulunamadı!" Bu yüzden kullanıcı değişkeni sayısının 0'dan büyük olması gerektiğini belirttiğim durumun çalışmadığı görülüyor.
Kullanmakta olduğum basit count()
için bir alternatif aramayı denedim ama bu yardımcı olmadı. OOP'un detaylarında kayboluyorum ve bence bu bir sözdiziminden daha mantıklı bir problem.
Neyi yanlış yaptığım hakkında bir fikrin var mı? Ayrıca, yazdığım kodun herhangi bir yapıcı incelemesi okumak harika.
'var_dump': YANLIŞ yana
bir sayılabilir değilse veya bir dizi fonksiyonu 1.
count return values
Bunu çözmek için dönecektir, sen durumunu ayarlayabilirsiniz 'select' dedikten sonra '$ user' içinde ne olduğunu görmek için. – PierreDuc
OOP ile ilgisi yoktur. Kendine sor, burada ne saymak istiyorsun? Ardından koşulu sadece 'if ($ user)' ile değiştirin. İnceleme ile ilgili olarak, bu makaleyi ilginç bulabilirsiniz, [İlk veritabanı sarıcınızın çocukluk hastalıkları] (https://phpdelusions.net/pdo/common_mistakes) –
@PierreDuc kullanarak var_dump, 'bool (false)' döndürür –