Мне нужно решить сомнение, я оставляю детали.PHP - используется __construct(), чтобы проверить, есть ли сеанс
У меня есть класс, который имеет несколько связанных запросов к базе данных с пользовательскими данными, для доступа к этим методам необходимо проверить, что пользователь вошел в систему, и я делаю это с использованием методов инициализации php «__construct()», укажите там если пользователь вошел в систему.
<?php
class User()
{
public function __construct() {
if (!isset($_SESSION['user'])) {
$data = array(
'response' => false,
'message' => 'You must login to access this page'.
);
echo json_encode($data);
}
}
public function index() {
// The user can access if you are logged
}
public function edit_profile() {
// The user can not access if you have not logged
}
public function save_profile_data() {
// The user can not access if you have not logged
}
}
?>
Мои вопросы:
- Используйте кнопки __construct() хороший выбор оптимального ресурсоемким?
- __construct() безопасен в использовании и не позволяет пользователю получать доступ к другим методам, которые не указали, существует ли закодированная переменная сеанса.
Т.е. если пользователь вызывает edit_profile() метода, и этот метод не имеет кода для проверки на сессию, но я указал в __construct(), пользователь может получить доступ к этому метод?
Надеюсь, вы можете мне помочь, я был бы очень признателен.
Похоже, вы только начиная с PHP здесь. Хорошо, вероятно, лучший подход - объявить свойство private в классе, которое устанавливает флаг для разрешения на выполнение метода. Затем внутри каждого метода вы запрашиваете состояние этого флага, чтобы увидеть, разрешено ли вам выполнение или нет. – MarkSkayff
'$ _SESSION' написано неправильно. –
@MarkSkayff - Спасибо за ваш ответ, но если вы видите что-то немного техничное в вопросах удобства использования, потому что я хочу не генерировать много кода в других методах, поэтому мы указали в __construct() –