разрешить только определенным ips доступ к моему "семейному сайту"? - PullRequest
2 голосов
/ 22 июля 2011

в течение нескольких дней я изо всех сил пытался сделать так, чтобы только определенные ips обращались к сайту моей семьи, так как я только хочу, чтобы моя семья имела доступ к сайту.Мне нужна помощь ваших парней.Это то, как далеко я прошел, и если ip отсутствует в базе данных, он будет перенаправлен на www.google.com.

Код:

$ip =$_SERVER['REMOTE_ADDR']; 
$result = mysql_query('SELECT * FROM `ips` WHERE `ip`="' . $ip . '"'); 

if(mysql_affected_rows($link) < 0){ 
header('location:http://google.com'); 
}  

РЕДАКТИРОВАТЬ: Есть представление о том, что яМожно использовать, что не изменит MAC-адрес компьютера, поэтому код будет нуждаться в изменении таблицы и имен внутри.Как мне это сделать, поэтому, когда пользователь пытается получить доступ к моему сайту, он проверяет, находится ли MAC-адрес компьютера в базе данных, иначе перенаправьте на google.com.

С уважением, Фредрик

Ответы [ 5 ]

3 голосов
/ 22 июля 2011

Я не совсем уверен, в чем вопрос, но если вы хотите защитить сайт паролем и не хотите, чтобы ваши пользователи генерировали еще один пароль, вы можете попробовать LightOpenID библиотека.Таким образом, ваша семья может войти с идентификатором OpenID по своему выбору.Вам просто нужно вести список их идентификаторов.Это примерно система аутентификации, используемая в StackOverflow.

Что касается учетных записей OpenID, у вас уже есть такая, если вы используете Google, Yahoo или многие другие сайты.

1 голос
/ 22 июля 2011

Вы также можете попробовать сделать это с помощью htaccess. Проверьте глупые трюки с htaccess .

Лучшим способом может быть использование пароля htaccess вот бесплатный инструмент , который также довольно прост в настройке.

Кроме того, вместо проверки затронутых строк вы должны проверить количество строк, возвращаемых в вашем коде. Ознакомьтесь с руководством по PHP

1 голос
/ 22 июля 2011

mysql_affered_rows для вставки, обновления или удаления Используйте это:

if(mysql_num_rows($result) == 0){ 
   header('location:http://google.com'); 
}  

А почему вы используете переменную $ link вместо $ result?

1 голос
/ 22 июля 2011

IP-адреса меняются очень часто, поэтому у них может быть доступ в один день, и на следующий он будет другим, и они потеряют привилегию.

Вам будет лучше, если вы создадите систему входа в систему.Таким образом, из любого места они могут получить доступ к информации, которой вы хотите поделиться.

0 голосов
/ 22 июля 2011

Если вы используете Apache в качестве веб-сервера, вы можете изменить содержимое узла каталога в файле конфигурации httpd.conf на Разрешить из YOUR_IP и Запретить для всех.Обычно это более подходящее место для создания таких ограничений.

Обратите внимание, что доступ к Apache по умолчанию дляРазрешено от всех.Это означает, что Apache будет обслуживать любой файл, сопоставленный с URL.Измените это с помощью блока, такого как

<Directory />
   Order Deny,Allow
   Deny from All
   Allow from IP
</Directory>

, а затем переопределите это для каталогов, которые вы хотите сделать доступными.

Для части перенаправления вы можете добавить это в ваш httpd.conf, чтобы перенаправить в Google на403 Запрещенные ошибки.Не забудьте перезапустить веб-сервер после внесения изменений.

ErrorDocument 403 <a href="http://www.google.com" rel="nofollow">http://www.google.com</a>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...