Вход в систему автоматический с помощью session_start ();и обнаружить сеть - PullRequest
0 голосов
/ 26 января 2011

Эй, сейчас я думаю о 3 днях решения для моего логина для автоматического входа людей из определенной сети.Я просто не могу понять это :)

Это часть сценария индекса, который я использую, чтобы люди могли войти вручную

<?php

session_start();

if (session_is_registered("example")) {

require('./log_header.php');

}
else {
 header( 'Location:  pre.php' ) ;

}
?>

Но я хочу, чтобы пользователи, которые подключались через определенныйсеть [10.92.80.1] не должна входить в систему:)

plz help :)

спасибо!


РЕШЕНИЕ

Первыевсем спасибо за быстрые ответы!:)

сейчас работает.вот код, который я использовал, в конце концов:)

if (session_is_registered ("example")) {

require ('./ header.php');require ('scripts / members.php');

}

elseif (strripos (gethostbyaddr ($ _ SERVER ['REMOTE_ADDR']), ".kulnet.kuleuven.be")) {

require ('./ header.php');require ('scripts / members.php');

} else {

header ('Location: login.php');

}?>

Еще раз спасибо!:)

Ответы [ 4 ]

0 голосов
/ 26 января 2011

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

Шаг 1:
Поместите только этот скрипт где-то в своем сайте, чтобы только вы знали URL, чтобы:

<?php echo gethostbyaddr($_SERVER['REMOTE_ADDR']); ?>

Шаг 2:
Откройте эту страницу в браузере, когда вы просматриваете из частной сети.Это даст вам внешнее имя хоста сети.Запишите только последнюю полностью определенную часть имени хоста (IE, из "436-2-x235.myuniversity.com", вы хотите просто ".myuniversity.com". Или, возможно, в нем есть "mydorm.myuniversity.com",так что вы можете отфильтровать до вашего общежития).С этим именем хоста вы можете удалить указанный выше файл.Причина получения сетевого имени хоста заключается в том, что внешний IP-адрес сети может неожиданно измениться либо из-за переназначения интернет-провайдера, либо из-за того, что университет переключает пользователей через другую точку выхода.

Шаг 3:
Измените ваш код в проверке входа на что-то вроде этого ...

if (strripos(gethostbyaddr($_SERVER['REMOTE_ADDR']), ".myuniversity.com")) {
    // client is in private network
    }
else {
    // client is _not_ in private network
    }

Некоторые предостережения: удаленный адрес клиента ненадежен из-за прокси или подделки.Но если кто-то проксирует через сеть, он также может быть там студентом.

0 голосов
/ 26 января 2011

Вы можете получить IP-адрес клиента, посмотрев на элемент REMOTE_ADDR глобального $ _SERVER.

$_SERVER['REMOTE_ADDR'];
0 голосов
/ 26 января 2011
1. Retrieve IP adress:

$ip=@$REMOTE_ADDR;<br>
echo "<b>IP Address= $ip</b>";

Кстати, это может быть подделка (подделка) и должна быть фильтруется .Если он содержит достоверные критические данные, вам не следует использовать такую ​​информацию.

2. Next check if in range:
<?php

class ValidRange {
    // 10.92.80.1
    static function valid($ip) {
        $pieces = explode(".", $ip);

        if ($pieces[0] <> 10) {
            return FALSE;
        } else if ($pieces[1] <> 92) {
            return FALSE;
        } else if ($pieces[2] <> 80) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

}

class ValidRangeTest extends PHPUnit_Framework_TestCase {
    public function testIP() {
        $this->assertFalse(ValidRange::valid("11.91.80.1"));
        $this->assertFalse(ValidRange::valid("10.92.81.1"));
        $this->assertTrue(ValidRange::valid("10.92.80.1"));
    }
}
0 голосов
/ 26 января 2011

Если вы хотите установить его на более длительное время.Почему бы не создать печенье?Единственное, что вы можете проверить, это хеш-код или что-то еще.

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