Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Защита сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
gigs
Отправлено: 02 Мая, 2012 - 17:00:21
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




Скажите пожалуйста, есть ли какой нибуть срособ для защиты формы комментариев от ссылок? Например чтобы когда пользователь вводил www[dot]сайт[dot]com то после отправки появлялось ***.сайт.com чтобы не было вот этих www или чтото в этом роде.
 
 Top
Tek
Отправлено: 02 Мая, 2012 - 17:05:01
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Февр. 2012  


Помог: 1 раз(а)




используй регулярные выражения для поиска ссылок что то в духе "/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/" и результат заменяй str_replace ом на нужное значение...

(Отредактировано автором: 02 Мая, 2012 - 17:08:21)

 
 Top
gigs
Отправлено: 02 Мая, 2012 - 17:07:48
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




Что то я неочень понял, а можите привести пример с кодом?
 
 Top
Tek
Отправлено: 02 Мая, 2012 - 17:09:18
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Февр. 2012  


Помог: 1 раз(а)




gigs пишет:
Что то я неочень понял, а можите привести пример с кодом?

Посмотри здесь
http://www.php.su/articles/?cat=...ars&page=008
 
 Top
gigs
Отправлено: 02 Мая, 2012 - 17:19:27
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




А что если будет стоять тег a href то это не будет считатся за ссылку?
 
 Top
nordghost
Отправлено: 03 Мая, 2012 - 01:13:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




тебе нужно чтобы ссылки не были ссылками или просто чтобы не отображались?


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 03 Мая, 2012 - 01:58:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




gigs пишет:
это не будет считатся за ссылку?
Кем?
 
 Top
Alho
Отправлено: 03 Мая, 2012 - 09:45:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




1) Если ты просто в целях защиты от спама хочешь удалять ссылки из комментариев, то элементарная замена:
PHP:
скопировать код в буфер обмена
  1. function delLinks($text)
  2. {
  3.     return preg_replace('|www.[\w]+.[\w]{1,4}|','Ссылки запрещены!',$text);
  4. }


2) Если ссылки таки нужно оставлять, но SEO не позволяет, то помогает это:
PHP:
скопировать код в буфер обмена
  1. function replaceForeignLinks($text)
  2. {
  3.     $text = preg_replace('|href=["\']*"http://|','href="http://www.site.ru/url/',$text);
  4.     if(preg_match_all('|(?<!href=\"http:\/\/)(?<!ru\/url\/)www.[\w]+.[\w]{1,4}|', $text, $match))
  5.     {
  6.         foreach ($match[0] as $value) {
  7.             $text=str_replace($value, "<a href=\"http://www.site.ru/url/$value/\">$value</a>", $text);
  8.         }
  9.     }
  10.     return $text;
  11. }

Вопрос (кстати, не откажусь в помощи. как бы оптимизировать функцию? три раза пересматривать текст - моветон),
а это в .htacces
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^url\/(.*)\/ http://$1 [R=302,L]
 
 Top
gigs
Отправлено: 03 Мая, 2012 - 15:10:43
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




Спасибо, а эту функцию
PHP:
скопировать код в буфер обмена
  1.     function delLinks($text)
  2.     {
  3.         return preg_replace('|www.[\w]+.[\w]{1,4}|','Ссылки запрещены!',$text);
  4.     }

нужно ставить там где форма после подключения к базе или как? а то я еще ни разу не работал с такой функцией.
(Добавление)
nordghost пишет:
тебе нужно чтобы ссылки не были ссылками или просто чтобы не отображались?

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

(Отредактировано автором: 03 Мая, 2012 - 15:25:04)

 
 Top
Alho
Отправлено: 03 Мая, 2012 - 15:53:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




Если второй вариант не нужен, то не нужен и htacces.

При добавлении комментария, скорее всего ты отправляешь данные формы. И как раз перед записью данных в бд , ты можешь использовать эту функцию. Вроде этого:
PHP:
скопировать код в буфер обмена
  1. $_POST["text"]=delLinks($_POST["text"]);
  2.  
 
 Top
gigs
Отправлено: 03 Мая, 2012 - 16:01:47
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




