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

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

1. mihai - 05 Апреля, 2009 - 17:53:18 - перейти к сообщению
написал скрипт где
проверяем пришедшего пользователя по ip
но
проблем в том что при заходе на скрипт происходит запись ip в файл
и условие if else
проверяет тот ip который пришёл
с уже с тем который записали
и естественно выдаёт true
но
если не записывать пришедший ip
то функция in_array
выдаёт что ей нечего не счем сравнивать
а как
сделать так чтобы сначало проверить пришедший ip
есть ли он в массиве
а только потом записывать его или не записывать
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $ip=$_SERVER["REMOTE_ADDR"];
  4. echo "ваш ip $ip<br>";
  5.  
  6. $myfilerecord="ipdb.txt";
  7. $openrecord=fopen($myfilerecord,"a");
  8. fwrite($openrecord, $ip."\n");
  9. fclose($openrecord);
  10.  
  11.  
  12. $myfileread="ipdb.txt";
  13. $openread=fopen($myfileread, "r");
  14. $read=fread($openread,filesize($myfileread));
  15. fclose($openread);
  16. echo "Это данные уже записанные в БД $read<br>";
  17.  
  18.  
  19. $ip2=file($myfilerecord);
  20.  
  21. if
  22. (in_array($ip."\n",$ip2)==true)
  23. {
  24.  
  25. exit ("есть такой ip");
  26. }
  27. else
  28. {
  29. echo "нет такой ip";
  30.  
  31. }
  32. ?>
  33.  
2. Andrey5555 - 05 Апреля, 2009 - 18:03:54 - перейти к сообщению
Попробуйте так:

if
(in_array($ip, $ip2))
{
exit ("есть такой ip");
}

else
{
echo "нет такой ip";
}
3. mihai - 05 Апреля, 2009 - 18:31:32 - перейти к сообщению
почемуто в этом случае выдаёт что
echo "нет такой ip";

хотя долже выдавать

exit ("есть такой ip)

но проблема не в этом
а в том чтобы сначало проверял IP а потом записывал
4. chaynyk - 06 Апреля, 2009 - 10:12:01 - перейти к сообщению
Определяем ip-адрес?
http://forum.php.su/topic.php?fo...1&topic=1991
PHP:
скопировать код в буфер обмена
  1.  
  2. $ipnot=true; // переменая говорит что ip-адреса нету в базе
  3. $searchip=file_get_content("ipdb.txt");
  4. for ($i ; $i<count($searchip); $i++) {
  5. if ($searchip($i)==$newip) $ipnot=false; // $newip полученный ip-адрес
  6. }
  7. if ($ipnot==false) {
  8. echo 'Такой ip-адрес есть'; // ну и соответственно добавляем новый ip в файл ipdb.txt
  9. }
  10.  
5. mihai - 06 Апреля, 2009 - 16:20:35 - перейти к сообщению
chaynyk
спасибо

это для меня ещё не понятно
откуда взялась
$ipnot=true; // переменая говорит что ip-адреса нету в базе

и как это всё вместе собрать ???
Огорчение
6. chaynyk - 06 Апреля, 2009 - 17:10:53 - перейти к сообщению
mihai пишет:
chaynyk
спасибо

это для меня ещё не понятно
откуда взялась
$ipnot=true; // переменая говорит что ip-адреса нету в базе

и как это всё вместе собрать ???
Огорчение

Мы объявляем переменную $ipnot (логическую либо 'да', либо 'нет', чтобы меньше брала ресурсов) присваиваем значение true(истина), тем самым присваиваем тип данных: истина или ложь
если ip-адрес совпадает с ip-адресом в файле 'ipdb.txt', то присваиваем значение 'false' (ложь)
В последней конструкции if проверяем значение переменной $ipnot . если true то ip-адрес новый: записываем в файл новый ip-адрес., если 'false' то он уже есть в БД.
7. magistr_bender - 10 Апреля, 2009 - 23:16:04 - перейти к сообщению
а вообще ещё можно воспользоваться GeoAPI (о них тут http://codeismy.name/archives/501) и проверять не только по ипшнику а так же по региону Улыбка ну это если слишком замарачиваться будеш Улыбка

 

Powered by ExBB FM 1.0 RC1