Начал изучение классов и ООП и возникает вопрос, если я при авторизации создаю класс с информацией о пользователе на странице user_auth.php, как мне получить эту же переменную с классом на странице index.php ? Способ пока думаю - это сериализация и помещение в куку
что бы не было таких вопросов лучше делать автозагрузку классов и одну точку входа.. что бы весь скрипт работал через index.php - если с этим разберетесь - тогда поймете как данные пересылать от объекта к объекту)
@ZlobnyKolob, ну неплохо бы сначала понять сам php Что авторизация и потом получение страницы - два невзаимосвязанных вызова. Чтоб между разными вызовами передавать данные был придуман механизм сессии. Обычно помещают ID пользователя в сессию, а потом выносят в отдельный класс код, который проверяет наличие этого ID в сессии, и в случае наличия создаёт класс пользователя для этой записи и отдаёт куда надо. В куке хранить сериализованный класс пользователя не стоит, там же хеш пароля, а кука открытая. Лучше в сессиях, которые на сервере. А в куках просто id сессии
Как я понимаю, что на каждой странице вверху должен быть код, который при наличии ID в сессии должен создавать класс с пользователем, Вопрос: при переходе с 1 страницы на другую не будет осуществляться так называемое клонирование классов ?
Ещё раз - каждый переход с одной страницы на другую === новый старт скрипта, предыдущий уже отработал и вызвал из памяти, никаких созданных им экземпляров класса там не осталось. Отложите-ка ООП до поры до времени и поймите вот это: http://phpfaq.ru/newbie/na_tanke
Спасибо большое, вот нашёл то, что мне нужно было "РНР остался на сервере, ждать новых запросов с данными для обработки. PHP, но не скрипт! Скрипт, который выполнялся, отдавая пользователю страницу, завершил работу. Все данные, которые были в нем - пропали. Именно поэтому, если какая-то переменная нужна при последующих вызовах скрипта, ее надо этому скрипту передать снова."
Ещё один вопрос, Возникла ситуация в которой мне необходимо получить класс $mysqli в своём классе, который должен осуществить запрос в базе данных, как мне правильно подключить класс $mysqli ?
@ZlobnyKolob. Параметром в конструктор Из реестра https://habrahabr.ru/post/214285/, http://designpatternsphp.readthedocs.io/ru/latest/Structural/Registry/README.html Есть и более продвинутые методы, но тебе рано.
Получается, что я должен передать $mysqli в класс, при его создании :? $User = new User($mysqli); ????
// определение предопределённых значений PHP: function __construct($mysqli) { $this->mysqli = $mysqli; } такой подход верен или нет ? после внедрения такого подхода у меня все равно возникает ошибка, что я не могу пользоваться mysqli
Угу. Как один из вариантов. Про реестр тоже почитай. --- Добавлено --- Ну читай текст ошибки. Подход верен.
PHP: $query = printf("SELECT users.id FROM users WHERE users.id_vk = %s", $ID); $CountRows = $this->mysqli->query($query); $ExistUser = $CountRows->num_rows; ошибка в последней строке кода: Trying to get property of non-object
значит я все таки не так что-то передал ? (имею ввиду объект $mysqli) Возможно у Вас есть пример где-то, чтоб я мог прочитать его может сделать что-то в виде этого ?
Спасибо за ответы, ошибка была в PHP: $query=printf("SELECT users.id FROM users WHERE users.id_vk = %s",$ID); Сделал PHP: $query=sprintf("SELECT users.id FROM users WHERE users.id_vk = %s",$ID); printf и sprintf
Ребят, вопрос возник, Вот я авторизовал пользователя и занёс его в базу, отдал ID в сессию, потом на каждой странице создаю класс и по ИД запрашиваю из базы данные о пользователе, это правильно ? мне кажется, что нет и я не могу прийти к конечному понимаю как нести информацию между страницами ?
Подготавливай запросы как положено, а не спритифом их)) --- Добавлено --- А что, есть подозрения что может лечь сервер Mysql? --- Добавлено --- Безобидный select не убьет твой сервер базы данных. --- Добавлено --- На то и база данных, чтобы обращаться когда нужны данные. А когда наладишь кэширование, то будешь реже обращаться, но это уже потом.
да нет подозрений, просто интересуюсь, этот селект это примерный, он там больше, но по одному полю подбор А почему спринтФ не торт ?