Witam
Stworzyłem skrypt logowania przy pomocy OOP, chciałbym żebyście ocenili mój kod, oraz mam pytanie czy Config::closeConnection(); się wykona po użyciu return?
AuthC.php
SESSION_START();
class AuthC
{
public function __construct()
{
Config::setConnection("workshop");
}
public function login()
{
if(isset($_POST['login']) || isset($_POST['password']))
{
if(empty($_POST['login']) || empty($_POST['password']))
{
return LOGIN_FAILED;
}
$login = htmlentities($_POST['login'], ENT_QUOTES, "UTF-8");
$password = htmlentities($_POST['password'], ENT_QUOTES, "UTF-8");
try
{
mysqli_report(MYSQLI_REPORT_ERROR);
$connect = Config::getConnection();
$login = $connect->real_escape_string($login);
$query = $connect->query("SELECT id, login, password FROM users WHERE login = '$login'");
$row = $query->fetch_assoc();
if(password_verify($password, $row['password']))
{
$_SESSION['user'] = true;
return LOGIN_SUCCESS;
}
else
{
return LOGIN_FAILED;
}
Config::closeConnection();
}
catch (Exception $e)
{
$_SESSION['exceptionLogin'] = $e->getMessage();
return DATABASE_ERROR;
}
}
}
}
Config.php
<?php
class Config
{
private static $db_host = "localhost";
private static $db_user = "root";
private static $db_password = "";
private static $db_db_name;
private static $db_connect;
static public function setConnection($db_name = "test")
{
$db_connect = @new mysqli(self::$db_host, self::$db_user, self::$db_password, "$db_name");
self::$db_connect = $db_connect;
}
static public function getConnection()
{
if(self::$db_connect->connect_errno)
{
throw new Exception(self::$db_connect->connect_errno);
}
else
{
return self::$db_connect;
}
}
static public function closeConnection()
{
self::$db_connect->close();
}
}
?>