|
|
|
| Как создать в MySQL дату начала и дату окончания действия аккаунта защищенной веб-страницы? Был бы очень благодарен за код, я не очень силен в PHP. | |
|
|
|
|
|
|
|
для: abvs
(08.10.2008 в 14:17)
| | Если я правильно понял - то при авторизациипользователя записывай в базу дату, когда пользователь ввел идентификационные данные, когда пользователь обратился к странице выхода, заносите в базу время выхода.
Для удобства создайте таблицу id_user | time_enter | time_exit | |
|
|
|
|
|
|
|
для: 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?
Только на вас и надежда! | |
|
|
|
|
|
|
|
для: 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`
|
| |
|
|
|
|
|
|
|
для: 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;
}
?> | |
|
|
|
|
|
|
|
для: abvs
(08.10.2008 в 21:42)
| |
// Извлекаем логин и пароль из базы данных
$query = "(SELECT * FROM regy WHERE NOW() BETWEEN `created` AND `expired`)";
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.10.2008 в 21:59)
| | Спасибо огромное, Trianon! А скажите еще, пожалуйста, я могу создать произвольную дату начала и окончания авторизации, так как скрипт создает начало авторизации сегодняшней датой, а могу ли определить доступ к защищеной веб-страницы для пользователя, например, через 10 дней или любое другое количество дней? | |
|
|
|
|
|
|
|
для: 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' );
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.10.2008 в 22:45)
| | Еще раз огромное спасибо! Я излагал свой вопрос на многих форумах, но вы - единственный, кто компетентно мне ответил, чем очень помогли. | |
|
|
|