ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

16.09.2007, 18:56
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Meanor, по моим меркам - это весьма критично...
|
|
|

16.09.2007, 22:43
|
|
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
Провел на форуме: 6828219
Репутация:
2274
|
|
Сообщение от Meanor
Задача:
Юзер авторизируется на сайте, в бд, в его записи online = 1. А вот если юзер закрывает окно с сайтом или нажимает на ссылку Exit , то online = 0. Если со ссылкой все более менее понятно, то как реализовать выход по закрытию браузера используя пхп ?
ИМХО писать time() вместо 0,1 потом SELECT COUNT(*) FROM `users` WHERE `online` < time()+60*5
Так ты выведеш всех юзверей которые открывали сайт в течении 5 минут
|
|
|

16.09.2007, 23:43
|
|
Постоянный
Регистрация: 20.01.2007
Сообщений: 787
Провел на форуме: 2924346
Репутация:
1719
|
|
По поводу юзеров онлайн - мой вариант.
Писал по памяти, мб немного криво или где-то ошибся, нет возможности потестить. Писал на сессиях.
Mod:
PHP код:
<?php
session_start();
$id_sess = session_id();
$interv = "5";
include "config.php"; //db conf
$res = mysql_query("SELECT * FROM `sessions` WHERE `id_sess` = '$id_sess'");
if (!$res) exit ("Bad MySQL Struct!");
if (mysql_num_rows($res) > 0)
{
$result = mysql_query("UPDATE `sessions` SET `up_date` = NOW(), user = '".$_SESSION['user']."' WHERE `id_sess` = '$id_sess'");
}
else
{
$result = mysql_query("INSERT INTO `sessions` VALUES ('$id_sess', NOW(), '".$_SESSION['user']."'");
if (!$result)
exit ("Error! Cannot add user!");
}
$result = mysql_query("DELETE FROM `sessions` WHERE `up_date` < NOW() - INTERVAL '$interv' MINUTE");
?>
SQL:
PHP код:
CREATE TABLE `sessions` (
`id_sess` tinytext NOT NULL,
`up_date` datetime NOT NULL default '0000-00-00 00:00:00',
`user` tinytext NOT NULL
);
|
|
|

17.09.2007, 00:02
|
|
Познающий
Регистрация: 09.09.2007
Сообщений: 66
Провел на форуме: 188412
Репутация:
41
|
|
Да, именно так я и сделал... Но потом увидел, что можно сэкономить кучу байтов, просто используя функцию time в бд в столбце online.
Потом запрашивать:
PHP код:
$timep = $time - 60 * 10;
db_query("SELECT * FROM `users` WHERE `online` > $timep;")
Спасибо Пончику =)
Последний раз редактировалось Meanor; 17.09.2007 в 00:05..
|
|
|

17.09.2007, 12:23
|
|
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
Провел на форуме: 6828219
Репутация:
2274
|
|
Meanor, не забывай на каждой странице писать в online новый time() потомучто как я понял, он у тебя пишется только при входе, поэтому будет показывать только число юзверей залогинившехся в течении 10 минут, а не обновивших сайт в течении 10 минут. Ну ты мну я думаю понял
|
|
|

17.09.2007, 22:56
|
|
Участник форума
Регистрация: 08.02.2007
Сообщений: 162
Провел на форуме: 463978
Репутация:
34
|
|
PHP код:
$co = file_get_contents($url); //получаем содержимое
$res1 = strpos($co,"не найдено");
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
|
|
|

17.09.2007, 23:29
|
|
Постоянный
Регистрация: 20.01.2007
Сообщений: 787
Провел на форуме: 2924346
Репутация:
1719
|
|
Сообщение от Darkweider
PHP код:
$co = file_get_contents($url); //получаем содержимое
$res1 = strpos($co,"не найдено");
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
куда уж быстрее
php.net не рулит нынче?
http://ru.php.net/manual/ru/function.strpos.php
strpos -- Возвращает позицию первого вхождения подстроки
|
|
|

19.09.2007, 20:55
|
|
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме: 1948091
Репутация:
1686
|
|
челы в общем надо чтобы скрипт пахал постоянно пока не закончт так сказать начатое
я ставлю ему
ignore_user_abort(1);
@set_time_limit(0);
но серавно на некоторых серваках он работает но потом вылетает с эрором о конфигурации сервера
как заставить работать его постоянно чтобы не случилось -- или это из-за конфига php??
|
|
|

19.09.2007, 21:06
|
|
Постоянный
Регистрация: 14.03.2007
Сообщений: 367
Провел на форуме: 1392441
Репутация:
161
|
|
@set_time_limit(0); просто укажи большое время... у мну работало...
|
|
|

19.09.2007, 21:12
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от Y.Dmitriy
@set_time_limit(0); просто укажи большое время... у мну работало...
там же @ стоит. значит ошибка из-за ignore_user_abort(1); или нет?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|