Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сравнение из списка
 
 автор: Елена Смирнова   (01.02.2009 в 01:52)   письмо автору
 
 

Скажите, как реализовать подобное
Есть список имен длинной ~100 строк

вася
петя
юля

Как мне сделать условие подобное этому:

<?
if(ereg(вася,$spisok))
{
echo 
'в списке присутствует';
}
else
{
echo 
'в списке нету';
}
?>

  Ответить  
 
 автор: Trianon   (01.02.2009 в 01:57)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 01:52)
 

вася - это шаблон регулярного выражения? Вы ничего не напутали?

Такого типа, как список, в php нет.
Следовательно, Вы имеете в виду либо переменную, содержащую текст с этими именами, либо массив, элементы которого содержат эти имена.
Что именно?

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:03)   письмо автору
 
   для: Trianon   (01.02.2009 в 01:57)
 

Простите, да немного напутала... ночь уже ((
Попробую на IP объяснить.
Нужно создать список (или массив) с IP адресами
а делее сравнивать...

Вот что я натворила, но оно не работает =(

<?
$ban_ip 
= array("
89.188.122.18
"
"
89.188.122.19
"
);
if(
ereg('$ban_ip',$_SERVER['REMOTE_ADDR']))
{
echo 
'Вы в бане';
}
else
{
echo 
'Вы не в бане';
}
?>

Дело в том, что список будет длинным, не буду же я каждый раз сравнивать через () and ()

  Ответить  
 
 автор: BinLaden   (01.02.2009 в 02:06)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:03)
 

<?php
$ban_ip 
= array("89.188.122.18""89.188.122.19");

if( 
in_array($_SERVER['REMOTE_ADDR'], $ban_ip) )
{
    echo 
'Banned';
}
?>

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:09)   письмо автору
 
   для: BinLaden   (01.02.2009 в 02:06)
 

BinLaden, так не работает =(

  Ответить  
 
 автор: BinLaden   (01.02.2009 в 02:10)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:09)
 

Вероятно там есть переводы строк/пробелы. Массив как формируется?

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:10)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:09)
 

А нет... работает, только зависимо к переносам в array
Пойдет, большое спасибо!

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:09)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:03)
 


<?
$ban_ip 
= array(
  
"89.188.122.18"
  
"89.188.122.19",
  
"89.188.122.20");
if(
array_search($_SERVER['REMOTE_ADDR'], $ban_ip) !== false
{
  echo 
'Вы в бане';
}
else
{
  echo 
'Вы не в бане';
}
?> 


$ban_ip можно также сформировать из текста.

$ip_list = "
89.188.122.18
89.188.122.19
89.188.122.20
";
$ban_ip = array_map('trim', explode("\n", $ip_list));

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:12)   письмо автору
 
   для: Trianon   (01.02.2009 в 02:09)
 

Trianon, спасибо! Ваш вариант больше подходит... А что из этих вариантов будет меньше сервер нагружать?

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:16)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:12)
 

А может можно вносить сразу по маске?
типа так:
89.188.122.0 - 89.188.122.255
122.188.122.0 - 122.188.122.255

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:17)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:16)
 

а может сразу всех забанить? Чего мелочиться-то?

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:18)   письмо автору
 
   для: Trianon   (01.02.2009 в 02:17)
 

Не =)) всех нинадо...

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:16)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:12)
 

Способ с минимальной нагрузкой будет таким:
<?
$ban_ip 
= array(
  
"89.188.122.18" =>1
  
"89.188.122.19" =>1,
  
"89.188.122.20" =>1);
if(isset(
$ban_ip[$_SERVER['REMOTE_ADDR']])) 
{
  echo 
'Вы в бане';
}
else
{
  echo 
'Вы не в бане';
}
?> 

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:21)   письмо автору
 
   для: Trianon   (01.02.2009 в 02:16)
 

Так можно по маске или так нельзя?

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:22)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:21)
 

так а откуда Вы маску-то возьмете?
Маска - это свойство сетевого интерфейса клиентской машины.
Серверу она неизвестна.

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:24)   письмо автору
 
   для: Trianon   (01.02.2009 в 02:22)
 

Ну чтобы сразу всего провайдера забанить
webnames.ru например показывает по IP адресу диапазон

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:25)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:24)
 

провайдер-то чем провинился?

  Ответить  
 
 автор: Trianon   (01.02.2009 в 02:27)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:24)
 

На обращение к webnames , боюсь, уйдет столько времени, что скрипту будет некогда работать.

  Ответить  
 
 автор: Елена Смирнова   (01.02.2009 в 02:29)   письмо автору
 
   для: Trianon   (01.02.2009 в 02:27)
 

Я сама буду ручками заносить диапазон

  Ответить  
 
 автор: BinLaden   (01.02.2009 в 22:53)   письмо автору
 
   для: Елена Смирнова   (01.02.2009 в 02:29)
 

IP-адреса где -- в таблице БД или в простом файле? Если в простом файле, то Вы будете вручную его править или Вам важнее быстродействие (тогда придётся редактировать его через скрипт)?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования