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

Форум PHP

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

 

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

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

тема: Время последнего посещения.
 
 автор: 10100100   (15.10.2005 в 09:00)   письмо автору
 
 

в общем нужно сделать так чтобы в списке пользователей показывалась инфа о последнем посещении пользователя (дата и время) вот, как реализовать не приложу ума... буду рад любой помощи...

   
 
 автор: $OMEGA   (15.10.2005 в 09:55)   письмо автору
 
   для: 10100100   (15.10.2005 в 09:00)
 

Создавай плюшку, при повторных посещениях - изменяй её, альтернатива через айпи, но он у многих динамический.

   
 
 автор: Football   (15.10.2005 в 13:04)   письмо автору
 
   для: $OMEGA   (15.10.2005 в 09:55)
 

Алгорит такой (это для БД)
1) При посещении страницы:
Проверяешь IP, записываешь время
если такой Ip есть, то изменяешь время, если нет, то создаёшь запись в БД
Теперь если пользователь уйдёт, то там и будет время последнего посещения!

   
 
 автор: 10100100   (15.10.2005 в 14:18)   письмо автору
 
   для: Football   (15.10.2005 в 13:04)
 

Омега прально написал, ip то у многих динамический, а следовательно если зайдёт один и тот же пользователь... блин чёт я запутался.. а можно каким нить образом через плюшки сделать? но с приминением БД?

   
 
 автор: cheops   (15.10.2005 в 14:07)   письмо автору
 
   для: 10100100   (15.10.2005 в 09:00)
 

Вам необходима система OnLine как у нас? Тогда вам помогут ссылки по теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=6725

   
 
 автор: 10100100   (15.10.2005 в 14:20)   письмо автору
 
   для: cheops   (15.10.2005 в 14:07)
 

да мне нужна подобная система но боюсь что я не понял почти ничего, точнее понять то понял но запутался, Вы можете мне привести рабочий пример и обьяснить его блоками? я только из тех статей понял что нужно ip - шник вскрывать но опять таки он же динамичен... я чёт запутался немного... :(

   
 
 автор: cheops   (15.10.2005 в 14:31)   письмо автору
 
   для: 10100100   (15.10.2005 в 14:20)
 

В первую очердь нужно решить вы будете фиксировать всех посетителей или только зарегистрированных. Если вы работаете с зарегистрированными пользователями (как допустим у нас на форуме) тогда вам IP-адреса вообще не понадобятся.

   
 
 автор: 10100100   (15.10.2005 в 18:15)   письмо автору
 
   для: cheops   (15.10.2005 в 14:31)
 

мне нужно учитывать только зарегеных посетителей...

   
 
 автор: cheops   (16.10.2005 в 14:14)   письмо автору
 
   для: 10100100   (15.10.2005 в 18:15)
 

Тогда всё проще, нужно будет только для каждого пользователя обновлять время его последнего посещения. Где хранятся пользователи в базе данных или в текстовом файле? Готова ли у вас система регистрации пользователей?

   
 
 автор: 10100100   (16.10.2005 в 16:21)   письмо автору
 
   для: cheops   (16.10.2005 в 14:14)
 

система регистрации и авторизации готовы, данные хранатся в БД...

   
 
 автор: cheops   (16.10.2005 в 16:32)   письмо автору
 
   для: 10100100   (16.10.2005 в 16:21)
 

Ага, приведите пожалуйста структуру таблицы, где хранится информация о пользователе?

   
 
 автор: 10100100   (16.10.2005 в 18:12)   письмо автору
 
   для: cheops   (16.10.2005 в 16:32)
 

хорошо, от она!


CREATE TABLE 'user' (
'id_user' INT NOT NULL AUTO_INCREMENT ,
'name' TINYTEXT,
'pass' TINYTEXT,
'email' TINYTEXT,
'homepage' TINYTEXT,
'about' TINYTEXT,
'time' DATETIME DEFAULT NULL ,
'last_time' DATETIME DEFAULT NULL ,
PRIMARY KEY (id_user)
) TYPE = MYISAM;

   
 
 автор: cheops   (16.10.2005 в 18:26)   письмо автору
 
   для: 10100100   (16.10.2005 в 18:12)
 

А, ну у вас всё готово, можно обновлять поле last_time при помощи запроса
UPDATE user SET last_time = NOW() WHERE id_user = 1

1 - первичный ключ текущего пользователя, как вариант можно ориентироваться на имя, если оно униально
UPDATE user SET last_time = NOW() WHERE name = 'имя_поьзователя'

Тогда вывод списка пользователей находящихся OnLine, т.е. тех кто посещал страницу не менее 20 минут назад можно осуществить при помощи запроса
SELECT * FROM user WHERE last_time > NOW() - INTERVAL 20 MINUTE

Вместо 20 минут можно использовать более короткий интервал, скажем 10 минут, если это чат.

   
 
 автор: 10100100   (16.10.2005 в 18:30)   письмо автору
 
   для: cheops   (16.10.2005 в 18:26)
 

вот спасибо! теперь понятно как обновлять! :) Хеоп - Вы Человек с большой буквы!

   
 
 автор: 10100100   (17.10.2005 в 14:50)   письмо автору
 
   для: cheops   (16.10.2005 в 18:26)
 


UPDATE user SET last_time = NOW() WHERE name = 'имя_поьзователя'


а эту строку куда вставлять, ведь с ней явно чтото ещё сделать надо? а то он мне ошибку выдаёт...

Parse error: parse error, unexpected T_STRING in z:\home\localhost\www\auth.php on line 13

   
 
 автор: cheops   (17.10.2005 в 19:14)   письмо автору
 
   для: 10100100   (17.10.2005 в 14:50)
 

Этот запрос следует передать фукнции mysql_query()
<?php
  $query 
UPDATE user SET last_time NOW() WHERE name 'имя_поьзователя'
  
if(!mysql_error($query)) exit("Ошибка - ".mysql_error());
?>

   
 
 автор: 10100100   (18.10.2005 в 09:29)   письмо автору
 
   для: cheops   (17.10.2005 в 19:14)
 

а если в этом скрипте у меня уже переданы значения функции $query ? что тогда?

   
 
 автор: cheops   (18.10.2005 в 14:07)   письмо автору
 
   для: 10100100   (18.10.2005 в 09:29)
 

В смысле переданы?

   
 
 автор: 10100100   (18.10.2005 в 15:37)   письмо автору
 
   для: cheops   (18.10.2005 в 14:07)
 

ну всмысле у меня уже есть значение $query


$query = "SELECT * FROM user"; 
$ath = mysql_query($query);
if($ath)
{
  $user = mysql_fetch_array($ath);
  echo "<br>имя = ".$user['name']."<br>";
  echo "пароль = ".$user['pass']."<br>";
  echo "e-mail = ".$user['email']."<br>";
  echo "url = ".$user['homepage']."<br>";
  echo "about = ".$user['about']."<br>";
  echo "time = ".$user['time'];
}
else

   
 
 автор: cheops   (18.10.2005 в 20:50)   письмо автору
 
   для: 10100100   (18.10.2005 в 15:37)
 

А ничего страшного, оно вам после
<?php
$ath 
mysql_query($query);
?>

уже не нужно, его можно перезаписать и использовать по-новой. Если вам это не нравится назовите переменную с SQL-запросом по другому, например, query_update
<?php 
  $query_update 
UPDATE user SET last_time NOW() WHERE name 'имя_поьзователя' 
  
if(!mysql_error($query_update)) exit("Ошибка - ".mysql_error()); 
?>

   
 
 автор: 10100100   (21.10.2005 в 14:03)   письмо автору
 
   для: cheops   (18.10.2005 в 20:50)
 

Странно почему то выводит всё равно результаты регистрации со временем регистрации а не последнего посещения...

   
 
 автор: 10100100   (21.10.2005 в 14:51)   письмо автору
 
   для: 10100100   (21.10.2005 в 14:03)
 

ложная тревога - всё работает... спасибо

   
 
 автор: Football   (15.10.2005 в 16:30)   письмо автору
 
   для: 10100100   (15.10.2005 в 14:20)
 

