Sophia
Новичок
Блокирование логина при попытке его использования с 2-х разных IP - Сильно обновлено!
я делаю для себя один маленький проект, на который доступ будет только моим самым близким друзьям (пользователей будет не более 10)
доступ на каталог уже разграничен с помощью скрипта
мне очень Важно, чтобы логинами/паролями не могли воспользоваться другие люди...
для этого я сейчас установила скрипт который хранит логины в базе данных, ведет лог заходов, а также переадресовывает на разные страницы в зависимости от логина... вот структура базы:
таблица log_login:
username varchar(20)
password varchar(50)
date varchar(20)
time varchar(20)
ip_addr varchar(20)
таблица authorize:
username varchar(20)
redirect varchar(100) - адрес страницы, на которую будет переадресован пользователь в зависимости от его логина
last_login date
получается такой лог:
Username: test
Date: 2007-08-01
Time: 02:22
IP Addres: 99.99.99.999
если под тем же логином зайдет человек с другого IP это будет отражено отдельной записью в логе (с указанием времени)
помогите мне, пожалуйста, сделать так, чтобы если в течении 12 часов логин используется со второго IP то меняется страница (поле redirect таблицы authorize), на которую будет переадресован пользователь (там я напишу, что логин временно заблокирован)
подскажите, пожалуйста, какие и куда строки нужно дописать в скрипт редиректа (см. ниже)
а вот собственно скрипт редиректа, который обрабатывает форму:
=============================
=============================
София
я делаю для себя один маленький проект, на который доступ будет только моим самым близким друзьям (пользователей будет не более 10)
доступ на каталог уже разграничен с помощью скрипта
мне очень Важно, чтобы логинами/паролями не могли воспользоваться другие люди...
для этого я сейчас установила скрипт который хранит логины в базе данных, ведет лог заходов, а также переадресовывает на разные страницы в зависимости от логина... вот структура базы:
таблица log_login:
username varchar(20)
password varchar(50)
date varchar(20)
time varchar(20)
ip_addr varchar(20)
таблица authorize:
username varchar(20)
redirect varchar(100) - адрес страницы, на которую будет переадресован пользователь в зависимости от его логина
last_login date
получается такой лог:
Username: test
Date: 2007-08-01
Time: 02:22
IP Addres: 99.99.99.999
если под тем же логином зайдет человек с другого IP это будет отражено отдельной записью в логе (с указанием времени)
помогите мне, пожалуйста, сделать так, чтобы если в течении 12 часов логин используется со второго IP то меняется страница (поле redirect таблицы authorize), на которую будет переадресован пользователь (там я напишу, что логин временно заблокирован)
подскажите, пожалуйста, какие и куда строки нужно дописать в скрипт редиректа (см. ниже)
а вот собственно скрипт редиректа, который обрабатывает форму:
=============================
PHP:
<?
//prevents caching
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0",false);
session_cache_limiter();
session_start();
//clear session variables
session_unset();
//require the functions file
require ("config.php");
require ("functions.php");
//check to see if cookies are already set, remember me
if ((!$lr_user) || (!$lr_pass))
{
$username = $_POST[username];
$password = $_POST[password];
}else{
$username = $lr_user;
$password = $lr_pass;
}
//if username or password is blank, send to errorlogin.html
if ((!$username) || (!$password))
{
header("Location:$base_dir/errorlogin.html");
exit;
}
//sets cookies to remember this computer if the user asks to
if ($_POST[remember] == "Yes")
{
setcookie("lr_user", $username, $duration, "/", $domain);
setcookie("lr_pass", $password, $duration, "/", $domain);
}
if ($_POST[activate] == "Yes")
{
//make the connection to the database
$connection = @mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
$db = @mysql_select_db($db_name,$connection)or die(mysql_error());
//build and issue the query
$sql ="UPDATE $table_name SET verified = '1' WHERE username = '$_POST[username]'";
$result = @mysql_query($sql,$connection) or die(mysql_error());
}
//sets session variables
sess_vars($base_dir, $server, $dbusername, $dbpassword, $db_name, $table_name, $username, $password);
//check to see if the user has to change their password
if ($_SESSION[pchange] == "1")
{
$_SESSION[redirect] = "$base_dir/pass_change.html";
}
//check to see if the user has activated the account
if ($_SESSION[verified] == "0")
{
$_SESSION[redirect] = "$base_dir/not_activated.html";
}
//make the connection to the database
$connection = @mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
$db = @mysql_select_db($db_name,$connection)or die(mysql_error());
//build and issue the query
$sql ="SELECT * FROM banned";
$result = @mysql_query($sql,$connection) or die(mysql_error());
while ($sql = mysql_fetch_object($result))
{
$banned = $sql -> no_access;
if ($username == $banned || $REMOTE_ADDR == $banned)
{
include ('banned.html');
exit;
}
}
$last_log = last_login();
//updates table with last log as now
$sql = "UPDATE $table_name SET last_login = '$last_log' WHERE username = '$_SESSION[user_name]'";
$result = @mysql_query($sql,$connection) or die(mysql_error());
if (($_SESSION[redirect] != "$base_dir/errorlogin.html") && ($log_login == "1"))
{
include('loglogin.php');
}
//redirects the user
header("Location:$_SESSION[redirect]");
?>
София