я извеняюсь но вот код моей формы
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // Error reporting:
  4. error_reporting(E_ALL^E_NOTICE);
  5. //id страницы
  6. $pageID=(isset($_GET['id']))?(int)$_GET['id']:1;//по умолчанию первая страница имеет id=1
  7.  
  8. include "connect.php";
  9. include "comment.class.php";
  10.  
  11.  
  12.  
  13.  
  14.  
  15. //Далее работа с комментариями
  16. $comments=array();
  17. $result=mysql_query("SELECT * FROM comments WHERE pageid='$pageID' ORDER BY id ASC");
  18. while($row=mysql_fetch_assoc($result)){
  19.         $comments[]=new Comment($row);
  20. }
  21.  
  22. header('Content-Type: text/html; charset=utf-8');
  23. ?>
  24. <!DOCTYPE html>
  25. <html>
  26. <head>
  27. <title>Страница <?=$pageID?></title>
  28. <link rel="stylesheet" type="text/css" href="styles.css" />
  29. </head>
  30. <body>
  31. <div id="main">
  32. <div>
  33. <?PHP
  34. foreach($comments as $c){
  35.         echo $c->markup();
  36. }
  37. ?>
  38. </div>
  39.  
  40. <div id="addCommentContainer">
  41.         <p>Оставить комментарий</p>
  42.         <form id="addCommentForm" method="post" action="">
  43.                 <div>
  44.                         <label for="name">Ваше имя</label>
  45.                         <input type="text" name="name" id="name" />
  46.  
  47.                         <label for="email">Ваш Email</label>
  48.                         <input type="text" name="email" id="email" />
  49.  
  50.                        
  51.  
  52.                         <label for="body">Текс комментария</label>
  53.                         <textarea name="body" id="body" cols="20" rows="5"></textarea>
  54.  
  55.                         <input type="hidden" name="page_id" value="<?=$pageID?>" />
  56.  
  57.                         <input type="submit" id="submit" value="Отправить" />
  58.                 </div>
  59.         </form>
  60. </div>
  61.  
  62. </div>
  63. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  64. <script type="text/javascript" src="script.js"></script>
  65. </body>
  66. </html>

подскажите куда мне нужно это добавить?

(Отредактировано автором: 04 Мая, 2012 - 01:05:37)

 
 Top
gigs
Отправлено: 05 Мая, 2012 - 20:00:35
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




Или это в файл обработки нужно ставить ?
 
 Top
Muxa
Отправлено: 06 Мая, 2012 - 11:43:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




gigs у тебя в 'action' формы стоит пустой адрес, значит тебе желательно добавлять обработчик в этом же файле (чтобы не усложнять себе и другим людям жизнь Радость ). а вставлять - где угодно в файле в принципе - если захочешь сделать вариант с выводом сообщения о запрете ссылок, то лучше вставлять в том месте, где ты хочешь видеть это сообщение. Либо же можешь создать еще один файл-обработчик формы, в action прописать путь к этому файлу и там проверять все это
(Добавление)
gigs и, имхо, лучше не делать ссылки адресом, а выполнять проверку - если URL-адрес, то выводить предупреждение о том что выводить ссылки запрещено. Хотя смотря какой сайт в принципе тоже Хорошо
 
 Top
gigs
Отправлено: 06 Мая, 2012 - 20:46:03
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




что то у меня не получается, как мне правиль но сделать файл-обработчик формы, я сделал так:
имя файла 1.php
PHP:
скопировать код в буфер обмена
  1. <? function delLinks($body)
  2.     {
  3.         return preg_replace('|www.[\w]+.[\w]{1,4}|','Ссылки запрещены!',$body);
  4.     }
  5.         ?>

потом вставил в action но ничего не происходит, что не так помогите ?
 
 Top
Muxa
Отправлено: 07 Мая, 2012 - 01:11:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




gigs пишет:
что то у меня не получается, как мне правиль но сделать файл-обработчик формы, я сделал так:
имя файла 1.php
PHP:
скопировать код в буфер обмена
  1. <? function delLinks($body)
  2.     {
  3.         return preg_replace('|www.[\w]+.[\w]{1,4}|','Ссылки запрещены!',$body);
  4.     }
  5.         ?>

потом вставил в action но ничего не происходит, что не так помогите ?

ты вставил в action что? название функции? если ты проверяешь условия в этом же файле, то ты должен сначала проверить нажатие кнопки пользователем, затем уже заменять адрес - в этом случае action='' .. если ты проверяешь условие в другом файле то ты должен в поле action указывать путь к файлу, где ты проверяешь условие.
допустим, если ты проверяешь в этом же файле то
PHP:
скопировать код в буфер обмена
  1.  
  2. <input type='submit' name='btn' value='ok'>
  3. <?PHP
  4. if(isset($_POST['btn']))
  5. {
  6.     проверяешь условие, если это ссылка то выводишь ошибку или заменяешь адрес
  7. }
  8. else
  9. просто выводишь
  10.  

либо, раз ты используешь функцию, ты должен ее вызывать внутри цикла if

(Отредактировано автором: 07 Мая, 2012 - 01:12:14)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB