|
|
|
| Добрый вечер! Подскажите пожалуйста. С массивом $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 в 20:41)
| | Любая задача --это чёрный ящик---
Где есть входящие данные и то ,что надо получить на выходе .
Извольте показать это ,и получите ответ на вопрос | |
|
|
|
|
|
|
|
для: Косорылый
(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: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($query, 0, 0);
if ($count > 0) echo "такой ip в базе есть";
}
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(13.02.2011 в 23:53)
| | Красная_шляпа, Косорылый
Ребята! Огромное Вам спасибо! Все работает.
Я два дня сам пытался осилить, но по факту, был очень далек от правильного решения. | |
|
|
|
|
|
|
|
для: Будущий мастер
(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
|
| |
|
|
|