Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание даты начала и окончания авторизации в Mysql
 
 автор: abvs   (08.10.2008 в 14:17)   письмо автору
 
 

Как создать в MySQL дату начала и дату окончания действия аккаунта защищенной веб-страницы? Был бы очень благодарен за код, я не очень силен в PHP.

  Ответить  
 
 автор: ols   (08.10.2008 в 15:18)   письмо автору
 
   для: abvs   (08.10.2008 в 14:17)
 

Если я правильно понял - то при авторизациипользователя записывай в базу дату, когда пользователь ввел идентификационные данные, когда пользователь обратился к странице выхода, заносите в базу время выхода.
Для удобства создайте таблицу id_user | time_enter | time_exit

  Ответить  
 
 автор: abvs   (08.10.2008 в 17:07)   письмо автору
 
   для: ols   (08.10.2008 в 15:18)
 

Уважаемый ols, я хочу выдавать пользователю защищенной веб-страницы login и password, например, на срок 1мес. Привожу скрипт:
<?PHP
require_once("db_tests.php");
// Соединяемся с базой и создаём таблицу
echo ("<center>Соединение с базой данных установлено.</center><br>");
if(mysql_select_db ($db_database))
{
echo "<center>База данных выбрана.</center><br>";
$result = mysql_query("
CREATE TABLE regy(
id int(11) NOT NULL auto_increment,
email varchar(255) NOT NULL,
login varchar(25) NOT NULL,
pass varchar(50) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
") or exit ("<center>Ошибка при создании базы данных.</center><br>");
$result = mysql_query("
INSERT INTO regy VALUES (1, 'admin@yourdomen.ru', 'admin',MD5('12345'));
") or exit ("<center>Ошибка при добавлении данных.</center><br>");
echo "<center>База данных успешно создана.<br> Не забудьте удалить файл установки install.php!</center>";
}
Как мне нужно подправить этот скрипт, чтобы пользователь admin имел право входить на защищенную веб-страницу, например, с 15.10.2008 до 15.11.2008?
Только на вас и надежда!

  Ответить  
 
 автор: Trianon   (08.10.2008 в 18:25)   письмо автору
 
   для: abvs   (08.10.2008 в 17:07)
 

После строки pass varchar(50) NOT NULL,
нужно добавить поля даты создания и даты устаревания
created  TIMESTAMP NULL, 
expired  TIMESTAMP NULL, 

и добавить их заполнение в запросе, создающем новую строку в таблице
INSERT INTO regy VALUES (1, 'admin@yourdomen.ru', 'admin',MD5('12345'), NOW(), (NOW()+INTERVAL 1 MONTH) ); 


Нужен еще скрипт , который проверяет логин и пароль, перед тем как дать доступ к защищенной странице. Там нужно будет добавить в запросе в условие проверки
AND NOW() BETWEEN `created` AND `expired`

  Ответить  
 
 автор: abvs   (08.10.2008 в 21:42)   письмо автору
 
   для: Trianon   (08.10.2008 в 18:25)
 

Уважаемый Trianon, спасибо за ответ. Я привожу скрипт, который проверяет логин и пароль, подскажите, пожалуйста, после какой строкинужно вставить AND NOW() BETWEEN `created` AND `expired`, я еще недостаточно хорошо знаю PHP.

<?php
session_start();
$url = getenv("HTTP_REFERER");
$err = "<center><font color=#ff0000><p>Ошибка авторизации!<br>
Неверный логин или пароль</font></center></p>";
function showForm() {
echo "<p align='center'></p>
<center>
<form action='{$_SERVER['PHP_SELF']}' method='post'>
<table border='0'>
<tr>
<td>Логин</td>
<td><input type='text' size='20' name='login' /></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type='password' size='20' name='pass' /></td>
</tr>
</table>
<input type='submit' name='submit' value='Авторизоваться'>
</form>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</center>";
}
// Функция сравнения пароля и логина
function compare_log($log,$pass,$aut_log,$aut_pass)
{
$val = false;
if(($log === $aut_log) &&
(md5($pass) === $aut_pass))
$val = true;
return $val;
}

// Если нажата кнопка, проверяется формат вводимых данных,
// что бы никто не ввёл опасную информацию,
// например с помощью дескриптора <script>
if(isset($_POST['submit'])) {
if((!eregi("^[_\.0-9a-z-]{2,15}$", $_POST['login'])) or
(!eregi("^[_\.0-9a-z-]{6,15}$", $_POST['pass']))) {
echo $err;
showForm();
exit; }

else{
include "db_tests.php"; // Вставляем файл конфигурации для соединения с базой данных
// Извлекаем логин и пароль из базы данных
$query = "(SELECT * FROM regy )";
$result = mysql_query($query);
while($aut = mysql_fetch_array($result))
if(compare_log($_POST['login'],$_POST['pass'],$aut['login'],$aut['pass'])) {
$_SESSION["auth_username"] = $aut['pass'];
header("Location: $url");
exit; }

if(!compare_log($_POST['login'],$_POST['pass'],$aut['login'],$aut['pass'])) {
echo $err;
showForm();
exit; }
}
}

// Если переменная сеанса не установлена, отображается форма авторизации
if (!isset($_SESSION["auth_username"])) {
showForm();
exit;
}
?>

  Ответить  
 
 автор: Trianon   (08.10.2008 в 21:59)   письмо автору
 
   для: abvs   (08.10.2008 в 21:42)
 

// Извлекаем логин и пароль из базы данных
$query = "(SELECT * FROM regy WHERE NOW() BETWEEN `created` AND `expired`)";

  Ответить  
 
 автор: abvs   (08.10.2008 в 22:35)   письмо автору
 
   для: Trianon   (08.10.2008 в 21:59)
 

Спасибо огромное, Trianon! А скажите еще, пожалуйста, я могу создать произвольную дату начала и окончания авторизации, так как скрипт создает начало авторизации сегодняшней датой, а могу ли определить доступ к защищеной веб-страницы для пользователя, например, через 10 дней или любое другое количество дней?

  Ответить  
 
 автор: Trianon   (08.10.2008 в 22:45)   письмо автору
 
   для: abvs   (08.10.2008 в 22:35)
 

можете.
INSERT INTO regy VALUES (1, 'admin@yourdomen.ru', 'admin',MD5('12345'), '2008-10-08 09:00:00', '2008-10-18 21:45:30' ); 

  Ответить  
 
 автор: abvs   (08.10.2008 в 23:21)   письмо автору
 
   для: Trianon   (08.10.2008 в 22:45)
 

Еще раз огромное спасибо! Я излагал свой вопрос на многих форумах, но вы - единственный, кто компетентно мне ответил, чем очень помогли.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования