Повторюсь потому что может ты не понял меня. Запись в базе времени и SID
Время - нужно для проверки кто сейчас на сайте
SID - это идентификатор текущей сессии и пользователя
Это да но как я уже писал запись вы базе данных нужна для получения информации кто находится сейчас на сайте,
поля
start_time время открытия сессии
last_time последнее время активности
Если время между start_time и last_time больше 20 минут ( или сколько я установлю ) то человек считается уже не онлайн, и сессия из базы удаляется.
По другому это не как не реализуешь.
время хранения сессии по дефолту 20 мин
не надо ничего чистить
а при авторизации просто переписывать сид в таблице
и время писать не придется и более 1 юзера не зайдет под одной учеткой
и сложных запросов писать не надо
(Добавление)
мид писать в таблицу юхнов
и таблицу сессий выбросить
Тут у меня не совсем так сделано я продумал так чтобы время сессии была настраиваемая, можно сделать и 20 минут и 40 и т.д для удобности. Так что время писать нужно и чистка в БД сессий нужна. Для Оптимизации базы данных.
Поводу обновления сессии за это спасибо, будет правильно сделать так, хотя и придётся дописать проверку на доступность сессии и если она есть в БД то обновить а если нет то записать новую.
Но опять же хочется узнать как сделать и выборку из БД без повторов на будущее чтобы потом не создавать новую тему.
встречный вопрос
почему повторная авторизация инсертит вместо апдейта?
Вопрос правильный, У меня есть функция удаления старых сессии из БД у которых время простоя больше 20 минут. Правильно будет и на страницу авторизации дописать скрипт удаления предыдущей сессии. Это я пожалуй и сделаю но всё же хотел бы узнать и по выборке.
$t ="SELECT count(*) AS `count` FROM `". DB_PREFIX ."users` JOIN `". DB_PREFIX ."sessions` ON ". DB_PREFIX ."users.id=". DB_PREFIX ."sessions.id_user";
$lines_count = mysql_query ( sprintf ( $t ));
$lines_count = mysql_result ( $lines_count, 0 );
Запись в таблицу SESSIONS происходит при авторизации пользователя и если пользователь авторизуется повторно то с его id будет уже 2 записи
А запрос будет выводить уже 2 записи с его id
Подскажите что нужно дописать в запросе чтобы выводило только одну запись с одним id без повтора, ту запись у которого start_time больше.
$result = mysql_query ("SELECT ". DB_PREFIX ."user.id, count(". DB_PREFIX ."messages.message) AS `count` FROM `". DB_PREFIX ."user` LEFT JOIN `". DB_PREFIX ."messages` ON ". DB_PREFIX ."user.id=". DB_PREFIX ."messages.id_user WHERE ". DB_PREFIX ."user.status!='0' AND ". DB_PREFIX ."user.status!='4' GROUP BY ". DB_PREFIX ."user.id ORDER BY `count` DESC");
Здравствуйте есть 2 таблицы user и messages
Поля:
user - id, name, phone, status
messages - id, id_user, message, status
В таблице USER есть 3 пользователя id 1, id 2, id 3
В таблице MESSAGES 5 сообщении 2 сообщения от id_user 3
и 3 сообщения от id_user 1
По идее должно вывести так 1, 3, 2
Нужно отсортировать таблицу user ко католичеству сообщений каждого пользователя то есть по id, связи между таблицами id и id_user
и чтобы пользователя status!=0 и !=4
Я попытался составить запрос но получилось не корректно выводит только 1 id пользователя а не 3 как должно быть.
Помогите составить запрос.
МОЙ запрос:
Здравствуйте есть таблица MESSAGES
В ней поля id, sender, addressee message, date
В поля sender и addressee записываются ID пользователей.
sender ид отправителя
addressee ид получателя
То есть 1 пользователь переписывается с другим пользователем
id | sender | addressee | message | date
1 2 1 привет 10.05.12
2 1 2 и тебе привет 11.05.12
3 2 1 как дела 11.05.12
4 1 2 нормально 11.05.12
5 3 1 как дела 11.05.12
6 4 1 нормально 11.05.12
При переходе в личные сообщения пользователь должен увидеть список всех своих сообщений, уникальных по пользователю. Выбрав которое он может просмотреть всю переписку с выбранным пользователем.
Запрос ниже делает это но присутствуют повторения записей
При правильной работе он должен вывести 3 строки а он выводит 4
$t ="SELECT * FROM `". DB_PREFIX ."messages` WHERE `sender`='%d' GROUP BY `addressee` UNION SELECT * FROM `". DB_PREFIX ."messages` WHERE `addressee`='%d' GROUP BY `sender`";
Здравствуйте есть таблица с MESSAGES
В ней поля id, sender, addressee message, date
В поля sender и addressee записываются ID пользователя.
Нужно составить запрос так чтобы при выборке через for выводились поля
Отправитель, сообщение, дата сообщения. И выводилось так чтобы было группами,
То есть если есть переписка между ID 1 и 2 то должно вывести только одна строка.
Если переписка есть ещё между ID 1 и 3 то выводилось вторая строка. и тд.
Но выводит не правильно выводит так, если есть 2 сообщения одно от ID 1 другое ID 2 то выводит 2 строки если 3 сообщения то выводит 3 строки.
Подскажите как правильно составить запрос?
'uploader':'../scripts/uploadify.swf',// Относительный путь к файлу uploadify.swf. По умолчанию uploadify.swf
'script':'../goods_loader.php',// Относительный путь uploadify.php. По умолчанию uploadify.php. Это скрипт - загрузчик. Обязательно посмотрите его
'cancelImg':'../scripts/cancel.png',// Относительный путь до картинки cancel.png. По умолчанию cancel.png
'folder':'../files/',// Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
//Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
//Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права.
'scriptData':{'id_g': id_g,'id_s': id_s},// Передаём в загрузчик ID g и ID s
'queueID':'fileQueue',// ID элемента, в котором будет показываться очередь загрузки
'queueSizeLimit':'3',// Лимит очереди (максим. число загруж файлов). По умолчанию 999
'auto':false,// Если истина, загрузка начнется сразу после выбора файлов
'multi':true,// Если истина, то разрешена загрузка нескольких файлов
'fileDesc':'только фотографии jpg',// Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
'sizeLimit':1111111111,// Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
'simUploadLimit':1,// Ограничение на кол-во одновременных закачек. По умолчанию 1. Если значение равно 1, то загружаться будет 1 файл, а остальные будут стоять за ним в очереди. Если 2 - два загружаются, остальные ждут их и т.д
'buttonText':'File',// Текст на кнопке. По умолчанию BROWSE. К сожалению русскийтекст не поддрживается
'buttonImg':'../image_s/choose_files.png',// Путь до картинки, которая будет служить кнопкой. Компенсирует недостаток предыдущей. Если эта настройка указана, предыдущая будет проигнорирована
'width':190,
'height':43,
// 'onInit' : alert('Скрипт готов!'),// Функция, которая срабатывает, когда скрипт будет загружен. По умолчанию обработчик событий скрывает целевой элемент на странице и заменяет его с флэш-файл, затем создает очереди контейнера после него.
/*
'onSelect' : function(event, queueID, fileObj){ // Функция, которая сработает, при выборе каждого файла. Пример:
'onComplete':function(event, queueID, fileObj, response, data){// Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
var string ='Загружен файл: '+ fileObj.name+'<br />';
string +='Путь до файла: '+ fileObj.filePath+'<br />';
string +='Размер, байт: '+ fileObj.size+'<br />';
string +='Тип: '+ fileObj.type+'<br />';
string +='Пришел ответ от сервера: '+ response +'<br />';
string +='Файлов в очереди: '+ data.fileCount+'<br />';
Есть файл livein.php внутри файла нужный скрипт, и функция echo, например в php сайте можно было бы использовать include, чтобы на странице потом показывало элементы что внутри livein.php, а как поступить с сайта где нету php ? я использовал для Googlerobots функцию $.getScript( ) а как вывести то что внутри livein.php я не знаю, как это сделать ?
Думаю все таки поддерживает вот что нужно разместить в файле livein.php