Задать вопрос
@djienbaev97

Как взять ip адрес пользователя при входе на сайт?

У меня в yii2 есть проект с онлайн видеоуроками, надо сделать так, когда пользователь заходит на сайт с разных устройств (более 3) его надо заблокировать, чтобы он не распростронял свой аккаунт. Ну крч он должен заходит на сайт только с трех устройств. Как это сделать кто знает? Как это вообще работает? С помощью ip адресов или с помощью токена? Если можно примеры у кого есть
  • Вопрос задан
  • 253 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
VladOsadchyi
@VladOsadchyi
Студент
IP пользователя можно получить так: Yii::$app->request->getUserIP();

Проверку IP можно сделать добавив фильтр AccessManager в bootstrap
web.php:
$config = [
    ...
    'bootstrap' => [
        \app\components\user\AccessManager::class
    ],


AccessManager:
namespace app\components\user;

use yii\base\Component;
use Yii;

class AccessManager extends Component
{
    const ERROR_PAGE = 'site/error';

    public function init()
    {
        if (isset(Yii::$app->user) && !Yii::$app->user->isGuest) {
            $this->filtering();
        }
    }

    protected function filtering()
    {
        $user = Yii::$app->user->identity;
        $allowedIps = $user->getAllowedIps();
        if (!in_array(Yii::$app->request->getUserIP(), $allowedIps)) {
            Yii::$app->catchAll = [self::ERROR_PAGE];
        }
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы