Снятие делегирования и удаление доменов. Мониторинг даты продления доменного имени Бедствие date gos reg html

Доброго времени суток друзья! Давай с Вами рассмотрим регистрацию пользователей на PHP. Для начала давайте определим условия для нашей регистрации пользователей:

  • Пароль шифруем при помощи алгоритма MD5
  • Пароль будем "солить"
  • Проверка на занятость Логина
  • Активация пользователя письмом.
  • Запись и хранение данных в СУБД MySQL

Для написание данного скрипта нам нужно понять, что такое регистрация пользователя. Регистрация пользователя - это получения данных реального пользователя, обработка и хранение данных.

Если объяснять простыми словами то регистрация это всего лишь запись и хранение определенных данных по которым мы можем авторизировать пользователя в нашем случае - это Логин и Пароль.

Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий, а также процесс проверки данных прав при попытке выполнения этих действий. Проше говоря с помощью авторизации мы можем разграничить доступ к тому или иному контенту на нашем сайте.

Рассмотрим структуру каталогов скриптов для реализации нашей регистрации с авторизацией. Нам нужно разбить скрипты на логические составляющие. Модули регистрации и авторизации мы поместив в отдельный каталог. Так же в отдельные каталоги мы поместим подключение к базе данных MySQL , файл с пользовательскими функциями, файл стилей CSS и наш шаблон HTML . Данная структура позволяет быстро ориентироваться в скриптах. Представьте себе, что у Вас большой сайт с кучей модулями и т.д. и если не будет порядка, то будет очень сложно что-то отыскать в таком бардаке.

Так как мы будем хранить все данные в СУБД MySQL , то давайте создадим не большую таблицу в которой будем хранить данные о регистрации.

Для начала нужно создать таблицу в базе данных. Таблицу назовем bez_reg где bez - это префикс таблицы, а reg название таблицы.

Структура таблицы: bez_reg

-- -- Структура таблицы `bez_reg` -- CREATE TABLE IF NOT EXISTS `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NOT NULL, `pass` varchar(32) NOT NULL, `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Теперь создадим основные скрипты для дальнейшей работы.

Файл INDEX.PHP

Файл CONFIG.PHP

"); ?>

Файл 404.HTML

Ошибка 404

Ошибка 404

На странице произошла ошибка 404

Вернуться

Файл BD.PHP

Файл INDEX.HTML

Регистрация пользователей PHP MySQL с активацией письмом

Файл FUNCT.PHP

"."\n"; if(is_array($data)) { foreach($data as $val) $err .= "

  • ". $val ."
  • "."\n"; } else $err .= "
  • ". $data ."
  • "."\n"; $err .= ""."\n"; return $err; } /**Простая обертка для запросов к MySQL * @param string $sql */ function mysqlQuery($sql) { $res = mysql_query($sql); /* Проверяем результат Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке.*/ if(!$res) { $message = "Неверный запрос: " . mysql_error() . "\n"; $message .= "Запрос целиком: " . $sql; die($message); } return $res; } /**Простой генератор соли * @param string $sql */ function salt() { $salt = substr(md5(uniqid()), -8); return $salt; }

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

    Файл REG.PHP

    Вы успешно зарегистрировались! Пожалуйста активируйте свой аккаунт!!"; //Производим активацию аккаунта if(isset($_GET["key"])) { //Проверяем ключ $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `active_hex` = "". escape_str($_GET["key"]) ."""; $res = mysqlQuery($sql); if(mysql_num_rows($res) == 0) $err = "Ключ активации не верен!"; //Проверяем наличие ошибок и выводим пользователю if(count($err) > 0) echo showErrorMessage($err); else { //Получаем адрес пользователя $row = mysql_fetch_assoc($res); $email = $row["login"]; //Активируем аккаунт пользователя $sql = "UPDATE `". BEZ_DBPREFIX ."reg` SET `status` = 1 WHERE `login` = "". $email ."""; $res = mysqlQuery($sql); //Отправляем письмо для активации $title = "Ваш аккаунт на http://сайт успешно активирован"; $message = "Поздравляю Вас, Ваш аккаунт на http://сайт успешно активирован"; sendMessageMail($email, BEZ_MAIL_AUTOR, $title, $message); /*Перенаправляем пользователя на нужную нам страницу*/ header("Location:". BEZ_HOST ."less/reg/?mode=reg&active=ok"); exit; } } /*Если нажата кнопка на регистрацию, начинаем проверку*/ if(isset($_POST["submit"])) { //Утюжим пришедшие данные if(empty($_POST["email"])) $err = "Поле Email не может быть пустым!"; else { if(!preg_match("/^[email protected](+\.)+{2,6}$/i", $_POST["email"])) $err = "Не правильно введен E-mail"."\n"; } if(empty($_POST["pass"])) $err = "Поле Пароль не может быть пустым"; if(empty($_POST["pass2"])) $err = "Поле Подтверждения пароля не может быть пустым"; //Проверяем наличие ошибок и выводим пользователю if(count($err) > 0) echo showErrorMessage($err); else { /*Продолжаем проверять введеные данные Проверяем на совподение пароли*/ if($_POST["pass"] != $_POST["pass2"]) $err = "Пароли не совподают"; //Проверяем наличие ошибок и выводим пользователю if(count($err) > 0) echo showErrorMessage($err); else { /*Проверяем существует ли у нас такой пользователь в БД*/ $sql = "SELECT `login` FROM `". BEZ_DBPREFIX ."reg` WHERE `login` = "". escape_str($_POST["email"]) ."""; $res = mysqlQuery($sql); if(mysql_num_rows($res) > 0) $err = "К сожалению Логин: ". $_POST["email"] ." занят!"; //Проверяем наличие ошибок и выводим пользователю if(count($err) > 0) echo showErrorMessage($err); else { //Получаем ХЕШ соли $salt = salt(); //Солим пароль $pass = md5(md5($_POST["pass"]).$salt); /*Если все хорошо, пишем данные в базу*/ $sql = "INSERT INTO `". BEZ_DBPREFIX ."reg` VALUES("", "". escape_str($_POST["email"]) ."", "". $pass ."", "". $salt ."", "". md5($salt) ."", 0)"; $res = mysqlQuery($sql); //Отправляем письмо для активации $url = BEZ_HOST ."less/reg/?mode=reg&key=". md5($salt); $title = "Регистрация на http://сайт"; $message = "Для активации Вашего акаунта пройдите по ссылке ". $url .""; sendMessageMail($_POST["email"], BEZ_MAIL_AUTOR, $title, $message); //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=reg&status=ok"); exit; } } } } ?>

    Файл REG_FORM.HTML

    Регистрация пользователей PHP MySQL с активацией письмом

    E-mail*:
    Пароль*:
    Подтверждения пароля*:

    Поля со значком * обязательны для заполнения

    Так как регистрация пользователей у нас готова, самое время написать авторизацию. Создадим форму для авторизации пользователей, далее напишем обработчик формы авторизации и на последок сделаем скрипт show.php который будет показывать нам авторизированны мы в системе или нет.

    Файл AUTH.PHP

    0) echo showErrorMessage($err); else { /*Создаем запрос на выборку из базы данных для проверки подлиности пользователя*/ $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `login` = "". escape_str($_POST["email"]) ."" AND `status` = 1"; $res = mysqlQuery($sql); //Если логин совподает, проверяем пароль if(mysql_num_rows($res) > 0) { //Получаем данные из таблицы $row = mysql_fetch_assoc($res); if(md5(md5($_POST["pass"]).$row["salt"]) == $row["pass"]) { $_SESSION["user"] = true; //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=auth"); exit; } else echo showErrorMessage("Неверный пароль!"); } else echo showErrorMessage("Логин ". $_POST["email"] ." не найден!"); } } ?>

    Для тех у кого последняя версия PHP выкладываю данный скрипт с использованием PDO т.к. расширение MySQL устарело и было удалено из новой версии PHP. Скачать регистрация и авторизация php mysql pdo

    Архив обновлен 24.02.2015г.

    Внимание: Если вы используете данный скрипт на локальном сервере типа DENWER , XAMPP , то не стоит ждать писем на свой почтовый ящик. Письма лежат в заглушке sendmail . В Denwer вы их можете найти по пути Z:\tmp\!sendmail\ открыть данные файлы вы сможете в любом почтовом клиенте.

    Мониторинг даты продления доменного имени — действие, которое нельзя недооценить. Я уже писал о том, и теперь давайте разберемся с другой частой проблемой — неожиданным окончанием срока регистрации доменного имени. Казалось бы, все регистраторы на сегодняшний день заранее об этом напоминают (причем обычно несколько раз). Но проблема в том, что эти письма либо не читают, либо они как-то попадают в спам. В общем, не все в курсе, что у них заканчивается срок регистрации доменного имени. В результате сайт не работает, люди не понимают, почему, и тратят иногда много времени, чтобы понять, что происходит. Тем временем доменное имя пропадает из кэша DNS, и через пару дней (или даже раньше, зависит от разных факторов) посетители перестают попадать на сайт. Давайте посмотрим, как мониторить дату окончания регистрации доменного имени. Естественно, скриптом на bash.

    Как получить дату регистрации доменного имени

    Самый простой вариант — использовать глобальную базу данных whois. В ней хранится информация о доменных именах, такая как организация, ответственное лицо, контакты для связи, дата регистрации и дата окончания срока регистрации. И это как раз то, что нам нужно. Давайте возьмем какой-нибудь популярный домен для примера. Пусть это будет yandex.ru. Вот какая информация хранится в базе whois об этом домене:

    $ whois yandex.ru % By submitting a query to RIPN"s Whois Service % you agree to abide by the following terms of use: % http://www.ripn.net/about/servpol.html#3.2 (in Russian) % http://www.ripn.net/about/en/servpol.html#3.2 (in English). domain: YANDEX.RU nserver: ns1.yandex.ru. 213.180.193.1, 2a02:6b8::1 nserver: ns2.yandex.ru. 93.158.134.1, 2a02:6b8:0:1::1 state: REGISTERED, DELEGATED, VERIFIED org: YANDEX, LLC. registrar: RU-CENTER-RU admin-contact: https://www.nic.ru/whois created: 1997.09.23 paid-till: 2017.10.01 free-date: 2017.11.01 source: TCI Last updated on 2017.01.03 05:46:31 MSK

    Поле, которое нас интересует — «paid-till», это дата, до которой у нас оплачен домен.

    Мониторинг даты продления доменного имени сделаем примерно так же, как и мониторинг сертификата, но заметно проще. Получаем данные о домене, ищем поле, содержащее дату окончания регистрации, если оно присутствует (если данные whois для этого домена не закрыты), получаем эту дату, получает сегодняшнюю дату и выводим разницу в днях. При желании можно добавить отправку письма, если осталось, скажем, меньше 30 дней до окончания регистрации. Но не всё так просто. Потому что есть как минимум три вида записей об окончании срока регистрации. Первый выглядит так:

    Paid-till: 2017.10.01

    Второй выглядит так:

    Registrar Registration Expiration Date: 2020-09-13T21:00:00-0700

    И третий выглядит так:

    Registry Expiry Date: 2018-05-11T04:00:00Z

    И нам, соответственно, надо предусмотреть все три варианта. Или, если встретится четвертый, то и четвертый. Пока давайте разберемся с этими тремя.

    Вот как выглядит скрипт:

    #!/bin/bash # Если параметр не указан, выводим подсказку и завершаем работу if [ "$1" == "" ] then cat << EOF Script that monitors how many days left until domain registration ends. Usage: $(basename $0) domain.name EOF exit fi # Получаем строку, содержащую дату окончания регистрации PAIDTILL=$(whois $1 | grep "paid-till\|Registrar Registration Expiration Date\|Registry Expiry Date") # Если такая строка не найдена, выходим с ошибкой if [ -z "$PAIDTILL" ] then echo "Registration end date is not available in whois database" exit 1 else # Если дата выглядит как ГГГГ.ММ.ДД, то добавляем 00:00:00 в конец [[ "$PAIDTILL" =~ "paid-till" ]] && PAIDTILL=${PAIDTILL//./-}" 00:00:00" # Удаляем из строки всё до двоеточия, само двоеточие # плюс автоматически будут удалены пробелы PAIDTILL=${PAIDTILL#*:} # Получаем текущую дату CURRENTDATE=$(date "+%Y-%m-%d %H:%M:%S") # Находим разницу между датами, получаем количество оставшихся дней DAYS_LEFT=$((($(date -d "$PAIDTILL" +%s) - $(date -d "$CURRENTDATE" +%s)) / 86400)) # Выводим, сколько дней осталось echo $DAYS_LEFT days left fi

    Вот результат работы этого скрипта для разных доменов на момент написания статьи:

    $ ./check-dn-reg.sh linux.org 492 days left $ ./check-dn-reg.sh yahoo.com 2206 days left $ ./check-dn-reg.sh yandex.ru 270 days left $ ./check-dn-reg.sh google.com 1349 days left $ ./check-dn-reg.sh ok.ru 331 days left $ ./check-dn-reg.sh vk.com 170 days left $ ./check-dn-reg.sh linux.org 492 days left $ ./check-dn-reg.sh linux.org.ru 345 days left

    Согласитесь, удобно выглядит. Мониторинг даты продления доменного имени скриптом размером всего 660 байт. Уже можно использовать в мониторинге при помощи Nagios или Zabbix.

    Если есть дополнения, замечания, пишите в комментарии.

    Если продление услуги регистрации доменов.RU, .РФ и.SU не оплачено до окончания срока ее действия, предоставление услуги приостанавливается (делегирование домена снимается) в день, указанный в поле paid-till в Whois-сервисе. Если плановая дата отключения приходится на выходной или праздничный день, отключение домена переносится на первый рабочий день после выходных.

    После приостановления делегирования доменов все http-запросы к домену перенаправляются на служебную страницу с информацией о временном непредоставлении услуги. Отказаться от перенаправления на служебную страницу Администраторы доменов.RU, и.РФ могут до истечения срока регистрации доменного имени, прислав заявку в произвольном виде по адресу .

    В течение 30 дней после окончания срока действия услуги (в период преимущественного продления) у Администратора домена.RU, .РФ или.SU сохраняется возможность оплатить ее продление.

    В случае оплаты предоставление услуги возобновляется.

    Удаление доменов.RU, .SU, .РФ из Реестра за неоплату

    Если продление регистрации домена не оплачено в течение 30 дней после ее окончания (в период преимущественного продления), регистрация аннулируется (домен освобождается).

    Публикуется в поле free-date информации о домене после окончания срока его регистрации.

    RU-CENTER может удалить домен.SU в любое время с момента наступления плановой даты освобождения (free-date). Если этого не произошло, домены автоматически удаляет Технический Центр.

    В период преимущественного продления аннулирование регистрации доменов.RU и.РФ не производится.

    Дата удаления домена Техническим Центром

    Домены.RU, .РФ и.SU удаляются Техническим Центром в день, соответствующий плановой дате удаления (free-date).

    Домены.RU, .РФ или.SU будут удалены во второй рабочий день после выходных, если дата удаления приходится на выходной день или день, следующий за выходным.

    Процедура удаления доменов в Техническом Центре начинает работать:

    • для доменов.RU, .РФ в 17:00 (MSK),
    • для доменов.SU в 19:30 (MSK).

    Регистрация через RU-CENTER доменов.RU, .SU, .РФ, подлежащих освобождению

    Заявки на регистрацию освобождающегося из Реестра домена можно подать на сервере www..сайт/auction/ до освобождения домена из Реестра.

    Для доменов.RU и.РФ заявки начинают приниматься за 30 дней до дня освобождения домена из Реестра согласно услуге регистрации освобождающегося домена в доменах RU и РФ.

    Для доменов.SU - в любой момент до освобождения домена из Реестра согласно услуге регистрации освобождающегося домена в доменах SU, COM.RU, NET.RU, ORG.RU, PP.RU и геодоменах.

    Для доменов.RU, .SU, .РФ - в день удаления домена из Реестра через веб-интерфейс на странице , при этом:

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

    2. Международные и зарубежные

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

    В течение 30 дней после окончания срока действия услуги у Администратора домена сохраняется возможность оплатить ее продление. В случае оплаты предоставление услуги возобновляется.

    Удаление доменов из Реестров в международных и зарубежных национальных доменах

    Если продление регистрации домена не оплачено в течение 30 дней с момента окончания срока действия услуги, то RU-CENTER инициирует в Реестре процедуру удаления домена. Если дата удаления приходится на выходной или праздничный день, начало процедуры удаления домена переносится на второй рабочий день после выходных.

    Процедура удаления домена в Реестре длится 35 дней. Исключение составляют:

    • домены.HN, процедура удаления которых длится 15 дней, а домен в этот период не может быть ни восстановлен, ни продлен;
    • домены.NAME, которые удаляются по истечении 30 дней после окончания срока регистрации.
    • домены.KZ, которые удаляются по истечении 20 дней после окончания срока регистрации.

    При этом Реестр на 30 дней устанавливает для домена соответствующий статус в :
    .NET, .COM, .CC, .TV, .AG, .BZ, .LC, .MN, .SC, .VC - RedemptionPeriod,
    .BIZ, .TEL - Pending Delete,
    .INFO, .ORG, .ME, .MOBI, .AERO, .TRAVEL, .XXX, .PRO - PendingDelete Restorable.

    Дата начала тридцатидневного периода указывается в в поле:
    Updated Date для доменов.NET, .COM, .CC, .TV, .AG, .BZ, .HN, .LC, .MN, .SC, .VC
    Domain Last Updated Date - BIZ, .TEL или
    Last Updated On - INFO, .ORG, .ME, .MOBI, .AERO, .TRAVEL, .XXX, .PRO.

    Восстановление домена

    В течение 25 дней с момента начала процедуры удаления домен может быть восстановлен и продлен (кроме.HN, NAME, .KZ) по запросу Администратора домена.

    Если домен не был восстановлен и продлен, он будет удален из Реестра через 5 дней после окончания срока RedemptionPeriod (Pending Delete или PendingDelete Restorable). В течение этих 5 дней (статус домена в Реестре - PendingDelete) восстановить, продлить или зарегистрировать домен невозможно.

    После удаления домена из Реестра домен может быть зарегистрирован любым лицом.

    3. Домены 3-го уровня

    Снятие делегирования домена за неоплату

    Если продление услуги не оплачено до окончания срока ее действия, предоставление услуги приостанавливается (делегирование домена снимается) на следующий день после даты, указанной в поле paid-till в Whois-сервисе. Для доменов.NET.RU, .ORG.RU и.PP.RU предоставление услуги приостанавливается (делегирование домена снимается) в день, указанный в поле paid-till в Whois-сервисе.

    Если плановая дата отключения приходится на выходной или праздничный день, отключение домена переносится на второй рабочий день после выходных.

    После приостановления делегирования доменов все http-запросы к доменам.NET.RU, .ORG.RU и.PP.RU перенаправляются на служебный веб-сайт Администратора доменов.NET.RU, .ORG.RU и.PP.RU, АНО «ЦВКС «МСК-IX», с информацией о причине прекращения делегирования.

    В течение 30 дней после окончания срока действия услуги (период преимущественного продления) у Администратора домена сохраняется возможность оплатить ее продление. В случае оплаты предоставление услуги возобновляется.

    В период преимущественного продления аннулирование регистрации доменов.NET.RU, .ORG.RU и.PP.RU не производится.

    Если оплата за продление услуги производится в последний рабочий день периода преимущественного продления, то RU-CENTER не несет ответственности за успешное продление.

    Удаление доменов

    Регистрация доменного имени третьего уровня аннулируется (домен освобождается), если она не будет продлена в течение 30 (тридцати) календарных дней с даты окончания срока регистрации доменного имени.

    Плановая дата освобождения домена публикуется в поле free-date в информации о домене в Whois-сервисе RU-CENTER после окончания срока его регистрации. При этом удаление производится на один день позже плановой даты освобождения, если день удаления (free-date+1) не приходится на нерабочий день или день, следующий за нерабочим (в противном случае удаление производится во второй рабочий день после выходных).

    Домены.NET.RU, .ORG.RU и.PP.RU удаляются Техническим Центром в день, соответствующий плановой дате удаления (free-date). Домены.NET.RU, .ORG.RU и.PP.RU будут удалены во второй рабочий день после выходных, если дата удаления приходится на выходной день или день, следующий за выходным.

    Регистрация через RU-CENTER освобождающихся доменов 3-го уровня

    Заявки на регистрацию освобождающихся из Реестра или доменов.COM.RU можно подать на сервере www..сайт/auction/ в любой момент до освобождения доменов из Реестра согласно услуге «Регистрация освобождающегося домена в доменах.SU, .COM.RU и геодоменах».

    В день удаления домена заявка на услугу регистрации домена принимается через веб-интерфейс на странице , при этом:

    • заявка удовлетворяется, если в момент ее обработки домен оказывается свободным;
    • о выполненных действиях направляется письмо по контактным электронным адресам лица, сделавшего заявку.
    Статьи по теме: