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

Форум MySQL

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

 

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

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

тема: Проверка существования IP-адреса в базе данных
 
 автор: Будущий мастер   (13.02.2011 в 20:41)   письмо автору
 
 

Добрый вечер! Подскажите пожалуйста. С массивом $os = array("127.0.0.1", "", "", "");
данный код:
$ips = $_SERVER["REMOTE_ADDR"];
$os = array("127.0.0.1", "", "", "");
if (in_array($ips, $os))
{
header("Location: privet.php");
exit;
}
работает нормально. Я решил заменить этот вариант, на данные из базы данных.
Покажите пожалуйста правильный вариант решения.
Огромное спасибо!

  Ответить  
 
 автор: Косорылый   (13.02.2011 в 21:39)   письмо автору
 
   для: Будущий мастер   (13.02.2011 в 20:41)
 

Любая задача --это чёрный ящик---
Где есть входящие данные и то ,что надо получить на выходе .
Извольте показать это ,и получите ответ на вопрос

  Ответить  
 
 автор: Будущий мастер   (13.02.2011 в 23:04)   письмо автору
 
   для: Косорылый   (13.02.2011 в 21:39)
 

Спасибо за замечание.
В БД myDB, одно поле (tinytext) ipadres, в котором ip-адреса (127.0.0.1 и т.д.).
Хотелось бы при определении ip-адреса:
$ips = $_SERVER["REMOTE_ADDR"];
сравнить его с данными БД, и получить результат:
if (in_array($ips, $os))
{
header("Location: privet.php");
exit;
}
ну, или что-то: есть совпадения, нет совпадений.
То-есть у меня проблема получить аналог:
$os = array("127.0.0.1", "", "", "");
Извините, если что-то не так

  Ответить  
 
 автор: Красная_шляпа   (13.02.2011 в 23:53)   письмо автору
 
   для: Будущий мастер   (13.02.2011 в 23:04)
 

ip не как текст хранить в базе надо, а как int(11) // 4 байта


<?php

function detect_ip() {
    
$ip false;
    if (isset(
$_SERVER["HTTP_X_FORWARDED_FOR"]) and preg_match("#^[0-9.]+$#"$_SERVER["HTTP_X_FORWARDED_FOR"])) {
        
$ip $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    else if (isset(
$_SERVER["HTTP_X_REAL_IP"]) and preg_match("#^[0-9.]+$#"$_SERVER["HTTP_X_REAL_IP"])) {
        
$ip $_SERVER["HTTP_X_REAL_IP"];
    }
    else if (
preg_match("#^[0-9.]+$#"$_SERVER["REMOTE_ADDR"])) {
        
$ip $_SERVER["REMOTE_ADDR"];
    }
    return 
$ip;
}

// получили ip
$ip detect_ip();
if (
$ip === false) {
    
// попытка определить ip юзверя потерпела fail
}
else {
    
$ip ip2long($ip); // переводим ip-адрес в число
    // работаем с ним
   
$query mysql_query("select count(*) from mytable where ip = $ip limit 1;");
   
$count = (int) mysql_result($query00);
   if (
$count 0) echo "такой ip в базе есть";
}

  Ответить  
 
 автор: Будущий мастер   (14.02.2011 в 07:43)   письмо автору
 
   для: Красная_шляпа   (13.02.2011 в 23:53)
 

Красная_шляпа, Косорылый

Ребята! Огромное Вам спасибо! Все работает.
Я два дня сам пытался осилить, но по факту, был очень далек от правильного решения.

  Ответить  
 
 автор: Косорылый   (14.02.2011 в 00:21)   письмо автору
 
   для: Будущий мастер   (13.02.2011 в 23:04)
 

INT UNSIGNED
SELECT  INET_ATON('127.0.0.1') - преобразует 4 байтную последовательность ip-адреса в число
SELECT  INET_NTOA(2130706433) - восстанавливает IP адрес из числового представления IP =>127.0.0.1

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

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