• Почему не происходит автозагрузка класса?

    @khalmurad
    PHP dev
    spl_autoload_register(function($className) {
        $classFile = __DIR__ . "/php/classes/{$className}.php";
        if (file_exists($classFile )) {
            require_once $classFile ;
        }
    });
    Ответ написан
    Комментировать
  • Как циклом вывести минуты?

    @khalmurad
    PHP dev
    <select >
        <?php
        $lastNum = 59;
        for($m = 0; $m <= $lastNum; $m++):
        ?>
            <option value=""><?php echo (mb_strlen($m) < 2) ? "0{$m}" : $m; ?></option>
        <?php
        endfor;
        ?>
    </select>
    Ответ написан
    Комментировать
  • Нужно ли всегда биндить user input в Yii2?

    @khalmurad
    PHP dev
    Ответ написан
    Комментировать
  • Как с помощью JS или PHP обрезать последнюю часть url?

    @khalmurad
    PHP dev
    www.site.ru/home/page

    $url = 'www.site.ru/home/page';
    $urlArray = explode('/', $url);
    
    // 1)
    echo "<pre>";
    print_r(array_slice($urlArray, 0, -1));
    echo "</pre>";
    
    // 2)
    // последний элемент будет присвоено переменной $lastElement.
    $lastElement = array_pop($urlArray);
    
    echo "<pre>";
    print_r($urlArray);
    echo "</pre>";
    
    
    // 3) 
    $lastElement = end($urlArray);
    $lastKey = array_keys($urlArray, $lastElement);
    unset($urlArray[$lastKey[0]]);
    
    echo "<pre>";
    print_r($urlArray);
    echo "</pre>";
    
    // отобразить подготовленный URL
    echo implode('/', $urlArray);


    Результат:
    www.site.ru/home
    Ответ написан
    2 комментария
  • Не работает авторизация password_hash PHP 7.4?

    @khalmurad
    PHP dev
    У меня есть простой класс для этой задачи. Попробуйте.

    Специальный класс Database для подключения к базе данных.

    Database.php
    class Database
    {
        private $db;
        private static $staticConnect = null;
    
        private $dbHost = "localhost";
        private $dbUsername = "username";
        private $dbPassword = "password";
        private $dbName = "db";
        private $dbCharset = "utf8";
    
        private function __construct()
        {
            $this->db = new PDO(
    			"mysql:host={$this->dbHost};
    			dbname={$this->dbName};
    			charset={$this->dbCharset}", 
    			$this->dbUsername, 
    			$this->dbPassword
    		);
        }
    
        public static function getStaticConnect()
        {
            if (!self::$staticConnect)
            {
                self::$staticConnect = new Database();
            }
    
            return self::$staticConnect;
        }
    
        public function Connection()
        {
            return $this->db;
        }
    }


    Специальный класс Users для вашей задачи.

    Users.php
    include_once "Database.php";
    
    class Users
    {
        private $db;
        const TABLE_NAME = "users";
    
        public function __construct()
        {
            $staticConnect = Database::getStaticConnect();
            $this->db = $staticConnect->Connection();
        }
    	
        public function createUser($data)
        {
            $username = $data['username'];
            $password = password_hash($data['password'], PASSWORD_DEFAULT);
    
            $sql = "INSERT INTO ".self::TABLE_NAME." (username, password) VALUES(:username, :password)";
    	$params = [
        		':username' => $username,
    		':password' => $password
    	];
            $stmt = $this->db->prepare($sql);
    	$stmt->execute($params);
    
    	/**
    	* Вы можете отобразить это сообщение, 
    	* открыв session на странице users.
    	**/
            $_SESSION['success'] = "Username and Password created successfully!";
            header('Location: users');
        }
    
        public function Login($data)
        {
            $username = $data['username'];
            $password = $data['password'];
    
            $sql = "SELECT username, password FROM ".self::TABLE_NAME." WHERE username = :username";
            $getUser = $this->db->prepare($sql);
            $getUser->bindParam(':username', $username);
            $getUser->execute();
            $rows = $getUser->fetch(PDO::FETCH_LAZY);
    
            if (empty($username) && empty($password))
            {
    	    /**
    	    * Вы можете отобразить это сообщение, 
    	    * открыв session на странице входа.
    	    **/
                $_SESSION['failed'] = "Username and Password can not be blank!";
            }
            elseif ($username == $rows['username'] && password_verify($password, $rows['password']))
            {
    	    $this->setAuthSession();
                header('Location: admin');
            else
            {
    	    /**
    	    * Вы можете отобразить это сообщение, 
    	    * открыв session на странице входа.
    	    **/
                $_SESSION['failed'] = "Username or Password incorrect!";
    	}
        }
    	
        public function Logout()
        {
            session_destroy();
            header("Location: login");
            exit;
        }
    	
        private function setAuthSession()
        {
    	/**
    	* Мы добавляем auth в session, 
    	* чтобы убедиться, что пользователь 
    	* вошел в систему.
    	**/
            $_SESSION['auth'] = true;
        }
    }
    Ответ написан
  • Исправить ошибку в запросе. Какая ошибка может быть?

    @khalmurad
    PHP dev
    SELECT b.date_due_for_return, 
    b.users_user_id, 
    b.date_issued, 
    b.date_returned, 
    CONCAT(u.first_name, ' ', u.last_name) AS user_full_name 
    FROM Books_out_on_loan AS b 
    LEFT JOIN users AS u ON u.user_id = b.Users_user_id 
    WHERE b.date_issued + 10 < CURDATE() AND b.date_returned IS NULL;
    Ответ написан
    Комментировать
  • Не срабатывает SQL запрос в функции, что не так?

    @khalmurad
    PHP dev
    вот так попробуйте:

    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }
    
    function pr($lid) {
        global $conn;
        mysqli_query($conn,"INSERT INTO in_work (`lab_id`,`status`) VALUES ('$lid','новая')");
    }
    Ответ написан
  • Как можно заюзать PDO::FETCH_CLASS при чистых запросах к бд на Yii2?

    @khalmurad
    PHP dev
    $sql = "SELECT id, name FROM users";
    $command = Yii::$app->db->createCommand($sql);
    $users = $command->queryAll(\PDO::FETCH_CLASS);
    /**
     * или
     * $users= $command->queryAll(8);
     **/
    Ответ написан
    Комментировать