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 » » Вопросы новичков » Поиск в базе по IP

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

1. Lolya - 21 Мая, 2018 - 20:37:35 - перейти к сообщению
Видел такую возможность на нескольких сайтах, если нет IP в базе сайта, то просто перенаправляет сразу на другой какой-то адресс.

Пытаюсь реализовать под себя и ошибка выходит все время. кто может подсказать в чем проблема? Заранее спасибо. Улыбка

В базе есть таблица users, там есть ячейка ip. Вот запрос что я пытаюсь сделать:
PHP:
скопировать код в буфер обмена
  1. $ip = getip();
  2. $row = get_row_count("users","WHERE ip=".sqlesc($ip));
  3. if (!$row) {
  4. print("<html><head><meta http-equiv=refresh content='20;url=http://bublya'></head></html>");
  5. }


Где ошибка?
2. Vladimir Kheifets - 21 Мая, 2018 - 21:06:29 - перейти к сообщению
Lolya пишет:
Видел такую возможность на нескольких сайтах, если нет IP в базе сайта, то просто перенаправляет сразу на другой какой-то адресс.

Пытаюсь реализовать под себя и ошибка выходит все время. кто может подсказать в чем проблема? Заранее спасибо. Улыбка

В базе есть таблица users, там есть ячейка ip. Вот запрос что я пытаюсь сделать:
PHP:
скопировать код в буфер обмена
  1. $ip = getip();
  2. $row = get_row_count("users","WHERE ip=".sqlesc($ip));
  3. if (!$row) {
  4. print("<html><head><meta http-equiv=refresh content='20;url=http://bublya'></head></html>");
  5. }

Где ошибка?

Добрый вечер!
Конечно важно проверить, в каком формате у Вас хранится ip
Возможно, что не хватает ковычек в фильтре и должно быть:

Удачи!
3. Lolya - 21 Мая, 2018 - 21:12:48 - перейти к сообщению
Vladimir Kheifets пишет:

Добрый вечер!
Конечно важно проверить, в каком формате у Вас хранится ip
Возможно, что не хватает ковычек в фильтре и должно быть:



Хранится так записи в ячейке ip с varchar(15):
PHP:
скопировать код в буфер обмена
  1. 127.0.0.1
4. Vladimir Kheifets - 22 Мая, 2018 - 08:28:52 - перейти к сообщению
Lolya пишет:
Vladimir Kheifets пишет:

Добрый вечер!
Конечно важно проверить, в каком формате у Вас хранится ip
Возможно, что не хватает ковычек в фильтре и должно быть:


Хранится так записи в ячейке ip с varchar(15):

