Редирект на php

12
RаSH
На сайте с 13.11.2008
Offline
29
1018

Здравствуйте. Возникла проблема с редиректом по ip на php. При заходе пользователя с ip 217.66.26.85 его должно перекидывать на определенную страницу сайта и закрыть доступ на все остальные. Т.е. при заходе на любую страницу сайта с этого ip постоянно должно отправлять его на page.html. Вроде все работает с данным ip, но сегодня мне написали, что и с других, схожих ip (217.66.16.8) посылает на данную страницу. Что неправильно в моем скрипте?

<?php

$visitor = $_SERVER['REMOTE_ADDR'];
if (preg_match("/217.66.26.85/",$visitor))
{header('Location: http://site.ru/page.html');} ?>
T
На сайте с 11.08.2005
Offline
181
#1

Скрипт самого редиректа работает правильно...

А вот определение IP пользователя далекое от идеала.

Простой тест:


<?
$visitor = '217.66.26.85';
echo $visitor.': ';
if (preg_match("/217.66.26.85/",$visitor)) {echo 'redirect<br />';} else {echo 'ok<br />';}

$visitor = '217.66.16.8';
echo $visitor.': ';
if (preg_match("/217.66.26.85/",$visitor)) {echo 'redirect<br />';} else {echo 'ok<br />';}

//Лучше для столь простых проверок не использовать preg_match...
$visitor = '217.66.26.85';
echo $visitor.': ';
if ($visitor=="217.66.26.85") {echo 'redirect<br />';} else {echo 'ok<br />';}

$visitor = '217.66.16.8';
echo $visitor.': ';
if ($visitor=="217.66.26.85") {echo 'redirect<br />';} else {echo 'ok<br />';}

?>
dvaes
На сайте с 03.09.2007
Offline
65
#2

ну так точки в регулярках. еще б он работал...

RаSH
На сайте с 13.11.2008
Offline
29
#3

Не очень силен в этом, точнее совсем) Укажите на ошибку,пжл?

поищу, подумаю...

Asar
На сайте с 23.08.2004
Offline
322
#4

RаSH, Вам же говорят, точки в IP в preg_match воспринимаются не как рядовые символы, a как спец. Т.е. их надо заслэшить либо перевести в другие, а на выходе -- обратно.

M
На сайте с 17.04.2008
Offline
88
MBo
#5

в начало файла


switch($_SERVER['REMOTE_ADDR']) {
case '217.66.26.85':
case '217.66.26.86':
case '217.66.26.87':
header('Location: http://site.ru/page.html');
exit();
break;
}
maldivec
На сайте с 04.11.2008
Offline
160
#6

Нахрена там preg_match ?


<?php
if ($_SERVER['REMOTE_ADDR']=="217.66.26.85") header('Location: http://site.ru/page.html'); ?>
RO
На сайте с 13.07.2009
Offline
88
#7
maldivec:
Нахрена там preg_match ?


<?php
if ($_SERVER['REMOTE_ADDR']=="217.66.26.85") header('Location: http://site.ru/page.html'); ?>

+1 только хотел написать 🍿

skAmZ
На сайте с 04.09.2009
Offline
122
#8
dvaes:
ну так точки в регулярках. еще б он работал...
Asar:
Вам же говорят, точки в IP в preg_match воспринимаются не как рядовые символы, a как спец. Т.е. их надо заслэшить либо перевести в другие, а на выходе -- обратно.

и?


preg_match("/^217.66.26.85$/",$visitor)
RаSH
На сайте с 13.11.2008
Offline
29
#9

Сколько программистов, столько и мнений) Только какой из них наиболее правильный?:)

Остановился на коде maldivecа. Спасибо всем отписавшимся

skAmZ
На сайте с 04.09.2009
Offline
122
#10
RаSH:
Только какой из них наиболее правильный?

имхо......

if($_SERVER['REMOTE_ADDR']=="217.66.26.85") {header('Location:http://site.ru/page.html');exit;}
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий