[Мануал] Загрузка файла с данными после регистрации в GHTWEB 5

Тема в разделе "Manuals / Мануалы", создана пользователем Артур, 6 ноя 2017.

Метки:
?

Полезно?

  1. Да

    0 голосов
    0,0%
  2. Нет

    0 голосов
    0,0%
  1. Артур

    Артур Активный участник

    Регистрация:
    6 ноя 2017
    Сообщения:
    31
    Симпатии:
    4
    Как Вы знаете в GHTWEB есть функция скачивания файла после регистрации, но в последней версии она была отключена и не корректно работала.
    Сейчас я расскажу Вам как реализовать и подкорректировать эту функцию, чтобы она у Вас заработала, но есть и некоторые условия при которых она будет работать.
    Условия такие:
    1. В настройках убираете подтверждение регистрации по email.
    2. Юзер получит тхт файл с логином паролем и другими данными вместо сообщения о том что его аккаунт успешно зарегистрирован.
    Если Вас устраивают эти условия, тогда приступаем.
    1. Открываем файл: www/protected/modules/register/models/RegisterForm.php
    2. Ищем строку 332, или забиваем в поиск:

    PHP:
    //$this->downloadFileInfoAfterRegister();
    Как Вы можете увидеть, эта строка за комментирована, убираем комментарий (это // спереди)

    Должно получиться так:
    $this->downloadFileInfoAfterRegister();

    Идем дальше, строка 351 или ищем:

    PHP:
    public function downloadFileInfoAfterRegister()
    После строчки:

    PHP:
    $gs = $this->gs_list[$this->gs_id];
    Вставляем строку:

    PHP:
    $servername = $_SERVER['HTTP_HOST'];
    Вместо

    PHP:
    $fileName = time() . '.txt';
    Меняем на:

    PHP:
    $fileName = $servername . ' - ' . $gs['name'] . '.txt';
    Вместо

    PHP:
    $body
    Меняем на:

    PHP:
    $filecontent
    и последнюю строчку, вместо:

    PHP:
    request()->sendFile($fileName, $body, 'text/plain', FALSE);
    Меняем на:

    PHP:
    Yii::app()->request->sendFile($fileName, $filecontent, 'text/plain');

    Строка

    PHP:
    $fileName = $servername . ' - ' . $gs['name'] . '.txt';
    означает, что имя файла у нас будет: sitename.ru - название сервера.txt

    Если Вы не хотите название сервера в виде домена сайта, можно изменить на свое, сделать это вот так:
    Нашу строку

    PHP:
    $servername = $_SERVER['HTTP_HOST'];
    меняем на

    PHP:
    $servername = 'SuperServer';
    И теперь файл сохранится юзеру с именем: SuperServer - название сервера.

    Если Вы хотите добавить в Ваш сохраняемый тхт файл Email юзера, что бы он знал что ввел, тогда
    после строки:

    PHP:
    Yii::t('main', 'Пароль') . ": " . $this->password . "\r\n" .
    Вставляем строку:

    PHP:
    Yii::t('main', 'Email') . ": " . $this->email . "\r\n" .
    Все работает, проверено как на локалке так и на удаленном хостинге.
     
  2. На официальном скрипте все норм работает и так.
     
  3. Артур

    Артур Активный участник

    Регистрация:
    6 ноя 2017
    Сообщения:
    31
    Симпатии:
    4
    Возможно баян. В старой версии разраб этого не добавлял. Приходилось ручками доделывать.
     
  4. RuGlync

    RuGlync Новичок

    Регистрация:
    21 апр 2021
    Сообщения:
    1
    Симпатии:
    0
    Skype:
    RuGlyncSJ
    Приветствую, переехал на новый сервак, все бы ничего да вот такая беда, при загрузке изображения к новости выскакивает ошибка такого типа - Загрузка файла: завершилось ошибкой Вы не авторизированы на сайте.
    Что за бред, подскажите куда копать? в гугле толком ничего не нашел, может кто то сталкивался.
     
  5. RaStroup

    RaStroup Новичок

    Регистрация:
    22 апр 2021
    Сообщения:
    1
    Симпатии:
    0
    Skype:
    RaStroupAD
    и еще может кому сгодиться, если в БД картинки не меняли, то логично, что их не зачем загружать.Для этого я просто сохраняю компонент ImageList в файл. Если есть лучше решения, то критика приветствуется //сохраняем компонент ImageList в файл vStream := TFileStream.CreateTPath.GetDocumentsPath /imagelist,fmCreate; try vStream.WriteComponentimgMain; finally vStream.Free; end; //загружаем файл в компонент ImageList vStream := TFileStream.CreateTPath.GetDocumentsPath /imagelist,fmOpenRead; try vStream.ReadComponentimgMain; finally vStream.Free; end;
     

Партнеры