Всем привет. по мне там неверно написан шаблон. PHP: //$content - переменная текста $anti='#http://[a-z0-9_\.]+(\.ru$|\.com$|\.mobi$|\.info$|\.org$|\.net$|\.su$|\.ua$)#i'; preg_match($anti,$content,$out); if ($out[0] != ""){ echo "<div style=\"text-align:left\" class=\"tit\">Ошибка</div> "; echo "<div style=\"text-align:left\" class=\"box\"> "; echo "Спам запрещен!<br/> "; echo "Пожалуйста, будьте разумными:<br/> "; echo "покупайте официально рекламу на нашем сайте.<br/> "; echo "В любом случае ваш спам будет удален,<br/> "; echo "ваши старания ровно на 3 мин :) "; echo "</div>"; } else { echo "Ok!"; }
Шаблон тот который дал Impuls*. Может ему именно так нужно искать. Хотя я понял твою идею . А вот ($out[0] != "") необязательно т.к. preg_match - функция и если есть совпадения то вернет 1, т.е. можно сразу писать if (preg_match($_anti, $content) Да и еще одно при твоем варианте шаблона будет неверно обрабатываться сайты вида site.xxx т.к. у тебя в [a-z0-9_\.]+ присутствует точка и дальше в расширениях тоже есть точка, значит регулярка будет искать site..xxx (две точки) что неверно.
Там изначально неверный шаблон. Ну по поводу if-согласен,но мне почему-то просто так больше нравится(хотя вероятно это менее безопасно). вот скрипт накатал...все работает...т.к. в адресе могут быть поддомены. http://aandb.ru/test.php?a=http://aaa.www.ru
Я тоже думал про поддомены.... все это ясно. Но я написал адреса вида site.xxx т.е. как оно будет работать если нету поддоменов?
Да. Я все понял. Будет работать! Ты прав... я тупанул с классом Хотя там есть одна темка которую скрипт не учитывает. По идее регулярка ищет адреса и если запись соответствует "понятию" адрес сайта, то пишет "СПАМ". Но если мы в сделаем так. http://aandb.ru/test.php?a=http://aaa.........ru (http://aaa.........ru - не адрес сайта) то скрипт все равно выдаст СПАМ!!!! Хотя это уже наверно не критично.
почему?...если это порсто текст то он просто проинорирует и все. ну можно еще прописать дополнительный,необзательный параметр в шаблоне, чтобы проверял раширение файла...и т.п. но это уже авто сам добавит...это уже причесать и прилизать...
Доброго времени суток господа! Есть 2 пхп скрипта на удаленном сервере 1 пхп начинается: <? session_start(); ?> <html> <head> <title>ADMIN</title> <script type="text/javascript"> function CheckAll(formname) { thisCheckBoxes = document.forms[formname].getElementsByTagName('input'); for (i = 0; i < thisCheckBoxes.length; i++) { if (thisCheckBoxes.name!='forall') thisCheckBoxes.checked = !thisCheckBoxes.checked; } } </script> </head> <body> <? if (session_is_registered("valid_user")) $valid=true; else $valid=false; if (!isset($login) && !isset($password)) $logged=false;else $logged=true; if (!$logged && !$valid) { ?> Please, log in: <form method=post name=auth action='1.php'> <table><tr> <td>Login:</td> <td><input type=text name=login></td> </tr><tr> <td>Password:</td> <td><input type=password name=password></td> </tr><tr> <td colspan=2 align=center><input type=submit value="LOGIN"></td> </tr> </form> <? } if ($logged) ... 2 пхп начинается так: <? session_start(); if (!session_is_registered("valid_user")) exit(); ?> <?php @set_time_limit(0); @ini_set('max_execution_time',0); @ini_set('output_buffering',0); require ("3.php"); ... Возможно ли подменить сеесию? или получить первый скрипт ? Или может что-нить другое можно сделать ? За помощь отблагодарю $
Чтобы подделать сессию,ее нужно найти сначала. Как найти сессию - XSS,но здесь вроде как ничего не сделаешь. у тебя есть участок кода после if ($logged)? если там идет обращение к БД, то вероятно можно покапаться на наличие SQL-inj.
У меня есть код, он почТИ такой же: if ($login=='admin' && $password=='admin) { session_register("valid_user"); $valid=true; } else { echo "<h3>WRONG LOGIN OR PASS!</h3>"; } if (!$valid) exit();
Про preg_match(), я реализовал этот вариант как только ты мне его дал! НО: он ищет именно этот текст, учитывает вроде регистр букв, потом если написать "http://google.ru/tuta - картинки!" то он пропустит его, я пробывал.Или просто надо что-то добавить)) Вот из-за этих минусов я пробывал это реализовать через поиск без регистра stristr(), здесь и если написано еще что-то то скрипт работает.
В регулярках можно поставить модификатор "i" тогда будет игнорировать регистр. По поводу остального - напиши подробнее что ты хочешь чтобы у тебя искало и фильтровало... какие именно записи должны фильтроваться скриптом?
http://www.php.ru/forum/viewtopic.php?p=67825 если нужно могу помочь с реализацией. ---------- С наилучшими пожеланиями!