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 »   

> Описание: поколдовать с ссылками
goga5
Отправлено: 17 Августа, 2011 - 12:18:57
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Нужно вот что составить, например у нас есть 2 нужных доменов а все остальные домены не нужны, например:

наши ссылки http://мойсайт[dot]ру и http://мойсайт2[dot]ру то вот что нужно составить.

Если в $переменной встречаются домены только http://мойсайт[dot]ру и http://мойсайт2[dot]ру вместе или они встречаются по отдельности то выдаем всё без ошибок, а вот если вместе с ними встречается еще любой другой домен то нужно выдать ошибку и показать тот домен из за чего появилось это ошибка.

Помогите пожалуйста.....
 
 Top
LIME
Отправлено: 17 Августа, 2011 - 12:26:22
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




goga5 пишет:
Если в $переменной встречаются домены
пример приведите
не совсем понятно
 
 Top
goga5
Отправлено: 17 Августа, 2011 - 12:33:10
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Если в $переменной встречаются домены - $переменная - это форма добавлении текста, таких переменных 2 -3 шт и нужно проверять их все.
 
 Top
White
Отправлено: 17 Августа, 2011 - 12:44:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




регуляркой найдите все домены,например
PHP:
скопировать код в буфер обмена
  1. $pattern="/http:\/\/([A-z0-9\.]*)/"
, а потом проверяйте в цикле на совпадение с вашими.

(Отредактировано автором: 17 Августа, 2011 - 12:45:18)



-----
if(time()>1356048000) die();
 
 Top
goga5
Отправлено: 17 Августа, 2011 - 12:52:18
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




White пишет:
регуляркой найдите все домены,например
PHP:
скопировать код в буфер обмена
  1. $pattern="/http:\/\/([A-z0-9\.]*)/"
, а потом проверяйте в цикле на совпадение с вашими.

Спасибо, но я столько не потяну чтобы это составить.
 
 Top
illy
Отправлено: 17 Августа, 2011 - 13:53:13
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




скопируй код страницы сюда
разберёмся запросто Ха-ха


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
White
Отправлено: 17 Августа, 2011 - 14:07:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $accepted_domains=array(
  3.         'mysite.ru',
  4.         'mysite2.ru'
  5. );
  6. $text='http://mysite.ru http://mysite2.ru httP://test.ru/some_link.php&action=edit';
  7. $pattern="/http:\/\/([A-z0-9\.]*)/i";
  8. preg_match_all($pattern, $text, $matches);
  9. foreach($matches[1] as $domain) {
  10.         if(!in_array(strtolower($domain), $accepted_domains)) die('Domain '.$domain.' is rejected');
  11. }
  12.  


в массиве $accepted_domains допустимые домены, переменная $text - ваша $переменная


-----
if(time()>1356048000) die();
 
 Top
goga5
Отправлено: 17 Августа, 2011 - 14:43:29
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




White пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $accepted_domains=array(
  3.         'mysite.ru',
  4.         'mysite2.ru'
  5. );
  6. $text='http://mysite.ru http://mysite2.ru httP://test.ru/some_link.php&action=edit';
  7. $pattern="/http:\/\/([A-z0-9\.]*)/i";
  8. preg_match_all($pattern, $text, $matches);
  9. foreach($matches[1] as $domain) {
  10.         if(!in_array(strtolower($domain), $accepted_domains)) die('Domain '.$domain.' is rejected');
  11. }
  12.  


в массиве $accepted_domains допустимые домены, переменная $text - ваша $переменная


Спасибо, тут на много легче, справлюсь.
Спасибо еще раз за помощь !
 
 Top
goga5
Отправлено: 21 Августа, 2011 - 19:38:03
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Всё отлично работает, спасибо огромное White, теперь у меня другой вопрос, нужно прикрутить к это следующее:

Там где допускаются ссылки в $accepted_domains, нужно сделать так, чтобы любой из доменов которое имеется в $accepted_domains не повторялось бы более например трех раз, тоесть если в форме имеется домен который разрешен нами и он там вставлен 4 раза то выдать опять ошибку но уже с другим текстом, например "кол-во ссылок mysite2.ru превышает допустимого"
Помогите пожалуйста.
(Добавление)
Или подскажите будет ли правильным то что ниже если вставить ?

CODE (htmlphp):
скопировать код в буфер обмена
  1. if(!in_array(strtolower($accepted_domains) > 3)) die('Stop '.$domain.' is rejected');
 
 Top
White
Отправлено: 21 Августа, 2011 - 22:46:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




goga5 пишет:
if(!in_array(strtolower($accepted_domains) > 3)) die('Stop '.$domain.' is rejected');

strtolower() здесь не причем.
PHP:
скопировать код в буфер обмена
  1. $accepted_domains=array(
  2.         'mysite.ru',
  3.         'mysite2.ru'
  4. );
  5. $text='http://mysite.ru http://mysite2.ru httP://test.ru/some_link.php&action=edit';
  6. $pattern="/http:\/\/([A-z0-9\.]*)/i";
  7. preg_match_all($pattern, $text, $matches);
  8. foreach($matches[1] as $domain) {
  9.   if(!in_array(strtolower($domain), $accepted_domains)) die('Domain '.$domain.' is rejected');
  10.   else  $injects[strtolower($domain)]++;
  11. }
  12. if(is_array($injects)) foreach($injects as $index=>$value) if($value>3) die ('Domain '.$index.' repeated '.$value.' times which is more than we can handle');

можно так например

(Отредактировано автором: 21 Августа, 2011 - 22:48:43)



-----
if(time()>1356048000) die();
 
 Top
goga5
Отправлено: 21 Августа, 2011 - 23:20:51
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




White пишет:
можно так например

спасибо, попробуем сделать....
 
 Top
goga5
Отправлено: 13 Сентября, 2011 - 13:36:51
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




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

Нами разрешено домены: mysite1.ru mysite2.ru mysite3.ru mysite4.ru mysite5.ru mysite6.ru

ограничение по 3 ссылок но для mysite2.ru mysite3.ru нужно снять это ограничение.

помогите пожалуйста решить этот вопрос...
Спасибо!
 
 Top
White
Отправлено: 13 Сентября, 2011 - 14:27:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $accepted_domains=array(
  3.         'mysite.ru'=>3,
  4.         'mysite2.ru'=>3,
  5.         'mysite3.ru'=>5,
  6.         'mysite4.ru'=>0
  7. );
  8. $text='http://mysite.ru http://mysite2.ru httP://test.ru/some_link.php&action=edit';
  9. $pattern="/http:\/\/([A-z0-9\.]*)/i";
  10. preg_match_all($pattern, $text, $matches);
  11. foreach($matches[1] as $domain) {
  12.   if(!in_array(strtolower($domain), $accepted_domains)) die('Domain '.$domain.' is rejected');
  13.   else  $injects[strtolower($domain)]++;
  14. }
  15. if(is_array($injects)) foreach($injects as $index=>$value) if($accepted_domains[$index]>0 and $value>$accepted_domains[$index]) die ('Domain '.$index.' repeated '.$value.' times which is more than we can handle');
  16. ?>


в качестве значения в массиве указывается максимальное колличество вхождений. если значение установлено в ноль, это анлим.


-----
if(time()>1356048000) die();
 
 Top
goga5
Отправлено: 13 Сентября, 2011 - 14:35:33
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Спасибо огромное White тебе!
 
 Top
goga5
Отправлено: 13 Сентября, 2011 - 17:33:47
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Проверил, так не срабатывает не первая и не вторая ошибка Недовольство, огорчение
 
 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