Скрипт аутентификации на сайте. Главной его особенностью является генерация временных ссылок скопировав которые и выложив вы позволяете человеку войти со своими правами. По истечение заложенного в ссылку времени она перестает действовать. Скрипт должен иметь возможность брать данные из бд но и без нее тоже будет работать. Логин в скрипте хранится не в открытом виде а плюсуется к паролю и хешируется увеличивая данные и уменьшая шансы подбора. При генерации временной ссылки происходит хеширование хеша. Подбор не возможен. В общем вот мое творение. Буду рад любым исправлениям и доработкам. Первое число в $_GET['sid'] это количество секунд в в течение которых ссылка будет работать. Просто изменив его вы увеличиваете или изменяете срок службы ссылки. Человек вошедший по ссылке изменить ссылку не может. PHP: <? #md5('логин:пароль'); /* CREATE TABLE `auth` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `auth` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ; INSERT INTO `auth` (`id`, `name`, `auth`) VALUES (1, 'mpak', '17f1899b1b89e4e6817bce39734dc35e'), (2, 'user', '90db0030e7a6df3b0f4cba5512f72521'), (3, 'user', 'ff1c7171251eb822de2114ed2c501e51');*/ unset($user); $use_bd = false; if ($use_bd){ $use_bd = @mysql_connect('localhost', 'test', ''); if ($use_bd) mysql_select_db('test'); } if (!$use_bd){ $users = array('90db0030e7a6df3b0f4cba5512f72521', 'ff1c7171251eb822de2114ed2c501e51'); $sresu = array_flip($users); } $t = time(); $r = 3; if (isset($_GET['sid'])){ $sid = $_GET['sid']; $r = $sid[0]; $num = substr($sid, $r + 33); // Номер пользователя в таблице доступа if ($use_bd){ $result = mysql_query("SELECT * FROM `auth` WHERE `id` = '$num'"); $user = mysql_fetch_array($result, 1); } substr($sid, 1, $r) <= substr($t, strlen($t) - $r) ? $p = substr($t, 0, strlen($t) - $r) : $p = substr($t, 0, strlen($t) - $r) - 1; if ($sid == $r.substr($sid, 1, $r).md5(substr($p, 0, strlen($t) - $r).($use_bd ? $user['auth'] : $users[$num])).($use_bd ? $user['id'] : $num)) $auth = $sid; // проверка ссылки } if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){ $md5 = md5("{$_SERVER['PHP_AUTH_USER']}:{$_SERVER['PHP_AUTH_PW']}"); if ($use_bd){ $result = mysql_query("SELECT * FROM `auth` WHERE `auth` = '$md5'"); $user = mysql_fetch_array($result, 1); } if(isset($user['auth']) || isset($sresu[$md5])) $auth = $r.substr($t, strlen($t) - $r).md5(substr($t, 0, strlen($t) - $r).($use_bd ? $user['auth'] : $md5)).($use_bd ? $user['id'] : $sresu[$md5]); } //echo $md5; if (strlen($_GET['logof']) && $_GET['logof'] == $_SERVER['PHP_AUTH_USER']){ unset($auth); unset($_SERVER['PHP_AUTH_USER']); // unset($_SERVER['PHP_AUTH_PW']); } if (!strlen($auth)){ if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){ echo "Ваш хеш ".$md5." его нет в таблице доступа.<br>"; }else{ header("WWW-Authenticate: Basic realm=\"My Realm\""); header("HTTP/1.0 401 Unauthorized"); } echo "Доступ к странице закрыт. Обратитесь к администратору."; echo "<br><a href='{$_SERVER['SCRIPT_NAME']}?logof={$_SERVER['PHP_AUTH_USER']}'>Авторизация</a>"; exit; } echo "<a href='index.php?sid=$auth'>index.php?sid=$auth</a>"; ?> Попробовать работу скрипта можно по адресу http://mpak.s86.ru/login user 123 user 12345 Ссылка на 16.6 (999 секунд) минут http://mpak.s86.ru/login/index.php?sid= ... ef29f65220 на 2.7 часа (9999 секунд) http://mpak.s86.ru/login/index.php?sid= ... 4934f8c040 на 1.1 суток (99999 секунд) http://mpak.s86.ru/login/index.php?sid= ... 0c237e0de0 на 11.5 суток (999999 секунд) http://mpak.s86.ru/login/index.php?sid= ... d189063930 на 115.7 суток http://mpak.s86.ru/login/index.php?sid= ... 3961c2c160 ну и так далее...
mpak это велосипед с квадратными колесами... (все это реализуется в тысячу раз проще, а главное в тысячу раз безопаснее)
Стояла задача на короткие промежутки времени открывать доступ к странице копированием ссылки. Так чтобы она через определенный промежуток времени гарантированно была неработаспособна. Я ничего подобного найти не смог.
Еще есть один скрипт который не могу найти долго. HTMLAREA создание html страниц по типу ворда. Есть желание сделать его модулем для портальной системы но никак не могу найти. Может кто нибудь видел что то похожее?.
Нашел штук 8 разных. Не один не смог заставить работать нормально. При наличае работающего смог бы его модулем для портального движка сделать.
Скачал версию 2_0_8 это то что мне надо. Примного благодарен. Близжайшие планы прикрутить эту штуку как модуль mdpro.
Поразбиравшись нашел уже интегрированный. Но добиться его работы не могу. Портальная система mdpro модуль называется RteMulti возможно кто то смог его заставить работать. Помогите.