Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 18

Запись данных в БД (Журнал посещения админ панели)

14.01.2014, 07:58. Показов 2221. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Решил для админ панели сделать *Журнал посещения админ панели* , т.е когда человек проходит авторизацию site.ru/admin/login его отправляет на site.ru/admin ,в этот момент нужно чтобы в таблицу login_attempts добавлялась строка в столбцы ip_address и date .
Собрал небольшой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
// connect to the "tests" database
$conn = new mysqli('localhost', 'test2', '12345', 'test');
 
// check connection
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}
$sql = "insert INTO `login_attempts`(`ip_address`, `date`)
 VALUES ('тут IP','тут дата')";
// Performs the $sql query on the server to insert the values
if ($conn->query($sql) === TRUE) {
  echo 'users entry saved successfully';
}
else {
 echo 'Error: '. $conn->error;
}
 
$conn->close();
 
?>
Добавил этот код в файл admin/index.php и получается,что если я пройду на admin/config к примеру и обратно-делается запись снова .Даже если обновляю страницу делается запись...Поможете?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2014, 07:58
Ответы с готовыми решениями:

Структуры. Журнал посещения
Необходимо создать список студентов и отмечать их посещение + и -. у меня получилось только: struct zhurnal { char stud; char...

Нужна программа "Журнал посещения учеников/студентов/работников"
Любая прога про посещения

Восстановление админ панели
Здравствуйте! Возникла такая проблема отдали сайт на доработку, а старый мастер или скрыл админку, или просто когда прописуешь...

7
32 / 53 / 9
Регистрация: 05.12.2013
Сообщений: 261
14.01.2014, 08:20
Как вариант, можно в куках или сессии хранить информацию о том, была ли уже сделана запись в журнал.
0
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 18
14.01.2014, 08:28  [ТС]
Цитата Сообщение от Maxim******* Посмотреть сообщение
Как вариант, можно в куках или сессии хранить информацию о том, была ли уже сделана запись в журнал.
Можно Ваш вариант более подробно?
0
32 / 53 / 9
Регистрация: 05.12.2013
Сообщений: 261
14.01.2014, 08:49
Давно не писал в php. Но план такой:
1. Почитай как сохранить переменную в куках или сессии
2. При авторизации проверяй переменную, если переменная говорит о том, что запись в журнал ещё не производилась - записывай в журнал и меняй переменную.
3. В следующий раз скрипт проверит переменную и не будет писать в базу.
0
27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231
14.01.2014, 08:54
Цитата Сообщение от igor166505 Посмотреть сообщение
Здравствуйте.Решил для админ панели сделать *Журнал посещения админ панели* , т.е когда человек проходит авторизацию site.ru/admin/login его отправляет на site.ru/admin ,в этот момент нужно чтобы в таблицу login_attempts добавлялась строка в столбцы ip_address и date .
При регистрации в базу в таблицу заносим данные регистрационные пользователя, и в конце создаём колонку с 0 если пользователь вышел и 1 если пользователь зашёл.
Далее
Создаём отдельную таблицу которая имеет id пользователя и количество посещений.
Далее
Как только пользователь зарегистрировался и затем заходит под своими данными, вешается кука хэш, например на пол часа (Почитайте как работает сами), в колонке с регистрационными данными ставиться 1, а также по id уже в отдельной строке +1 к количеству посещений.
Далее
Теперь когда пользователь обновляет страницу, просто следует обновлять куку (текущее время + 30 мин)
Далее
Если же пользователь вышел, то в базе 0 и куку удаляем или же если через пол часа не обновлялась страница то кука не действительна.
0
60 / 57 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
14.01.2014, 09:05
код разместить в том месте, где происходит авторизация.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
//$_SESSION['isAdmin'] - если пользователь авторизован равна TRUE, иначе FALSE
if($_SESSION['isAdmin']!==true)
{
  $user = $POST['user']; //$_POST['user'] == array('name'=>'Иван Иванов', 'password'=>'foobar');
  $resData = $conn->query("SELECT * FROM `users` WHERE `login`='$user[name]' AND `password`='$user[password]' LIMIT 1 ORDER DESC");
  // в этом примере метод query возвращает массив если запрос выполнен успено и NULL если данные не найдены
  if($resData!==NULL)
  {
    //Авторизуем
    $_SESSION['isAdmin'] = TRUE;
    $conn->query(/*INSERT в таблицу логов*/);
  }
}
Добавлено через 7 минут
Цитата Сообщение от anonymous_23 Посмотреть сообщение
При регистрации в базу в таблицу заносим данные регистрационные пользователя, и в конце создаём колонку с 0 если пользователь вышел и 1 если пользователь зашёл.

Если же пользователь вышел, то в базе 0 и куку удаляем или же если через пол часа не обновлялась страница то кука не действительна.
Это если пользователь сам инициировал logout - то данные будут честные (меняться 1 | 0 ). На практике же скорее умрет кука(сессия), сменится клиент и практически 99.7% времени жизни БД, у всех пользователей авторизовавшихся хоть раз, в этом поле будет 1.
0
27 / 27 / 10
Регистрация: 26.01.2013
Сообщений: 231
14.01.2014, 09:08
Цитата Сообщение от chesar Посмотреть сообщение
Это если пользователь сам инициировал logout - то данные будут честные (меняться 1 | 0 ). На практике же скорее умрет кука(сессия), сменится клиент и практически 99.7% времени жизни БД, у всех пользователей авторизовавшихся хоть раз, в этом поле будет 1.
Ну так сборщик мусора, как например у самого PHP никто не отменял ведь. Как по Вашему работают сессии в PHP? На сервере создаётся временный файл, и по истечению времени PHP проводит очистку.

Согласен волокита, однако я просто подкинул идею, а её можно так раскрутить. Можно и без базы вообще в куках всё хранить, как я встречал опросники. Ответил на вопрос нравится ли сайт (Ставишь да), затем чистишь куки и снова ты отвечаешь.
0
23 / 23 / 6
Регистрация: 11.12.2011
Сообщений: 300
14.01.2014, 09:16
Зачем для такого вообще юзать куки?

Самый простой это заносить данные о том, что админ вошел после успешной авторизации, вот примерный код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if ( isset($_POST['login']) )
{
    $login = $_POST['login']; //тут не забыть про обработку пользовательского ввода
    $pass = $_POST['pass']; //тут не забыть про обработку пользовательского ввода
 
//..............
//Валидация полученых данных, если есть ошибка, то дальше не идем
//..............
 
    $sql = "SELECT `id` FROM `users` WHERE `login` = {$login} AND `pass` = {$pass} LIMIT 1;";
    $res = mysql_query($sql) or die('erorr.....');
    $row = mysql_fetch_assoc($res);
 
    if ( $row['id'] ) //значит такой логин + пароль найдены
    {
        $_SESSION['login'] = $_POST['login']; //для перемещений по админке замутим сессию
 
        //ну и тут идет добавление новой записи в таблицу посещений и обязательно редирект после этого
        $sql = "INSERT INTO `user_enters` ( `login`, `ip`, `date`, `time` ) VALUES ({$login}, {$ip}, {$date},   {$time})";
        mysql_query($sql) or die("Проблема с запросом");
 
        //если дошли сюда значит все должно быть ок
        header('location:index.php');
    }
}
HTML5
1
2
3
4
5
6
7
8
<form method = "POST">
Логин
<input type = "text" name = "login"><br>
Пароль
<input type = "password" name = "pass"><br>
 
<button type = "submit">Авторизация</button>
</form>
Код писал прямо тут и не проверял, но главное - это идея, чтобы не юзать куки!!! Если надо защититься, от слишком многих записей входов - можно перед вставкой данных о входе проверять последние записи по текущему пользователю (логину, айпи) и если он входил например 5 минут назад, то следующий вход не защитывать, а если больше 10 минут назад, то внести запись в таблицу. Как-то так!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2014, 09:16
Помогаю со студенческими работами здесь

phpBB Вопросы по админ панели
Всем доброго время суток. Вопросы не сложные, я надеюсь вас не затруднит написать мне пару строк. phpBB3. Не могу найти где...

Защита админ панели:)
Здравствуйте!)) У меня как бы не стандартная просьба) Я разрабатывать сайты на php не умею, только учусь. Так вот, написал я...

Авторизация в админ панели
Всем привет! Поступил заказ, для которого нужно оформить примитивную кастомную CMS. Собственно, страх в плане безопасности для входа в...

Функциональность админ-панели
нужно через админ панель добавить новые товары Вот файл с добавлением новой статьи &lt;?php include('fns.php'); if...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru