@maiskiykot
Free coder

В чем причина глюков PHP?

На локали стоит Vertrigoserv последней версии. Все вроде бы работает, но столкнулся со странностями.

1. Определяю IP. Вывожу для проверки - все работает. Далее идет пару циклов, переменная IP не перезаписывается, не изменяется, ошибок PHP нет. НО!!! Открываю следующий цикл а переменная IP пропала! Причем не помогает даже новое определение IP. Наглухо пропадает!
Что это может быть?
2. Есть обычная ссылка в html вида page.php?page=5. Т.е. при ее отправке в браузер должна появиться переменная $_GET['page']. Однако попытка перехватить ее до загрузки кода страницы ни к чему не приводит! Только методом тыка удалось определить, что она срабатывает только при размещении кода в нижней части страницы.
Что это может быть?
3. Не срабатывает код принудительному определению переменной $_GET['address']. Объявляю ее в начале кода а в конце должно перехватить и проинклюдить полученный адрес. Тишина!
Что это может быть?

Ошибки в коде исключаю, потому что проверил все раз на 100. Может настройки PHP какие-то чудят? От чего может появиться такой полтергейст?

p.s. недостающий код.
if (isset($_GET))
{
foreach ($_GET as $key=>$value)
{
$anchor = $key;
break;
}

$IP = $_SERVER["REMOTE_ADDR"];

if (!file_exists("./stats-ip.dat"))
{
$fp = fopen("./stats-ip.dat","a+");
$puts = $IP."::".$anchor."\n";
}
else
{
$file = file("./stats-ip.dat");
$file1 = "./stats-ip.dat";
$file2 = "./admin/stats-bak.dat";
if (@filesize($file1 >= $file2))
copy ($file1,$file2);

if (!in_array($IP,$file))
{
$file[] = $IP."::".$anchor."\n";
$puts = implode("",$file);
}
else
{
$puts = '';

foreach ($file as $value)
{
echo $IP;

if(preg_match("!".$IP."!",$value)) // Вот здесь уже IP пропал!!!
{
echo "Match!";
$puts .= trim($value)." ".$anchor."\n";
}
else
$puts .= $value;
}
}
$fp = fopen("./stats-ip.dat","r+");
}
fputs($fp,$puts);
fclose($fp);
}
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
@imhuman
Значение не пропадает, просто та часть кода, в которой выводитсяecho не отрабатывает по условию
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Смотрите что у вас лежит в массиве, который вы получаете из файла, и что вы ищите.

В файл вы кладете строку в формате
127.0.0.1::xx
И ищите вхождение только ip.

Собственно, у вас по той ветке, где ip "пропадает", код никогда и не ходит

Ну и разделите хотя бы на функции ваш код, не говоря уже про ООП.
Ответ написан
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
Ошибки в коде исключаю, потому что проверил все раз на 100

А вот я бы не исключал именно ошибок в коде, поэтому кидай его тут и будем смотреть. Без кода твой вопрос бессмысленный
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы