- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
<?php
/**
* $URL: svn://svn.subversion.ru/usr/local/svn/mzz/trunk/system/forms/validators/formHostnameRule.php $
*
* MZZ Content Management System (c) 2005-2007
* Website : http://www.mzz.ru
*
* This program is free software and released under
* the GNU/GPL License (See /docs/GPL.txt).
*
* @link http://www.mzz.ru
* @version $Id: formHostnameRule.php 3864 2009-10-21 04:50:04Z zerkms $
*/
/**
* formHostnameRule: правило, проверяющее имя хоста
*
* @package system
* @subpackage forms
* @version 0.1.1
*/
class formHostnameRule extends formAbstractRule
{
private $validTlds = array(
'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
'aq', 'ar', 'arpa', 'as', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb',
'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd',
'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do',
'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj',
'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh',
'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il',
'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm',
'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kr', 'kw',
'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu',
'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm',
'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv',
'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng',
'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt',
'pw', 'py', 'qa', 're', 'ro', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd',
'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr',
'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj',
'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw',
'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've',
'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm',
'zw'
);
protected function _validate($value)
{
if (preg_match('#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $value)) {
return true;
}
$domainParts = explode('.', $value);
if (sizeof($domainParts) < 2) {
return false;
}
if (strlen($value) > 254 || strlen($value) < 4) {
return false;
}
$tld = array_pop($domainParts);
if (!in_array(strtolower($tld), $this->validTlds)) {
return false;
}
$validChars = 'a-z0-9\-';
foreach ($domainParts as $part) {
if (strpos($part, '-') === 0 || (strlen($part) > 3 && strpos($part, '--', 2) === 2) || substr($part, -1) === '-') {
return false;
}
if (!preg_match('#^[' . $validChars . ']{1,63}$#i', $part)) {
return false;
}
}
return true;
}
}
?>
Домены валидировали-валидировали, да недовалидировали.
https://github.com/wiistriker/govnokod_legacy/blob/master/mzz/system/forms/validators/formHostnameRule.php
BoeHHblu_nemyx 18.05.2019 00:02 # 0
TEH3OPHblu_nemyx 18.05.2019 00:19 # +1
Desktop 18.10.2020 12:43 # 0
TEH3OPHblu_nemyx 18.05.2019 00:29 # +3
—– Тому що у пехапешніков не буває нормальних дітей.
unicorn 18.05.2019 14:08 # 0
com1 18.05.2019 00:38 # 0
TEH3OPHblu_nemyx 18.05.2019 00:44 # +1
Straiker 18.05.2019 01:01 # 0
com1 18.05.2019 01:07 # 0
Straiker 18.05.2019 01:10 # 0
com1 18.05.2019 01:56 # 0
unicorn 18.05.2019 14:09 # 0
com1 18.05.2019 16:15 # +1
а говнокод годный, тем более, что уже первая проверка
[code language="php"]preg_match('#^\d{1,3}\.\d{1,3}\.\d{1,3}\ .\d{1,3}$#', $value)[/code]
для IPv4 не верна, а 2-4 можно заменить на filter_var(...).
впрочем, зачем я это объясняю "члену сообщества"?
unicorn 18.05.2019 21:03 # 0
cmepmop 18.05.2019 21:20 # 0
Straiker 18.05.2019 22:51 # 0
unicorn 21.05.2019 12:59 # +1
rOqpPEH 21.05.2019 13:00 # 0
com1 18.05.2019 21:22 # 0
а вообще, мы просто обменялись мнениями.
unicorn 21.05.2019 13:00 # 0
Rooster 18.05.2019 05:48 # 0
http://govnokod.ru/25224
unicorn 18.05.2019 13:47 # 0
Rooster 18.05.2019 18:12 # 0
Rooster 18.05.2019 05:54 # +1
Оно разве не должно быть: ?
ЗЫ. когда-то пробовал регать по IP, ни один из вариантов не прошёл.
Rooster 18.05.2019 06:52 # 0
https://tools.ietf.org/html/rfc5322#section-3.4
TEH3OPHblu_nemyx 18.05.2019 14:46 # +1
Literal Internet address –— это, вероятно, и есть айпишник.
Rooster 18.05.2019 18:11 # +1
TEH3OPHblu_nemyx 19.05.2019 01:48 # +1
gost 18.05.2019 10:42 # +2
unicorn 18.05.2019 13:45 # 0
gost 18.05.2019 10:43 # 0
Rooster 18.05.2019 11:00 # 0
Валидатор может парсить домены отсюда:
https://ru.tld-list.com/tlds-from-a-z
gost 18.05.2019 11:07 # 0
Кстати, если без зелёного, то для максимально строгой валидации домена действительно можно регулярно обновлять (скриптами, конечно) список TLD из https://tld-list.com/df/tld-list-basic.txt (правда, их там почему-то всего около полутора тысяч). Но на кой хрен такое может пригодиться — хз.
TEH3OPHblu_nemyx 18.05.2019 17:39 # +1
ftp://ftp.internic.net/domain/root.zone
TEH3OPHblu_nemyx 18.05.2019 17:43 # +1
https://publicsuffix.org/list/public_suffix_list.dat
Естественно, в нём домены могут обновляться медленнее, чем в «InterNIC».
unicorn 18.05.2019 14:06 # 0
guest8 18.05.2019 14:34 # −999
unicorn 18.05.2019 14:47 # 0