Если на сайте не будет много посетителей (ну скажем, не более чем 3 в онлайне), то использовать IP вполне можно. По крайней мере на моём сайте в онлайне всегда не более 3 посетителей, и меня система Online (которая схожа с последним визитом) вполне устранивает. Но как привально сказал Cheops надо ещё уточнить, пользователи регестрируются или нет?

   
 
 автор: $OMEGA   (15.10.2005 в 16:42)   письмо автору
 
   для: Football   (15.10.2005 в 16:30)
 

IP использовать нельзя из- за динамических IP - ну неужели непонятно? у меня он меняется по пять раз на дню, соответсвенномой утренний айпищник, вполне спокойно могут присвоить другому и если он зайдет на сайт, то будет расцениваться так как будто эьо зашел я, и он получит приветствие типа: прошлое ваше посещение было - 14 дней назад, а он там впервые!!!

   
 
 автор: Football   (15.10.2005 в 17:15)   письмо автору
 
   для: $OMEGA   (15.10.2005 в 16:42)
 

А какйо шанс того, что тот, который взял твой IP зайдёт на сайт? Минимальный! Вообще кроме записи по IP другой я не знаю, если конечно пользователь не регестрируется!

   
 
 автор: Football   (15.10.2005 в 17:18)   письмо автору
 
   для: $OMEGA   (15.10.2005 в 16:42)
 

А какйо шанс того, что тот, который взял твой IP зайдёт на сайт? Минимальный! Вообще кроме записи по IP можно вопользоваться печеньями, но это всё, если конечно пользователь не регестрируется!

   
 
 автор: tim_mironov   (17.10.2005 в 21:55)   письмо автору
 
   для: Football   (15.10.2005 в 17:18)
 

Не согласен. Я с другом пользуемся диалапом и постоянно обсуждем кто где был и что видел, так что шанс велик. А ведь мой друг может и своим друзьям об этом сайте рассказать. При этом у нас в районе многие пользуются провайдером, предоставляющим им телефонную связь, т.к. не берут поминутку.

   
 
 автор: 10100100   (18.10.2005 в 09:30)   письмо автору
 
   для: tim_mironov   (17.10.2005 в 21:55)
 

вот вот - у нас такая же байда!

   
 
 автор: 10100100   (15.10.2005 в 18:16)   письмо автору
 
   для: $OMEGA   (15.10.2005 в 16:42)
 

вот - согласен!


А шанс есть всегда,например какой нить ламерок который считает себя мега-кулХацкером, может запросто установить IP и попытать навредить порталу...

   
 
 автор: Football   (16.10.2005 в 09:46)   письмо автору
 
   для: 10100100   (15.10.2005 в 18:16)
 

Так, прост ок слову. Всегда найдётся хакер, коорый если захочет, то всё может взломать. От них защиты нет!
Да, тае у тебя регистрация есть?

   
 
 автор: 10100100   (16.10.2005 в 10:18)   письмо автору
 
   для: Football   (16.10.2005 в 09:46)
 

я ж ниже написал уже! да у меня регистрация есть, нужно чтобы был список зарегиных пользователей онлайн!

   
 
 автор: Football   (16.10.2005 в 15:59)   письмо автору
 
   для: 10100100   (16.10.2005 в 10:18)
 

Ну тогда по тому алгоритму, чт оуже писали вверху. ПОльзователь заходит, таблица в БД обновляется и одновременно старые удаляются!

   
 
 автор: 10100100   (16.10.2005 в 16:20)   письмо автору
 
   для: Football   (16.10.2005 в 15:59)
 

вот как вот делаются эти действия?

   
 
 автор: Football   (17.10.2005 в 07:27)   письмо автору
 
   для: 10100100   (16.10.2005 в 16:20)
 

Сам код нужен? Если да, то тчоно написы структуру БД или файла.

   
 
 автор: 10100100   (17.10.2005 в 11:21)   письмо автору
 
   для: Football   (17.10.2005 в 07:27)
 

а я уже выше выложил структуру БД и Хеопс мне подсказал... буду пробовать...

   
Rambler's Top100
вверх

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