Jump to content
  • 0

Код по отслеживанию IP


werwen
 Share

Question

Решил написать код, который проверяет посетителя по IP и URL. Мне нужно, чтобы, когда посетитель заходит, скрипт проверяет IP и URL. Если эти данные есть в списке , то не показывать баннер, а если нет в списке то показывать. Хотя бы 2 раза. Может кто подскажет, что не так? Вот код:

<?php

error_reporting(0); // не отображать ошибки

$ip = $_SERVER['REMOTE_ADDR'];

//$agent = $_SERVER['HTTP_USER_AGENT'];

$referrer = $_SERVER['HTTP_REFERER']; //адрес страницы, с которой посетитель пришёл на данную страницу

//Создаем файл

$fp_ip = fopen('ip.txt', "a+");

$fp_url = fopen('url.txt', "a+");

$data = file('ip.txt');

$data_2 = file('url.txt');

if (array_search($ip, $data) || array_search($referrer, $data_2))

if (array_search($ip, $data) || array_search($referrer, $data_2))

if (array_search($ip, $data) || array_search($referrer, $data_2))

echo 'hello';

}

else{

echo 'Первый раз';

}

fwrite($data, $ip);

fwrite($data_2, $referrer);

fclose($fp_ip);

fclose($fp_url);

?>

Edited by werwen
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

file() считывает файл построчно, а ты при записи не создаёшь новых строк

Лучше бы ты fopen делал непосредственно перез fwrite, а то сперва открыл, потом file() сделал, не по-людски как-то. И не забывай про flock()

Link to comment
Share on other sites

  • 0

Спасибо за ответ) Ну, так как, я знаю php на 2, то, твои советы, мне очень размыто понятны. Код собирал по готовым рецептам в интернете.

file() считывает файл построчно, а ты при записи не создаёшь новых строк

А отребут +a, разве не записывает в конец файла?

Лучше бы ты fopen делал непосредственно через fwrite, а то сперва открыл, потом file() сделал, не по-людски как-то.

Как fopen() сделать через fwtite(). Не понятен сленг)

И не забывай про flock()

Это вообще не понял))

Link to comment
Share on other sites

  • 0

в чем смысл делать что-то основываясь на IP посетителя? Под одним IP в сеть могут выходить десятки тысяч человек.Это вам пища для размышления )

ну как бэ так да не совсем, не смотря на слухи что скоро не будет хватать ip адресов в протоколе IPv4 - это все не правда и на IPV6 мы еще долго будем переходить... А технология дробления адресов и скажем динамический NAT позволяют на один физический ip - посадить очень большое кол-во человек и у всех при этом будут разные ip в сети.

Link to comment
Share on other sites

  • 0
А отребут +a, разве не записывает в конец файла?
Записывает, но насколько я понимаю, \n он в конец строки не пишет. А если чтения из файла не идёт, зачем делать a+? Можно просто 'a', а можно вообще file_put_contents с FILE_APPEND
Как fopen() сделать через fwtite(). Не понятен сленг)
Там не было слэнга вообще, это ты после нового года неправильно прочитал. Перед file() не нужно делать fopen(), его нужно делать только перед fwrite()
Это вообще не понял))
http://php.net/flock

Что у тебя произойдёт если одновременно два человека откроют этот файл и попытаются туда что-то записать?

ну как бэ так да не совсем, не смотря на слухи что скоро не будет хватать ip адресов в протоколе IPv4 - это все не правда
Тащем-то, все ipv4 розданы разным компаниям, свободных не осталось. Задумаешь заняться предоставлением доступа в интернет, негде будет брать адреса.
Link to comment
Share on other sites

  • 0

в чем смысл делать что-то основываясь на IP посетителя? Под одним IP в сеть могут выходить десятки тысяч человек.Это вам пища для размышления )

ну как бэ так да не совсем, не смотря на слухи что скоро не будет хватать ip адресов в протоколе IPv4 - это все не правда и на IPV6 мы еще долго будем переходить... А технология дробления адресов и скажем динамический NAT позволяют на один физический ip - посадить очень большое кол-во человек и у всех при этом будут разные ip в сети.

То что адресов много никто не спорит. Тут дело все таки немного в другом. К примеру сотовые операторы имеют несколько пулов адресов через которые в сеть выходят абоненты. У любого интернет провайдера конечно может быть куча уникальных адресов внутри локальной сети, но в всеть они все могут выходить под одним ip или несколькими взависимости от размера сети. Для примера у нас в компании порядка 250 компьютеров работников и все они в интернет выходят под одним и тем же ip )) Вот в чем дело. То есть из нашей сети рекламу увидет только один человек. Все таки привязываться нужно не только к адресу, я бы сказал проще даже использовать куки+долгосрочные сессии к примеру, или формировать какой-то уникальный id основываясь на информации о клиенте.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy