ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #491  
Старый 16.09.2007, 18:56
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Meanor, по моим меркам - это весьма критично...
 

  #492  
Старый 16.09.2007, 22:43
Ponchik
Постоянный
Регистрация: 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 минут
 

  #493  
Старый 16.09.2007, 23:43
n1†R0x
Постоянный
Регистрация: 20.01.2007
Сообщений: 787
Провел на форуме:
2924346

Репутация: 1719


Отправить сообщение для n1†R0x с помощью ICQ
По умолчанию

По поводу юзеров онлайн - мой вариант.

Писал по памяти, мб немного криво или где-то ошибся, нет возможности потестить. Писал на сессиях.

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
    
); 
 

  #494  
Старый 17.09.2007, 00:02
Meanor
Познающий
Регистрация: 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..
 

  #495  
Старый 17.09.2007, 12:23
Ponchik
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
Провел на форуме:
6828219

Репутация: 2274


По умолчанию

Meanor, не забывай на каждой странице писать в online новый time() потомучто как я понял, он у тебя пишется только при входе, поэтому будет показывать только число юзверей залогинившехся в течении 10 минут, а не обновивших сайт в течении 10 минут. Ну ты мну я думаю понял
 

  #496  
Старый 17.09.2007, 22:56
Darkweider
Участник форума
Регистрация: 08.02.2007
Сообщений: 162
Провел на форуме:
463978

Репутация: 34
По умолчанию

PHP код:
$co file_get_contents($url); //получаем содержимое
$res1 strpos($co,"не найдено"); 
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
 

  #497  
Старый 17.09.2007, 23:29
n1†R0x
Постоянный
Регистрация: 20.01.2007
Сообщений: 787
Провел на форуме:
2924346

Репутация: 1719


Отправить сообщение для n1†R0x с помощью ICQ
По умолчанию

Цитата:
Сообщение от Darkweider  
PHP код:
$co file_get_contents($url); //получаем содержимое
$res1 strpos($co,"не найдено"); 
Вопрос: функция strpos() будет искать до первого вхождения или пробежит весь файл? Можно ли организовать более быстрый поиск?
куда уж быстрее
php.net не рулит нынче?

http://ru.php.net/manual/ru/function.strpos.php
Цитата:
strpos -- Возвращает позицию первого вхождения подстроки
 

  #498  
Старый 19.09.2007, 20:55
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

челы в общем надо чтобы скрипт пахал постоянно пока не закончт так сказать начатое
я ставлю ему
ignore_user_abort(1);
@set_time_limit(0);

но серавно на некоторых серваках он работает но потом вылетает с эрором о конфигурации сервера

как заставить работать его постоянно чтобы не случилось -- или это из-за конфига php??
 

  #499  
Старый 19.09.2007, 21:06
Y.Dmitriy
Постоянный
Регистрация: 14.03.2007
Сообщений: 367
Провел на форуме:
1392441

Репутация: 161
Отправить сообщение для Y.Dmitriy с помощью ICQ Отправить сообщение для Y.Dmitriy с помощью AIM Отправить сообщение для Y.Dmitriy с помощью MSN
По умолчанию

@set_time_limit(0); просто укажи большое время... у мну работало...
 

  #500  
Старый 19.09.2007, 21:12
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от Y.Dmitriy  
@set_time_limit(0); просто укажи большое время... у мну работало...
там же @ стоит. значит ошибка из-за ignore_user_abort(1); или нет?
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