СМС регистрация на сайтах с InstantCMS (первая ветка)

+23
2.58K
СМС регистрация на сайте.

Если вы считаете, что регистрация на вашем сайте в чьих то глазах может стоить немного монет, или просто хотите ограничить это дело, сделав плату символической, но до сих пор не знали как это оформить...

В основе решения, имеющаяся в первой ветке система инвайтов.

================

Первое что нужно сделать, в настройках регистрации, установить "регистрация по инвайтам".

Далее, я предлагаю, в шаблоне либо полностью убрать блок показывающий по чьему приглашению зарегистрировался участник

  1. {if $usr.inv_login}
  2. <div class="field">
  3. <div class="title">{$LANG.INVITED_BY}:</div>
  4. <div class="value">
  5. <a href="{profile_url login=$usr.inv_login}">{$usr.inv_nickname}</a>
  6. </div>
  7. </div>
  8. {/if}


либо сделать его видимым только админу.


  1. {if $usr.inv_login}{if $is_admin}
  2. <div class="field">
  3. <div class="title">{$LANG.INVITED_BY}:</div>
  4. <div class="value">
  5. <a href="{profile_url login=$usr.inv_login}">{$usr.inv_nickname}</a>
  6. </div>
  7. </div>
  8. {/if}
  9.  
  10. {/if}
В меню пользователя на странице профиля так же есть есть ссылка с количеством доступных инвайтов.

В принципе, она показывается только тем пользователям, у которых есть доступные инвайты, можно её не трогать. Нет инвайтов — нет ссылки.

Далее, для удобства, предлагаю сократить количество символов в инвайте до 7 (что бы код приглашения было проще ввести из полученной смс в окно) и сделать весь код в верхнем регистре.

В файле

/components/users/model.php в двух местах

  1. if (!preg_match('/^([a-z0-9]{32})$/ui', $code)) { return false; }
заменить на

  1. if (!preg_match('/^([A-Z0-9]{7})$/ui', $code)) { return false; }

теперь инвайты будут вида A1Z8565


=================================================

Теперь нужно сгенерировать сами инвайты.

Я для этого использую Notepad и опции "генератор столбца", "числа для вставки", "текст для вставки", запись, автозамена и редактор столбца, что бы в конце отсечь лишние символы, если в каких строках получилось больше 7 знаков. В принципе не сложно. В прикрепленном архиве есть файл примером. 1000 кодов были сгенерированы минут за 5.

==================================================

Теперь нужно внести эти инвайты в Базу данных.

Создать SQL запрос.

Опять же Notepad.

Создать файл, вставить первую строку

INSERT INTO `cms_user_invites` (`id`, `code`, `owner_id`, `createdate`, `is_used`, `is_sended`) VALUES

Затем с помощью записи и воспроизведения продублировать 1000 раз следующую строку

(номер_инвайта, 'код_инвайта', 1, '2014-08-18 14:14:58', 0, 1),

Здесь: инвайт выдан на админа сайта (пользователь ид 1), и единица в конце говорит о том, что инвайт был активирован, то есть как бы отправлен кому то на почту и теперь ждет когда его используют.


Итак, продублировать эту строку 1000 раз, для тех кто не работал с базами данных, напоминаю, в конце последней строки в самом конце вместо запятой, должен стоять замыкающий символ ";"

Теперь с помощью редактора столбцов и генератора столбцов нужно проставить инвайтам в списке уникальные id (номер инвайта) которые бы не пересекались с уже имеющимися в базе, если они там есть (посмотрите что у вас в базе в таблице cms_user_invites какой номер крайнего инвайта и начинайте от следующей цифры), и с помощью редактора столбцов заменить "код_инвайта" на те коды, которые вы сгенерировали пять минут назад.

Теперь нужно в php Admin выполнить запрос и таким образом внести инвайты в базу данных.

Пример запроса с готовыми инвайтами в прикрепленном архиве.


==============================================


Осталось подключиться к какому нибудь смс биллингу и настроить раздачу приглашений по смс.


За основу скрипта, который будет отправлять смски с инвайтами использовал скрипт "магазина уинов" (когда то была такая индустрия уины для аськи были предметом торговли) имеющийся в документации биллинга smsbill.ru (использовать этот биллинг не рекомендую!!!) и скрипт отправляющий уведомления на email при покупке через смс взятый с биллинга x-bill.ru


Откройте в прикрепленном архиве файл registrator.php выполните настройки в строках 6, 81, 83


Один момент. На разных смс биллингах входящие GET параметры могут иметь другие названия, в таком случае придется править блок "Получение данных", что бы этот обработчик правильно работал с вашим смс биллингом.


Последний этап


Из прикрепленного архива папку /smsrega вместе с содержимым залейте в корень сайта

в ней:

registrator.php — скрипт который будет принимать запрос, брать из текстового файла инвайт и отправлять его в ответ.
/data/codes.txt — текстовый файл, в который вы должны сложить ваши инвайты, сейчас там те инвайты что создал я
/data/base.txt — сюда будет записываться статистика по работе скрипта,
/logs — здесь будут создаваться логи работы скрипта обработчика


СМС биллинг


В панели смс биллинга создайте новый проект, в настройках проекта в качестве скрипта обработчика укажите путь до вашего файла registrator.php
Обычно биллинг предоставляет возможность тестировать обработчик, используйте возможность. В ответ на тестовую смс вам должен быть выдан код инвайта, откройте на своем сайте страницу /registration в качестве неавторизованного пользователя и введите код в окно, для продолжения регистрации.

В принципе, это решение можно использовать и с Робокасса, Яндекс Деньги и т. п.

Ничто не мешает в дальнейшем, рядом с файлом registration.php положить похожий скрипт, который будет брать инвайты из того же текстового файла и таким образом настроить раздачу инвайтов при оплате через другие платежные системы. Но в таком случае, понадобится зарегистрироваться еще на каком нибудь сервисе предоставляющем услуги смс рассылок, а сам скрипт дополнить кодом, который будет отправлять ответные смс через этот сервис, тем кто оплатил регистрацию другим способом.

Может быть в будущем опишу подобный пример с другим платежным сервисом. Может быть это сделает кто то другой)


Приведенный вариант смс регистрации опробован и является рабочим, однако пост писался по памяти без дополнительных тестов. Я мог что то упустить, вы также можете что то напутать.

Поэтому:
Перед началом работы делайте резервные копии изменяемых файлов и таблиц в базе данных, если что то пошло не так… я не виноват)))



Архив
instantcms.ru/users/files/download5308.html
0
F_a_R_i_D F_a_R_i_D 9 лет назад #
Для второй ветки будет?
+2
Нил™ Нил™ 9 лет назад #
От меня - нет. Я с ней не работал.
0
Alexneva Alexneva 9 лет назад #
Нил, какой посоветуете СМС-сервис по России? Многие сейчас ужесточают правила, модерируют смс-ки, из-за чего смс может идти несколько минут, а то и десятков минут.
0
Нил™ Нил™ 9 лет назад #
СМС рассылки? Пока пользуюсь epochta.ru действительно бывают проблемы с доставкой, конкретно на МТС. Для 100% гарантированной доставки на этого оператора требуется договор и гарантийное письмо. Приходится следить за статусом доставки и поправлять если что не так.
0
pdp pdp 9 лет назад #
Перешел с epochta.ru на smsc.ru - % доставленных смс радует по сравнению с первым сервисом. Рекомендую!

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.