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
Форумы портала PHP.SU :: Версия для печати :: Напишите пожалуйста за меня
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Напишите пожалуйста за меня

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

1. goga5 - 17 Августа, 2011 - 12:18:57 - перейти к сообщению
Нужно вот что составить, например у нас есть 2 нужных доменов а все остальные домены не нужны, например:

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

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

Помогите пожалуйста.....
2. LIME - 17 Августа, 2011 - 12:26:22 - перейти к сообщению
goga5 пишет:
Если в $переменной встречаются домены
пример приведите
не совсем понятно
3. goga5 - 17 Августа, 2011 - 12:33:10 - перейти к сообщению
Если в $переменной встречаются домены - $переменная - это форма добавлении текста, таких переменных 2 -3 шт и нужно проверять их все.
4. White - 17 Августа, 2011 - 12:44:54 - перейти к сообщению
регуляркой найдите все домены,например
PHP:
скопировать код в буфер обмена
  1. $pattern="/http:\/\/([A-z0-9\.]*)/"
, а потом проверяйте в цикле на совпадение с вашими.
5. goga5 - 17 Августа, 2011 - 12:52:18 - перейти к сообщению
White пишет:
регуляркой найдите все домены,например
PHP:
скопировать код в буфер обмена
  1. $pattern="/http:\/\/([A-z0-9\.]*)/"
, а потом проверяйте в цикле на совпадение с вашими.

Спасибо, но я столько не потяну чтобы это составить.
6. illy - 17 Августа, 2011 - 13:53:13 - перейти к сообщению
скопируй код страницы сюда
разберёмся запросто Ха-ха
7. White - 17 Августа, 2011 - 14:07:23 - перейти к сообщению
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 - ваша $переменная
8. goga5 - 17 Августа, 2011 - 14:43:29 - перейти к сообщению
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 - ваша $переменная


Спасибо, тут на много легче, справлюсь.
Спасибо еще раз за помощь !
9. goga5 - 21 Августа, 2011 - 19:38:03 - перейти к сообщению
Всё отлично работает, спасибо огромное White, теперь у меня другой вопрос, нужно прикрутить к это следующее:

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

CODE (htmlphp):
скопировать код в буфер обмена
  1. if(!in_array(strtolower($accepted_domains) > 3)) die('Stop '.$domain.' is rejected');
10. White - 21 Августа, 2011 - 22:46:43 - перейти к сообщению
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');

можно так например
11. goga5 - 21 Августа, 2011 - 23:20:51 - перейти к сообщению
White пишет:
можно так например

спасибо, попробуем сделать....
12. goga5 - 13 Сентября, 2011 - 13:36:51 - перейти к сообщению
Всё работает но появились некоторые проблемы, например, у нас стоит ограничение
не больше трех ссылок, а вот одному или двум доменов нужно снять это ограничение, например:

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

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

помогите пожалуйста решить этот вопрос...
Спасибо!
13. White - 13 Сентября, 2011 - 14:27:55 - перейти к сообщению
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. ?>


в качестве значения в массиве указывается максимальное колличество вхождений. если значение установлено в ноль, это анлим.
14. goga5 - 13 Сентября, 2011 - 14:35:33 - перейти к сообщению
Спасибо огромное White тебе!
15. goga5 - 13 Сентября, 2011 - 17:33:47 - перейти к сообщению
Проверил, так не срабатывает не первая и не вторая ошибка Недовольство, огорчение

 

Powered by ExBB FM 1.0 RC1