В первой части своего блога я рассказал, как нам создать собственный SMS-сервис. Сегодня я хотел рассказать, как отправлять код регистрации по SMS, а также ввести новое определение ID_SMS, которое может использоваться для отправки личных сообщений по средством SMS… Но описание процесса регистрации оказалось довольно большим, поэтому, приношу свои извинения, но описание ID_SMS я перенесу на один из следующих блогов.
Ну что ж… начнем "приучать" к SMS-сервису InstantCMS. Блог получился большой и в некоторых файлах придется прописывать много параметров, поэтому я сначала опишу общий план действий, а потом уже буду прописывать: что, где и для чего мы будем менять.
Общий план:
1. Прописать обработчик параметров, получаемых от InstantCMS (обработчик лежит на том же серваке, где и Ваш SMS-сервис).
2. Ввести новое поле "Номер телефона" в профиль (делаем его доступным при регистрации, а также для редактирования. Я в своем проекте не отображаю это поле в профиле, т.к. это "Конфиденциальная/личная информация", которая охраняется законом).
3. Изменяем систему регистрации и редактирования профиля.
4. Изменяем систему активации профиля (меняем механизм генерации и отправки кода подтверждения).
ОБРАЩАЮ ВАШЕ ВНИМАНИЕ, ЧТО ПЕРЕД НАЧАЛО ВСЕХ ДЕЙСТВИЙ РЕКОМЕНДУЕТСЯ СОХРАНИТЬ BACKUP ВСЕХ ДАННЫХ!!!
1. Самым простым будет прописать обработчик. Создаем в корневой директории Вашего веб-сервера (где настроен SMS-сервис) папку SMS. И создаем там файл, например, registration.php со следующим содержимым:
Данный обработчик получает из InstantCMS номер пользователя и код подтверждения регистрации и отправляет SMS.
2. Вводим новое поле в профиль.
В БД в таблице cms_users после столбца ICQ добавляем новый столбец NUMBER (text, cp1251_general_ci). В нем мы будем хранить номер телефона пользователя.
Далее я буду описывать в каких файлах и что будем менять (изменения будут относится как ко 2-му пункту, так и к 3-му, и к 4-му пунктам).
Открываем файл components/registration/frontend.php
1. Изменяем функцию генерации кода подтверждения:
Находим сроки:
и меняем их на:
2. Заменяем функцию отправки письма, на функцию отправки SMS:
Находим строки:
и меняем их на:
3. Добавляем поле Номер телефона в форму регистрации:
Ищем:
И сразу после него вставляем:
4. Изменяем запрос в базу данных при регистрации пользователя:
Ищем:
заменяем на:
сохраняем файл components/registration/frontend.php .
Открываем файл components/registration/router.php
Здесь мы поменяем количество символов в коде при проверке.
Ищем:
И заменяем на:
с этим файлом тоже закончили работать…
Открываем файл components/users/frontend.php
1. Ищем секцию /////EDIT PROFILE////
Находим здесь следующие строки:
и сразу поле них добавляем:
2. Теперь обновим запрос в БД. Ищем строки
и сразу после строки icq добавляем
сохраняем файл components/users/frontend.php .
С "внутренностями" системы покончено. Теперь поправим все шаблоны.
Открываем файл templates/ВАШ_ШАБЛОН/components/com_registration.tpl
1. Добавим в форму регистрации новое поле.
Ищем такие строки:
и сразу после них добавляем:
сохраняем файл templates/ВАШ_ШАБЛОН/components/com_registration.tpl
Открываем файл templates/ВАШ_ШАБЛОН/components/com_users_edit_profile.tpl
1. Добавим поле "Номер телефона" в редактирование профиля.
Ищем код:
и сразу после этих строк дописываем:
сохраняем файл templates/ВАШ_ШАБЛОН/components/com_users_edit_profile.tpl
Теперь поправим шаблон активации пользователя:
Открываем файл templates/_default_/special/regactivate.php
В самом начале файла, до тега <html> добавляем:
Удаляем код автоматической переадресации через 25 секунд, а именно вот эту строку:
Заменяем все, что идет после кода:
на следующий код:
Путем таких вот "несложных" доработок, мы добавили новое поле в профиль, а также научили IstantCMS отправлять код подтверждения путем отправки SMS. В следующем блоге, я расскажу, как с помощью SMS можно поменять стаусное сообщение, отображаемое в Профиле пользователя.
Ну что ж… начнем "приучать" к SMS-сервису InstantCMS. Блог получился большой и в некоторых файлах придется прописывать много параметров, поэтому я сначала опишу общий план действий, а потом уже буду прописывать: что, где и для чего мы будем менять.
Общий план:
1. Прописать обработчик параметров, получаемых от InstantCMS (обработчик лежит на том же серваке, где и Ваш SMS-сервис).
2. Ввести новое поле "Номер телефона" в профиль (делаем его доступным при регистрации, а также для редактирования. Я в своем проекте не отображаю это поле в профиле, т.к. это "Конфиденциальная/личная информация", которая охраняется законом).
3. Изменяем систему регистрации и редактирования профиля.
4. Изменяем систему активации профиля (меняем механизм генерации и отправки кода подтверждения).
ОБРАЩАЮ ВАШЕ ВНИМАНИЕ, ЧТО ПЕРЕД НАЧАЛО ВСЕХ ДЕЙСТВИЙ РЕКОМЕНДУЕТСЯ СОХРАНИТЬ BACKUP ВСЕХ ДАННЫХ!!!
1. Самым простым будет прописать обработчик. Создаем в корневой директории Вашего веб-сервера (где настроен SMS-сервис) папку SMS. И создаем там файл, например, registration.php со следующим содержимым:
<?php $num=$_GET['to']; //получаем номер телефона, кому отправим смс $pin=$_GET['msg']; //получаем код подтверждения $datas="app=webservices&u=ВАШ_ЛОГИН_К_SMS-СЕРВИСУ&p=ВАШ_ПАРОЛЬ_К_SMS-СЕРВИСУ&ta=pv&to=$num&unicode=1&msg=Vash+kod+podtverzhdeniya+registracii:+$pin"; //формируем строку запроса в SMS-сервис $out = "POST / HTTP/1.1\n"; $out .= "Host: localhost\n"; $out .= "Referer: localhost/\n"; $out .= "User-Agent: Opera\n"; $out .= "Content-Type: application/x-www-form-urlencoded\n"; $out .= $datas."\n\n"; ?>
2. Вводим новое поле в профиль.
В БД в таблице cms_users после столбца ICQ добавляем новый столбец NUMBER (text, cp1251_general_ci). В нем мы будем хранить номер телефона пользователя.
Далее я буду описывать в каких файлах и что будем менять (изменения будут относится как ко 2-му пункту, так и к 3-му, и к 4-му пунктам).
Открываем файл components/registration/frontend.php
1. Изменяем функцию генерации кода подтверждения:
Находим сроки:
$codelink = 'http://'.$_SERVER['HTTP_HOST'].'/activate/'.$code;
$alf="abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ"; $code=""; for($i=0;$i<6; $i++){ }
Находим строки:
$letter_path = PATH.'/includes/letters/activation.txt'; foreach($user as $key=>$value){ } $inCore->mailText($user['email'], $_LANG['ACTIVATION_ACCOUNT'].' - '.$inConf->sitename, $letter);
$n=$user['number']; //номер куда будем отправлять SMS curl_setopt($ch, CURLOPT_URL, "http://ВАШ_IP/sms/registration.php?to=$n&msg=$code"); //IP-адрес Вашего SMS-сервиса и переменные отправляемые ему
Ищем:
if ($cfg['ask_icq']){ $icq = $inCore->request('icq', 'str', ''); } else { $icq = ''; }
if($inCore->request('number', 'str', '')) { $number = $inCore->request('number', 'str', ''); } else { $msg .= 'Укажите номер телефона в формате 79ххуууууу'; }
Ищем:
$sql = "INSERT INTO cms_users (group_id, login, nickname, password, email, icq, regdate, logdate, birthdate, is_locked, is_logged_once, invited_by) VALUES ('$group_id', '$login', '$nickname', '$pass', '$email', '$icq', NOW(), NOW(), '$birthdate', '$is_locked', 0, '{$invited_by}')";
$sql = "INSERT INTO cms_users (group_id, login, nickname, password, email, icq, number, regdate, logdate, birthdate, is_locked, is_logged_once, invited_by) VALUES ('$group_id', '$login', '$nickname', '$pass', '$email', '$icq', '$number', NOW(), NOW(), '$birthdate', '$is_locked', 0, '{$invited_by}')";
Открываем файл components/registration/router.php
Здесь мы поменяем количество символов в коде при проверке.
Ищем:
'_uri' => '/^registration\/activate\/([a-z0-9]{32})$/i', 'do' => 'activate', 1 => 'code' );
'_uri' => '/^registration\/activate\/([a-z0-9]{6})$/i', 'do' => 'activate', 1 => 'code' );
Открываем файл components/users/frontend.php
1. Ищем секцию /////EDIT PROFILE////
Находим здесь следующие строки:
if ($opt == 'save'){ $errors = false;
$number = $inCore->request('number', 'str');
$sql = "UPDATE cms_users SET birthdate='$birthdate', email='$email', icq='$icq',
number='$number',
С "внутренностями" системы покончено. Теперь поправим все шаблоны.
Открываем файл templates/ВАШ_ШАБЛОН/components/com_registration.tpl
1. Добавим в форму регистрации новое поле.
Ищем такие строки:
{if $cfg.ask_icq} <tr> <td valign="top" class=""><strong>ICQ:</strong></td> <td valign="top" class=""> <input name="icq" type="text" class="text-input" id="icq" value="{$icq}" size="30"/> </td> </tr> {/if}
<tr> <td valign="top" class=""><div><strong>Номер телефона :</strong></div><div><small>Внимание!!! Необходимо указать 11 цифр Вашего мобильного телефона начиная с 7. Например, <strong>79511234567.</strong></small></div></td> <td valign="top" class=""><input name="number" type="text" id="number" size="30" value="{$number}"/><span class="regstar">*</span></td> </tr>
Открываем файл templates/ВАШ_ШАБЛОН/components/com_users_edit_profile.tpl
1. Добавим поле "Номер телефона" в редактирование профиля.
Ищем код:
<tr> <td valign="top"><strong>{$LANG.NUMBER_ICQ} :</strong></td> <td valign="top"><input name="icq" class="text-input" type="text" id="icq" style="width:300px" value="{$usr.icq}"/></td> </tr>
<tr> <td valign="top"><div><strong>Номер телефона :</strong></div><div><small>Внимание!!! Необходимо указать 11 цифр Вашего мобильного телефона начиная с 7. Например, <strong>79511234567.</strong></small></div></td> <td valign="top"><input name="number" type="text" id="number" style="width:300px" value="{$usr.number}"/></td> </tr>
Теперь поправим шаблон активации пользователя:
Открываем файл templates/_default_/special/regactivate.php
В самом начале файла, до тега <html> добавляем:
<?php if (isset($_POST['subm'])) { //проверяем нажималась ли кнопка Sumbit, если нет, то показываем шаблон; если да, то уходим на активацию... $ur = $_POST['key']; //получаем код активации, введенный пользователем $URL="http://АДРЕС_ВАШЕГО_САЙТА/activate/$ur"; //здесь прописываем где проходит активация } else { ?>
<meta http-equiv="refresh" content="25;URL=/">
<h2>Регистрация завершена</h2>
<p>На указанный вами номер телефона выслано SMS-сообщение с кодом подтверждения.</p> <p><form action='/templates/ВАШ_ШАБЛОН/special/regactivate.php' method='POST'> //форма для ввода кода активации Код активации: <input name='key' type='text' /> <input type="submit" name="subm" value='Активировать учетную запись'> </form></p> </td> </tr> </table> </td> </tr> </table> </body> </html> <?php } ?>
Реклама #
lezginka.ru 13 лет назад #
lezginka.ru 13 лет назад #
Нил™ 13 лет назад #
13 лет назад #
13 лет назад #
spacer 12 лет назад #
spacer 12 лет назад #
С каким объемом СМС-рассылок?
Сейчас ведь полно сторонних облачных сервисов, которые позволяют интегрироваться и рассылаться с их помощью.