<?php
require ("files/inc/config.php");
if($tex==1){
header('Location: tex');
}
?>
Если переменная tex равна 1, то будет идти переадресация на страницу /tex
кроме определенных айпи(85.26.233.220 и 77.222.113.4) мне нужно
PHP
Помогите как сделать исключения по айпи
<?php
require ("files/inc/config.php");
if ($tex == 1 && !in_array($_SERVER['REMOTE_ADDR'], ['85.26.233.220', '77.222.113.4'])) {
header('Location: tex');
}
?>
Будет работать только если в массиве $_SERVER['REMOTE_ADDR'] содержится реальный IP посетителя.
require ("files/inc/config.php");
if ($tex == 1 && !in_array($_SERVER['REMOTE_ADDR'], ['85.26.233.220', '77.222.113.4'])) {
header('Location: tex');
}
?>
Будет работать только если в массиве $_SERVER['REMOTE_ADDR'] содержится реальный IP посетителя.
Длявер Эмирвелиев
айпи же меняется постоянно на 1 цифру, как сделать чтобы настройки не сбивались
UPD в этом ответе т.к у предыдущего истёк срок редактирования: Почитал другие ваши вопросы на "ответах" и понял что вам нужно нечто иное. Давайте попробуем:
<?php
require("files/inc/config.php");
/*
Небольшая, костыльная функция для проверки IP...
$ipMask -- маска IP.. символ "?" допускает любое число, эта переменная может быть массивом и проверять сразу несколько IP
$userIp -- айпишник пользователя, который мы и будем проверять
$fixedDigitCount -- переменная определяющая нужно ли учитывать количество цифр в секциях IP.. пример:
если $fixedDigitCount == 1, тогда "172.0.0.??" не равняется "172.0.0.1", потому что ожидается 2 цифры, как указано в маске... работает только в сторону уменьшения... при отключённом $fixedDigitCount "172.0.0.?" не равняется "172.0.0.11"...
*/
function isIpListed($ipMask, $userIp, $fixedDigitCount = false)
{
$regexDigitCount = ($fixedDigitCount ? "" : "0,");
function checkIp($ipMask, $userIp, $regexDigitCount)
{
$tmpRegex = str_replace(".", "[.]", $ipMask, $tmpRegex);
$tmpRegex = str_replace("???", "\d{".$regexDigitCount."3}", $tmpRegex);
$tmpRegex = str_replace("??", "\d{".$regexDigitCount."2}", $tmpRegex);
$ipRegex = "/^".str_replace("?", "\d", $tmpRegex)."$/";
return preg_match($ipRegex, $userIp);
}
if (gettype($ipMask) == "array")
{
foreach($ipMask as $ip)
{
if (checkIp($ip, $userIp, $regexDigitCount) == true) return true;
}
return false;
}
else
{
return checkIp($ipMask, $userIp, $regexDigitCount);
}
}
/*
Вновь (это ведь уже другой код) узнаём айпишник пользователя
*/
$ip = (isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']));
/*
И проверяем что этот айпишник доступен, в нашём примере, айпишник "85.26.233.220" может менять последнюю цифру крайней секции... т.е может быть от 220 до 229... а значит ставим туда "?" чтобы допустить этот диапазон.
*/
if ($tex && !isIpListed(["85.26.233.22?", "77.222.113.4"], $ip)) header('Location: tex');
?>
<?php
require("files/inc/config.php");
/*
Небольшая, костыльная функция для проверки IP...
$ipMask -- маска IP.. символ "?" допускает любое число, эта переменная может быть массивом и проверять сразу несколько IP
$userIp -- айпишник пользователя, который мы и будем проверять
$fixedDigitCount -- переменная определяющая нужно ли учитывать количество цифр в секциях IP.. пример:
если $fixedDigitCount == 1, тогда "172.0.0.??" не равняется "172.0.0.1", потому что ожидается 2 цифры, как указано в маске... работает только в сторону уменьшения... при отключённом $fixedDigitCount "172.0.0.?" не равняется "172.0.0.11"...
*/
function isIpListed($ipMask, $userIp, $fixedDigitCount = false)
{
$regexDigitCount = ($fixedDigitCount ? "" : "0,");
function checkIp($ipMask, $userIp, $regexDigitCount)
{
$tmpRegex = str_replace(".", "[.]", $ipMask, $tmpRegex);
$tmpRegex = str_replace("???", "\d{".$regexDigitCount."3}", $tmpRegex);
$tmpRegex = str_replace("??", "\d{".$regexDigitCount."2}", $tmpRegex);
$ipRegex = "/^".str_replace("?", "\d", $tmpRegex)."$/";
return preg_match($ipRegex, $userIp);
}
if (gettype($ipMask) == "array")
{
foreach($ipMask as $ip)
{
if (checkIp($ip, $userIp, $regexDigitCount) == true) return true;
}
return false;
}
else
{
return checkIp($ipMask, $userIp, $regexDigitCount);
}
}
/*
Вновь (это ведь уже другой код) узнаём айпишник пользователя
*/
$ip = (isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']));
/*
И проверяем что этот айпишник доступен, в нашём примере, айпишник "85.26.233.220" может менять последнюю цифру крайней секции... т.е может быть от 220 до 229... а значит ставим туда "?" чтобы допустить этот диапазон.
*/
if ($tex && !isIpListed(["85.26.233.22?", "77.222.113.4"], $ip)) header('Location: tex');
?>
Похожие вопросы
- Что нужно сделать ещё?
- Почему заказчики на фриланс-биржах не говорят в описании задания что именно нужно сделать. Всё время пишут что-то...
- Как сделать такой механизм? .htaccess
- Как сделать чтобы статьи на самописном сайте отображались в инете?
- Как сделать систему приватных диалогов на php?
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- КАК СДЕЛАТЬ БОТА (НЕ СПАМ ) С ПОМОЩЬЮ PHP Devel Studio 2.0 !?
- PHP и MySQL - что лучше - сделать в таблице меньше полей, но длиннее запрос или больше полей и короче запрос?
- Как сделать вывод PING в PHP
- Нужно сделать редирект с поддомена на домен в .htaccess