Ну это надо копать глубоко исходник, но скорее всего как-то организовано. По внешнему виду таблицы похоже. Может @romach придёт и расскажет, зачем они при хранении сессии в базе собирают все эти данные в таблицу Флеш-данными называются данные, которые после одного использования удаляются. К примеру, Laravel так пишет сообщения об ошибках. Если валидация не пройдена, он автоматически пишет данные об ошибках в сессию и перенаправляет обратно на роут, выводящий форму. Всякие сообщения об успехе операции и т.п. тоже пишутся в флеш-данные. И метод, который их вытаскивает из сессии, одновременно их удаляет.
Не понимаю, почему ругается на HOST? PHP: <?php error_reporting(E_ALL); class Db { private static $connection = null; private static HOST = 'localhost'; private static USER = 'root'; private static PASSWORD = ''; private static DATABASE = 'test'; private static TABLE = 'users'; private function __construct() { $this->connection = mysqli_connect(self::HOST, self::USER, self::PASSWORD, self::DATABASE ); } public static function getInstance() { if (self::$connection != null) { return self::$connection; } return new self; } } $db = Db::getInstance();
Эм... Мне не понятно! Почему не отправлять данные сразу в роут об ошибки!? Что за прокладка между п.й и х.м. Мы детей делаем или не делаем? А то презерватив какой то получается. --- Добавлено --- Чё это за шляпа?
@askanim, в Laravel обычно на post- и get-запросы на один и тот же адрес вешаются разные обработчики. И вот ты заполнил форму, отправил её методом POST, она не правильная, laravel записал ошибки в сессию и автоматом сделал редирект обратно на код, выводящий форму. Можно, конечно, все ошибки в GET-параметрах, но это будет слишком. В Yii2 обычно один и тот же обработчик висит, и если были ошибки, они все выводятся прямо по POST-запросу, ну тут свои недостатки есть - если с ошибочной формой нажать обновление страницы, увидишь противное окошко. @Dimon2x, синтаксис объявлений констант в классе другой.
@Dimon2x Не пиши так это жиесть какой - то! О госпади оно ещё и живое, говорить может. Доктора! Доктора!!!!! Пациент ещё жив! (Я про данную программу); На вот пользуйся Создай ток в корне db.json PHP: class DB { private static $db; /** * @return \PDO */ static public function connect() { if (static::$db === Null) { $dbJson = file_get_contents(ROOT . "/db.json"); $db = json_decode($dbJson); static::$db = new \PDO("mysql:host=".$db->host.";port=".$db->port.";dbname=".$db->dbname.";charset=".$db->charset, $db->username, $db->password); } return static::$db; } } И зарегестрируй константу ROOT как корень сайта. И в корень добавь db.json
почему в json? --- Добавлено --- @askanim Не работает, ругается на db PHP: <?php error_reporting(E_ALL); class DB { private static $db; private $host = 'localhost'; private $dbname = 'test'; private $charset = 'utf8'; private $username = 'root'; private $password = ''; static public function connect() { if (static::$db === Null) { static::$db = new \PDO("mysql:host=".$db->host.";dbname=".$db->dbname.";charset=".$db->charset, $db->username, $db->password); } return static::$db; } } $db = DB::connect();
@Dimon2x, перечитай всё про классы в мануале. Такую чушь пишешь.... Ты разницу между статическими полями и не статическими понимаешь? --- Добавлено --- У @askanim $db - это локальная переменная, а у тебя что?
PHP: class Flash { protected $saveSession; public function __construct() { $this->saveSession = new Session(); } public function setMessage($id, $mess) { $this->saveSession->setSession($id, $mess); Я правильно понимаю что PHP: $this->saveSession->setSession($id, $mess); то-же самое что: PHP: $saveSession = $this->saveSession; $saveSession = $this->setSession($id, $mess);
Вот это добавь в db json и туда забивай данные. Код (Text): { "host": "localhost", "dbname": "", "charset" : "utf8", "port": "3306", "username": "", "password": "" } --- Добавлено --- @Dimon2x потому что так удобней и в корне лежит!
@Dimon2x так как я написал всё заработало через конфиг :? Или ты додумался как свой класс модернезировать? --- Добавлено --- @Dimon2x почитай про область видимости переменных и прочитай про что такое static и self, а ещё вообще по подробней изучи ооп на php ты там очень сильно плаваешь путаешь одно с другим! --- Добавлено --- Тебе @mkramer правильно всё написал.
@askanim @mkramer Я правильно сделал метод выборки пользователя? PHP: <?php error_reporting(E_ALL); class DB { private static $db; static public function connect() { if (static::$db === null) { $dbJson = file_get_contents("./db.json"); $db = json_decode($dbJson); static::$db = new \PDO("mysql:host=".$db->host.";dbname=".$db->dbname.";charset=".$db->charset, $db->username, $db->password); } return static::$db; } } $db = DB::connect(); class User { private $id; private $db; public function __construct($id) { $this->id = $id; $this->db = DB::connect(); } public function getUserName() { $sql = $this->db->query("SELECT `login` FROM `users` WHERE id='" .$this->id . "'"); $res = $sql->fetchColumn(); return $res; } } $user = new User('1'); echo $user->getUserName();
Ну работать будет, но можно лучше. Дочитай Зандстру до конца, там много рассказано о том, как организовать работу с БД. Если коротко, класс User подлжен представлять пользователя, а не лезть в БД... А в БД должен лезть какой-нибудь UserRepository.
@Dimon2x тебе нужно почитать про sql-инъекции и как сделать так чтобы их не было, прочитай про методы в pdo::bindParam and PDO::execute, прости я сейчас занят. Не могу тебе всё расписать, но не надо выбирать только поле логин! Выбирай все поля и ложи в какой - нибудь массив данных в стат переменную так как массив с данными о пользователе может понадобится в любой момент и чтобы базу 300 раз за ним не дёргать почитай про паттерн синглтон. --- Добавлено --- ещё можешь глянуть метод pdo::quote !
Для этого книжки надо читать, а не форумы. В одном посте на форуме всего Зандстру тебе пересказать невозможно
@askanim @mkramer не хочу спамить, стоит ли мне изучить вот этот код, хороший ли он? https://github.com/victor-zinchenko/shop.php-start.com
@mkramer Какая зандстра ему базис надо подтягивать и уже когда он научится знать базис и знать минимально синтаксис php то может уже идти его читать. Он не отличает слона от мухи в программировании. Он даже не смог элементарно мой код разгадать и ему пришлось его полностью копипастить.
Зандстра это уже для уверенных в себе прогеров, которые лишних вопросов уже не задают. --- Добавлено --- Это как начать изучать русский язык не с букв, а сразу начать читать как ставить запятые. --- Добавлено --- @Dimon2x знаешь что ты сейчас делаешь? Ты пытаешься забраться на дом одним шагом, когда рядом с тобой есть лестница и все идут по ней, а ты прыгаешь возле здания и не можешь на него запрыгнуть! Да со временем твой прыжок станет выше, но на здание один хрен ты никогда не запрыгнешь! --- Добавлено --- @Dimon2x Может уже пора перестать прыгать? И стоит пойти по лестнице? И в конечном счёте по лестнице рано или поздно в зависимости от того будешь ли ты по ней бежать или медленно ползти, но рано или поздно ты попадёшь на крышу здания!