Записываю ip посетителей в Xml вот таким скриптом:
<?php
$ip=$_SERVER['REMOTE_ADDR'];
$file=fopen('ip.xml', 'r+');
fseek($file, +1, SEEK_END);
fputs($file, '');
fputs($file, '<message>');
fputs($file, '');
fputs($file, ' ');
fputs($file, '<ip><user>');
fputs($file, $ip);
fputs($file, '</ip></user>');
fputs($file, '');
fputs($file, '</message>');
fclose($file);
?>
как вытащить из XML ip и что делать с ним дальше ума не приложу!!! нагуглить ни чего не смог(((( ПОМОГИТЕ!
Спустя 2 минуты, 39 секунд (25.08.2010 - 09:58) linker написал(а):
DOM XML или SimpleXML.
Спустя 6 минут, 55 секунд (25.08.2010 - 10:05) Melnikov написал(а):
без разницы главное чтоб работало!
Спустя 1 минута, 34 секунды (25.08.2010 - 10:06) linker написал(а):
Вот я и говорю, используй или или. Для того и существуют эти штуки, чтоб с XML работать.
Спустя 5 минут, 47 секунд (25.08.2010 - 10:12) Melnikov написал(а):
Вчера весь рабочий день потратил на то что бы найти как вытащить ip из XML файла и присвоить его переменной затем сравнить его с ip посетителя и если совпадает перевести на другую страницу!!! Ни чего не нагуглил! Я полный новичок в этом деле!! Очень радовался когда ip в xml записываться стали!)))
Мне кажется код очень простым должен быть но из за незнания и лимита времени очень прошу Вас мне помочь!
Мне кажется код очень простым должен быть но из за незнания и лимита времени очень прошу Вас мне помочь!
Спустя 18 минут, 3 секунды (25.08.2010 - 10:30) linker написал(а):
Структура XML
Пример коленочный, напильником точить - это уже сам.
<?xml version="1.0"?>
<messages>
<ip>127.0.0.1</ip>
<ip>127.0.0.2</ip>
</messages>
function SetIP($Xml, $Ip)
{
$IpNode = $Xml->createElement('ip', $Ip);
$Xml->documentElement->appendChild($IpNode);
}
function GetIPs($Xml)
{
$IPArray = array();
foreach($Xml->documentElement->childNodes as $IpNode)
{
if ($IpNode->nodeType != XML_ELEMENT_NODE) continue;
$IPArray[] = $IpNode->nodeValue;
}
return $IPArray;
}
$Xml = new DomDocument();
$Xml->load('ip.xml');
// Получаем массив всех ипов
$Res = ReadIPs($Xml);
// Добавляем новый IP
SetIP($Xml, '192.168.0.2');
$Xml->save('ip.xml');
Пример коленочный, напильником точить - это уже сам.
Спустя 30 минут, 34 секунды (25.08.2010 - 11:01) Melnikov написал(а):
Спасибо огромное, но прошу подсказать как сравнить загруженные ip с ip посетителя! не догоняю!
в таком виде все работает ip записываются, но нужно сравнить с теми кот уже записаны и если есть то редирект!!!
Прошу не переоценивать мои познания в php!!!
<?php
function SetIP($Xml, $Ip)
{
$IpNode = $Xml->createElement('ip', $Ip);
$Xml->documentElement->appendChild($IpNode);
}
function GetIPs($Xml)
{
$IPArray = array();
foreach($Xml->documentElement->childNodes as $IpNode)
{
if ($IpNode->nodeType != XML_ELEMENT_NODE) continue;
$IPArray[] = $IpNode->nodeValue;
}
return $IPArray;
}
$Xml = new DomDocument();
$Xml->load('ip.xml');
$ip1=$_SERVER['REMOTE_ADDR'];
??????????
SetIP($Xml, $ip1);
$Xml->save('ip.xml');
?>
в таком виде все работает ip записываются, но нужно сравнить с теми кот уже записаны и если есть то редирект!!!
Прошу не переоценивать мои познания в php!!!
Спустя 9 минут, 52 секунды (25.08.2010 - 11:11) linker написал(а):
$ip1=$_SERVER['REMOTE_ADDR'];Можно написать отдельную функцию, которая будет искать нужный IP (например с помощью XPath).
$Xml = new DomDocument();
$Xml->load('ip.xml');
$IPs = GetIPs($Xml);
if (($Found = array_search($ip1, $IPs)) !== false)
echo 'Нашли';
else
echo 'Не нашли';
P.S.
function CheckIP($Xml, $IP)
{
$XPath = new DOMXpath($Xml);
$IpNodes = $XPath->query('//messages/ip[. = "' . $IP . '"]');
return ($IpNodes->length > 0) ? $IpNode->item(0)->nodeValue : '';
}
$IPResult = CheckIP($Xml, $ip1);
if (!empty($IPResult))
echo 'Нашли';
else
echo 'Не нашли';
Спустя 2 часа, 47 минут, 35 секунд (25.08.2010 - 13:58) Melnikov написал(а):
Спасибо большое дружище!)))) ОЧЕНЬ при очень помог!