Автозаполнение поля при регистрации данными из куков

  • 14 Ответов
  • 875 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Задание:
Пользователь переходит по ссылке вида exapmle.com/?a=XXX, a=XXX сразу прописывается в куках браузера.
После перехода пользователя на страницу регистрации, XXX должно прописаться в конкретном поле и, по возможности, заблокировать его от перезаписи.
Если с записью и извлеканием данных из куков проблем нету, то с автоматическим заполнением, к сожалению, есть.

*

AlekVolsk

  • ********
  • 6301
  • 336
вы из куков данные прочитали и записали их в какую-то переменную, затем просто присвойте соответствующему полю значение этой переменной и все

для более точно подсказкеи нужно видеть ваш код чтения куки

У меня проблема в том, куда эту переменную вписывать. Я использую стандарную систему регистрации. Joomla 3.6.5.
Думаю где-то здесь components/com_users/views/registration/tmpl/default.php, но там поля берутся из components/com_users/models/forms/registration.xml, куда поставить переменную невозможно, это же XML, а не php код.

*

dmitry_stas

  • ********
  • 9645
  • 929
а для чего его в принципе писать в поле, а потом пытаться блокировать, если на этапе сохранения регистрации его можно прочесть не из этого поля, а все так же из кук?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

а для чего его в принципе писать в поле, а потом пытаться блокировать, если на этапе сохранения регистрации его можно прочесть не из этого поля, а все так же из кук?
Чтобы пользователь видел, что указанно в этом поле + если в куках пусто, чтобы была возможность пользователю указать необходимые данные в этом поле

*

dmitry_stas

  • ********
  • 9645
  • 929
понятно. ну тогда в чем проблема, добавьте значит в шаблоне регистрации (components/com_users/views/registration/tmpl/default.php или в переопределенном) ваш
Код
<input name="..." value="тут значение из куки">
и все. зачем вам в принципе XML ?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

AlekVolsk

  • ********
  • 6301
  • 336
еще раз, нужно видеть код чтения ваших кук

формы Joomla строятся по определенным правилам, имена полей можно подсмотреть в XML или в исходниках страницы фронта (ctrl+u или в инспекторе), они не меняются

*

dmitry_stas

  • ********
  • 9645
  • 929
та это ж я так понимаю вообще свое какое то поле просто, чтобы передать в сохранение регистрации значение и его там как то обработать. поэтому name думаю можно любое абсолютно.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

dmitry_stas, я уже пробовал таким образом вставить поле, но ничего не получалось.
AlekVolsk, спасибо за подсказку, в коде нашёл это(код одного из полей):
Код
<div class="control-group"> 
<div class="control-label">
<label id="jform_email2-lbl" for="jform_email2" class="hasPopover required" title="Подтверждение адреса электронной почты" data-content="Подтвердите указанный вами адрес электронной почты">    Подтверждение адреса электронной почты:<span class="star"> *</span></label>  
</div>
<div class="controls">
<input type="email" name="jform[email2]" class="validate-email required" id="jform_email2" value="" size="30" required aria-required="true" />
</div>
</div>
Осталось только поменять данные на свои и в атрибут value тега input прописать переменную с нужными мне данными из куков.
Через некоторое время попробую и отпишусь получилось ли.

*

dmitry_stas

  • ********
  • 9645
  • 929
я уже пробовал таким образом вставить поле, но ничего не получалось.
ничего - это очень информативно :) клавиатура переставала печатать? редактор не сохранял файл? свет выключался? что - ничего? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

ничего - это очень информативно :) клавиатура переставала печатать? редактор не сохранял файл? свет выключался? что - ничего? :)
Просто ничего, ничего нового не выводилось, только старые поля как были, так и остались.
« Последнее редактирование: 30.03.2017, 19:08:53 от teoformartel »

*

dmitry_stas

  • ********
  • 9645
  • 929
ну как бы... если вы пишите 123, а этого 123 по итогу нет - то имхо в 99% случаев это говорит о том, что вы не там пишите :) может шаблон регистрации переопределен в шаблоне Joomla? или может вообще регистрация не жумловая?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

ну как бы... если вы пишите 123, а этого 123 по итогу нет - то имхо в 99% случаев это говорит о том, что вы не там пишите :) может шаблон регистрации переопределен в шаблоне Joomla? или может вообще регистрация не жумловая?
Вообщем-то,  шаблон регистрации не переопределён в шаблоне Joomla и компонент регистрации точно стандартная.
Да и вообще, этот файл никак не использовался, чтобы я в нём не менял, на сайте ничего не изменится. Даже переименовывал сам файл default.php - ничего, никакой ошибки или предупреждения.
dmitry_stas, спасибо за подсказку. Так, как переопределения не было, я создал его и поле начало выводиться, но с "ненормальной" кодировкой. Вместо кириллических букв ромбики со знаками вопроса.
Может, у кого-то есть идеи по решению этой проблемы?

*

dmitry_stas

  • ********
  • 9645
  • 929
очевидно, сохранили файл в кодировке не UTF-8 без BOM ?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Спасибо всем за помощь, всё работает ^-^
Написал небольшую инструкцию по тому, как это сделать ^-^
1. В самом начале файла index.php Вашего шаблона добавляем код, который будет записывать информацию в куки(здесь срок действия указан в три дня).
Спойлер
[свернуть]
2. Добавляем поле для регистрации(в интернете есть достаточно информации, как это сделать).
3. После того, как поле добавленно, переходим на страницу регистрации и через отрытый код страницы находим это поле(сам код поля сохраняем где-нибудь себе в файл).
Спойлер
[свернуть]
4.При создании поля мы добавляли field в /components/com_users/models/forms/registration.xml. Этому field ставим type - hidden.
5.Создаем переопределенние файла default.php из components/com_users/views/registration/tmpl/. Инструкция о том, как сделать переопределение также есть в интернете.
6. В переопределённом файле default.php из п.5 после строк:
Код
</fieldset>
<?php endif;?>
<?php endforeach;?>
добавляем свой код свой код извлекания куков и самого поля(п.3):
Спойлер
[свернуть]
Также делаем изменения в коде поля: в значении атрибута value прописываем
Код
<?php echo $referid; ?>
и добавляем, как атрибут, код
Код
 <?php echo $readonly; ?>
Вот и всё.
Если кто-то найдёт ошибку, прошу исправить или указать на нее, я исправлю.
Также, могу предполагать, что мой способ реализации этой цели может быть нерационален. Если у Вас есть способ лучше, расскажите о нём в этой теме.