[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проверить ip
mihai
проверяем пришедшего пользователя по ip
но
проблем в том что при заходе на скрипт происходит запись ip в файл
и условие if else
проверяет тот ip который пришёл
с уже с тем который записали
и естественно выдаёт true
но
если не записывать пришедший ip
то функция in_array
выдаёт ошибку что ей нечего не счем сравнивать
а как
сделать так чтобы сначало проверить пришедший ip
есть ли он в массиве
а только потом записывать его или не записывать
PHP
<?
$ip=$_SERVER["REMOTE_ADDR"];
echo "ваш ip $ip<br>";

$myfilerecord="ipdb.txt";
$openrecord=fopen($myfilerecord,"a");
fwrite($openrecord, $ip."\n");
fclose($openrecord);


$myfileread="ipdb.txt";
$openread=fopen($myfileread, "r");
$read=fread($openread,filesize($myfileread));
fclose($openread);
echo "Это данные уже из БД $read<br>";

 
$ip2
=file($myfilerecord);

if
(
in_array($ip."\n",$ip2)==true)
{

exit ("есть такой ip");
}
else
{
echo "нет такой ip";

}




Спустя 18 часов, 5 минут, 43 секунды (6.04.2009 - 09:02) ApuktaChehov написал(а):
А в чем проблема то?

Если $_SERVER["REMOTE_ADDR"] имеется в массиве, тогда делаем одно, а если же не имеется, делаем другое.

Простое использование
If (){}else{}.

Было бы красивее реализовать это дело через цикл.

Спустя 16 минут, 21 секунда (6.04.2009 - 09:18) sergeiss написал(а):
Цитата (mihai @ 5.04.2009 - 14:56)
но
если не записывать пришедший ip
то функция in_array
выдаёт ошибку что ей нечего не счем сравнивать
а как
сделать так чтобы сначало проверить пришедший ip
есть ли он в массиве
а только потом записывать его или не записывать

Я правильно понял, что проблема в том, что на определенном этапе просто еще нету массива?
Если это так, то тогда используй is_array для проверки, что переменная является массивом. Если переменная - не массив, то уж тем более там нету искомого значения.

Вот на основании этих дополнительных проверок и строй алгоритм.

PS. А почему не используешь БД? Всяко БД будет удобнее для этих целей. Проще и быстрее.

Спустя 4 часа, 19 минут, 36 секунд (6.04.2009 - 13:38) mihai написал(а):
ApuktaChehov
работает то работает да только не так как надо

sergeiss
не совсем так точнее сказать на определённов этапе там как раз есть то чего не должно пока быть,
с БД любой дурак сделает а ты вот так попробуй

Спустя 7 часов, 4 минуты, 2 секунды (6.04.2009 - 20:42) sergeiss написал(а):
Цитата (mihai @ 6.04.2009 - 13:38)
с БД любой дурак сделает а ты вот так попробуй

Я предпочитаю быть "любым дураком", не изобретать велосипед, и тратить свои силы, время и нервы на то, что еще не было сделано другими людьми smile.gif
И при этом использовать то, что уже было сделано другими умными людьми.

Спустя 55 минут, 50 секунд (6.04.2009 - 21:38) kirik написал(а):
Цитата (mihai @ 6.04.2009 - 05:38)
с БД любой дурак сделает а ты вот так попробуй

ты не понимаешь о чем говоришь.
возьми и попробуй с БД wink.gif

По теме:
PHP
echo 'ваш ip '.$_SERVER['REMOTE_ADDR'].'<br>';
$file 'ipdb.txt';

$ips file($fileFILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES);
if(empty(
$ips) || !in_array($_SERVER['REMOTE_ADDR'], $ips))
{
    
file_put_contents($file$_SERVER['REMOTE_ADDR']."\n");
    echo 
'Такого IP еще нет (теперь есть)';
}
else
{
    echo 
'Такой IP уже есть в списке';
}
unset(
$ips);

только REMOTE_ADDR тоже нужно проверять на валидность, а то иногда прокси кривые IP отправляют.

Спустя 16 часов, 26 минут, 13 секунд (7.04.2009 - 14:04) mihai написал(а):
sergeiss
kirik
-да я просто пошутил
-спасибо за совет нужно без БД
-но задача уже решена , спасибо biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.