Добрый день!
Попробуйте добавить ковычки.
Совеую Вам обратить внимание на то, что есть не только ареса IpV4(например, 127.0.0.1),
но и IpV6 (см. https://stackoverflow[dot]com/questi[dot][dot][dot]dresses-in-mysql )
Кроме того, важно учитывать, что есть динамические адреса и один и тот же клиент может заходить под разными адресами.
Поэтому надёжнее использовать куки.
Удачи!
5. Lolya - 22 Мая, 2018 - 12:38:51 - перейти к сообщению
Vladimir Kheifets

Спасибо за ответы, разобрался. Все работает нормально.

код вот этот нужен был:

PHP:
скопировать код в буфер обмена
  1. $ip = getip();
  2. $ips = str_replace(".", ".", $ip);
  3. $r = @mysql_query("SELECT * FROM users WHERE ip='".unesc($ips)."'") or sqlerr(__FILE__, __LINE__);
  4. $user = mysql_fetch_array($r);
  5. if (!$user){
  6. print("<html><head><meta http-equiv=refresh content='0;url=http://bublya'></head></html>");
  7. }else{
  8. print("<html><head><meta http-equiv=refresh content='0;url=$DEFAULTBASEURL'></head>
  9. }
  10.  
6. Vladimir Kheifets - 22 Мая, 2018 - 13:18:32 - перейти к сообщению
Lolya пишет:
Vladimir Kheifets

Спасибо за ответы, разобрался. Все работает нормально.

код вот этот нужен был:

PHP:
скопировать код в буфер обмена
  1. $ip = getip();
  2. $ips = str_replace(".", ".", $ip);
  3. $r = @mysql_query("SELECT * FROM users WHERE ip='".unesc($ips)."'") or sqlerr(__FILE__, __LINE__);
  4. $user = mysql_fetch_array($r);
  5. if (!$user){
  6. print("<html><head><meta http-equiv=refresh content='0;url=http://bublya'></head></html>");
  7. }else{
  8. print("<html><head><meta http-equiv=refresh content='0;url=$DEFAULTBASEURL'></head>
  9. }
  10.  


Извините, не понял для чего это:
$ips = str_replace(".", ".", $ip);
будет тот же результат если написать
$ips = $ip;
Советую Вам заменить неактуальные mysql_query, mysql_fetch_array,
которые исключены начиная с версии PHP7.0.0, на mysqli_query, mysqli_fetch_array
7. Lolya - 23 Мая, 2018 - 11:19:25 - перейти к сообщению
Vladimir Kheifets пишет:
Извините, не понял для чего это:
$ips = str_replace(".", ".", $ip);
будет тот же результат если написать
$ips = $ip;
Советую Вам заменить неактуальные mysql_query, mysql_fetch_array,
которые исключены начиная с версии PHP7.0.0, на mysqli_query, mysqli_fetch_array


Для точного поиска с точками, хотя если убрать то вроде работает. Не понял
К сожалению mysqli у меня не прописана в скрипте, НЕ работает она, только mysql или sql.
8. Vladimir Kheifets - 23 Мая, 2018 - 11:42:38 - перейти к сообщению
Lolya пишет:
Vladimir Kheifets пишет:
Извините, не понял для чего это:
$ips = str_replace(".", ".", $ip);
будет тот же результат если написать
$ips = $ip;
Советую Вам заменить неактуальные mysql_query, mysql_fetch_array,
которые исключены начиная с версии PHP7.0.0, на mysqli_query, mysqli_fetch_array

Для точного поиска с точками, хотя если убрать то вроде работает. Не понял
К сожалению mysqli у меня не прописана в скрипте, НЕ работает она, только mysql или sql.

Добрый день!
И должен работать без str_replace т.к. на "точный поиска с точками" это никак не влияет.
mysqli не прописана в скрипте - непонятно.
Попробуйте вставить в скрипт
и посмотрите какая у Вас версия PHP и указан ли там MysqlI Support
Удачи!
9. Lolya - 24 Мая, 2018 - 09:27:33 - перейти к сообщению
Я имею в виду что в самом скрипте сайт не прописана эта функция. Сайт у меня сейчас стоит временно на Опен Сервер, пока его гоняю и дорабатываю.

Вот что там прописано только:
PHP:
скопировать код в буфер обмена
  1. function sql_query($query) {
  2.         global $queries, $query_stat, $querytime;
  3.         $queries++;
  4.         $query_start_time = timer(); // Start time
  5.         $result = mysql_query($query);
  6.         $query_end_time = timer(); // End time
  7.         $query_time = ($query_end_time - $query_start_time);
  8.         $querytime = $querytime + $query_time;
  9.         $query_stat[] = array("seconds" => $query_time, "query" => $query);
  10.         return $result;
  11. }


Как мне поменять или добавить в скрипт для работы mysqli_query, mysqli_fetch_array ?
10. Vladimir Kheifets - 24 Мая, 2018 - 12:25:28 - перейти к сообщению
Lolya пишет:
Как мне поменять или добавить в скрипт для работы mysqli_query, mysqli_fetch_array ?

Добрый день!
1. До первого запроса в каждом скрипте попробуйте добоваить include_once("db.php");
Спойлер (Отобразить)

2. mysqli_query, mysqli_fetch_array
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1