Смысл не меняется.
Выше написали уже. На событие OnUnload вешаешь посылку ajax запроса серверу.
Сервер получает запрос и в таблице меняет значение соответствующей записи с 1 на 0
Лучше создать таблицу в Базе, в которой будут храниться пользователи онлайн.
При логине пользователь будет заносится в эту таблицу при логауте - удалятся.
В таблице кроме пользователя хранить время его последнего обращения. И переодически удалять из таблицы все записи у которых время последнего обращения например меньше чем (текущее время - 10 минут)
Я так понял что вопрос адресован только пользователям "вконтакта"?
Без примера, трудновато понять суть вопроса. Интуитивно кажется, что надо копать в сторону указателя this в JavaScript.
Клиентский JavaScript по таймеру (раз в n секунд) отправляет запрос серверу, о том что клиент в онлайне. Сервер получает эту информацию и неким образом у себя фиксирует.
Вариантов реализации много. При закрытии окна(вкладки) браузера. Сервер перестает получать сигналы от пользователя и делает соответствующие выводы о статусе пользователя.
Если вас так заботит процесс безопасной передачи логинов и паролей, то это надо копать в сторону https, сертификатов, выделенного IP и.т.д.
Сессия хранит данные по каждому пользователю пока он находится на сайте + некоторое время после (можно задать настройками).
В коде страниц, где вы хотите работать с сессиями их надо стартовать функцией session_start();
Далее если хотите что то запомнить в сессию, пишите
$_SESSION['myVariable'] = $myValue;
Далее на этой же странице или на любой другой(в этом случае необходимо вначале выполнить session_start(); ) вы можете обратиться к значению этой переменной
$myValue = $_SESSION['myVariable'];
Сессия уничтожится через какое-то время, задаваемое в настройках php.ini.
Используется в основном для хранения данных при переходе между различными страницами(скриптами). Для каждого посетителя сайта - сессия своя. Реализуется как правило через использование файлов на сервере и использование кукисов на клиенте.
Через CSS это сделать очень просто.
Нету желания и времени разбирать конкретно ваш случай, но аналогичная конструкция работает стабильно:
/* Тут прописаны стили для всех элементов списка */
.horizList li {display:inline; padding:0 3px 0 3px; font-size:12px; font-weight:bold}
/* Тут прописаны стили для всех элементов кроме первого */
.horizList li+li { border-left:solid; border-left-color:black; border-left-width:1px;}
для кода вида
<ul class="horizList">
<li>....</li>
<li>....</li>
....
</ul>
Спасибо. preg_replace_callback в тему, правда все оказалось еще проще
Если кому может понадобиться:
$reg = '/(<term\s+[^>]*>)([A-Za-z]{1})(.*)(<\/term>)/e';
$str = preg_replace($reg,"'\\1'.strtoupper('\\2').'\\3\\4'",$str);