Ответы пользователя по тегу Yii
  • Почему не работает foreach в yii2?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    <?php foreach ($news1 as $val){?>
      <?= var_dump($val); ?>
    <? } ?>

    Что покажет var_dump($val)? Объект. Если хотите вывести title, то это делается вот так:
    <?php foreach ($news1 as $val){?>
      <?= $val->title; ?>
    <? } ?>
    Ответ написан
  • Совместное использование Yii1 и Yii2?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Если имеется два именно поддомена, то:
    1. Нужно ставить куку с токеном на *.domain.com
    2. в куке с токеном должен быть токен, по которому Ваше новое приложение на yii2 налету авторизует пользователя.

    По сути - у авторизации 2 логические точки входа: старая форма входа и кука-токен.
    Только не забудьте в токен добавить что нибудь рандомное и подпись, примерно так:
    $salt = "какая то секретная строка";
    $uid = ваш id юзера;
    $ts = time();
    $sign = sha1($uid.$ts.$salt);
    $token = json_encode([ 'user_id' => $uid,  'ts'=>$ts, 'sign'=>$sign ]);

    Валидировать такой токен нужно так:
    $salt = "какая то секретная строка"; //та же самая
    $token = json_decode($_COOKIE['..'], true);
    $uid = $token->user_id;
    $signGood = sha1($uid.$token['ts'].$salt);
    if ($signGood === $token['sign']) {
      //все окей, авторизуем $uid
    } else {
      //какая то странная кука, не авторизуем
    }

    Еще можно проверить время выдачи куки (ts) чтобы он не превышал каких то реальных границ, но в большинстве проектов это излишне и приведет только к глюкам
    Ответ написан
  • Что за ошибка при установке yii2?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Судя по всему вы делаете это через консоль Windows, а в ней появляются проблемы с кодировкой у композера и подобных инструментов.
    Возьмите git-bash и запустите из него
    Ответ написан
  • Какие оптимальные технологии и методы для разработки аукциона?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Можно и на php. Храните данные в хорошо доступном хранилище - redis/memcached и вынимайте их в обход php - например модули nginx для работы с memcached/redis - это позволит иметь горячие и доступные данные независимо от тормозов бакенда.
    Важно понимать, что эти данные - кеш и этот кеш должен писаться в момент изменения/сохранения данных, а не в момент запроса; т.е. кеш должен быть всегда горячим и генерируемым при сохранении данных, не иметь expires и изменятся только событийно.
    При такой архитектуре ваши данные будут всегда доступны из быстрого хранилища напрямую из nginx (в нем можно использовать например ssi для получения этих данных в контент страниц).
    Оповещение js-фронтенда в realtime можно реализовать на websocket-ах, примеров массы, но я бы советовал не гонять очень много данных через него - только события о факте изменения и минимальные данные (всё что нужно можно забрать аяксом тогда когда нужно).
    Ответ написан