Автор Тема: Взаимодействие двух человек через php  (Прочитано 13241 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Взаимодействие двух человек через php
« Ответ #15 : 06 Ноября 2003, 20:44:50 »
Начнем с кода...
Я его не дам по трем причинам:
Во-первых он на Perl,
Во-вторых он разбит на модули,
А в третьих просто не дам...

1. Ну в частности у меня все активные сессии, в таблице mysql:
TABLE active_session
ROWS session, time
где session - соответственно сессия, которая ссылается на таблицу сессий в которой данные о пользователе (ссылка на таблицу пользователей), последнем предыдущем заходе, IP откуда заходили и т.д.
time - последнее обновление сессии

2. Сам скрипт у меня вставляется через SSI на все страницы. При загрузке страницы он проверяет куки на наличие сессии и если сессия есть смотрит в основной таблице сессий есть ли она там,
если есть записывает её в таблицу активных сессий (если этой сессии еще там нет, а так обновляем время), берем имя пользователя и выводим на экран "ПРИВЕТ ВАСЯ!!!", если нет выводим формочку авторизации.

3. При авторизации мы смотрим пользователя, записываем, новую сессию в основную таблицу и сразу делаем запись в таблице активных сессий.

4. во время записи в таблицу активных сессий, или просто обновления, мы проверяем время всех остальных активных сессий, если время вышло, то сессию удаляем...

ну в общем, можно по сессиям отследит кто на сайте плюс пинус пять минут! и можно сотовлять сообщения для определенных сессий через то же SSI, например...
[OFF]устал печатать... %-)[/OFF]

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Взаимодействие двух человек через php
« Ответ #16 : 06 Ноября 2003, 20:59:54 »
Цитировать
Phoinix:
Во-первых он на Perl

Посмотри на название форума, слово PHP ни о чем не говорит? А теперь с вытекающими отсюда последствиями:
Цитировать
Phoinix:
в таблице mysql

Цитировать
Yukko писал:
session.save_handler = files

я тебе про слоников, а ты мне про попугайчиков...
Цитировать
Yukko:
ты работаешь на виртуальном сервере. провайдер прописал тебе safemod и openbasedir = директория твоего виртуального сервера.

а это специально для того, чтобы у тебя соблазна не возникало, прочитать те самые файлики, в которых  у меня сессии хранятся. Ты получаешь доступ к файловой системе только в директории своего виртуального сервера. ВСЕ!
работа в Украине

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Взаимодействие двух человек через php
« Ответ #17 : 06 Ноября 2003, 21:09:12 »
Yukko
Цитировать
слово PHP ни о чем не говорит

Говорит, я поэтому код и не выкладываю... я о теории говорю...

Цитировать
ты работаешь на виртуальном сервере. провайдер прописал тебе safemod и openbasedir = директория твоего виртуального сервера


Что-то или я вечером торможу, или мы говорим о серверах или о

Цитировать
Как узнать пришел второй пользователь или нет и как узнать его ответы в realtime


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

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Взаимодействие двух человек через php
« Ответ #18 : 06 Ноября 2003, 21:21:28 »
Цитировать
Phoinix:
Говорит

Так вот если это слово тебе говорит, то я тебе специально дал условия. Я хотел увидеть код на PHP, который будет делать то, о чем завели спор, и будет работать при тех условиях, которые я дал.

Цитировать
Phoinix:
или мы говорим о серверах

Очень редко, кто сам для себя является хостером и настраивает PHP под себя, обычно что дали, с тем и работают.

Цитировать
Phoinix:
я о теории говорю...

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

Цитировать
Phoinix:
я вечером торможу

я не удивлюсь, если завтра с утра прийдет RomikChef и скажет, что тормозим мы оба, а потом еще и отправит ФАК по сессиям в РНР читать... так что я предлагаю подождать человека, который это ФАК пишет, пусть он сам все и расскажет, что можно делать в PHP, а чего нельзя, а если можно, то при каких условиях... Согласен?
работа в Украине

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Взаимодействие двух человек через php
« Ответ #19 : 06 Ноября 2003, 21:27:45 »
Yukko
[OFF]IMHO верное решение, ибо у меня подозрение, что автор темы уже забыл о своем вопросе, а мы тут паримся: "ой! что это шуршит??? - Это я, твоя крыша." :-)
Но честно говоря, специфика спецификой, а принципы web-программирования неизменны...[/OFF]

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Взаимодействие двух человек через php
« Ответ #20 : 06 Ноября 2003, 21:48:45 »
Yukko
а почему ты такие требования выдвинул ? :
Цитировать
session.save_handler = files
хранение сессий в БД - это одна из возможностей получения списка активных сессий.

А вообще чего вы к сессиям привязались ?
Авторизировался юзер, записали в БД, что он on-line и время входа. Время обновлять при каждой активации любого скрипта на сайте (вот для єтого сессии и нужны - определить какой юзер выполняет скрипты, чтобы знать кто в OnLine). Остальное описано RomikChef-ом.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Взаимодействие двух человек через php
« Ответ #21 : 06 Ноября 2003, 22:28:04 »
Макс
а ты много чатов видел, чтобы данные через сессии передавались? :)

А если серьезно, то никто не мешает сделать то, о чем разговор пошел, есть желание сделать session_set_save_handler() в базу, пожалуйста... опять же если пров, разрешил session.save_handler=user  
В самом начале
Raptus Melanholicus
что-то сказал про http-сессии, ему Ромик задал вопрос, а что это такое. На мои же вопросы тиранозавру РНР надо было ответить в том же духе(ответа так и не последовало), как ответил Phoinix, он сессии хранит в БД :). Хотя лично я бы не стал дергать БД ради сессий, поэтому я выдвинул такие требования.
работа в Украине

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Взаимодействие двух человек через php
« Ответ #22 : 07 Ноября 2003, 02:07:53 »
Да есть же куча готовых скриптов вида "сейчас на сайте ...". Вот и все, что надо. Пусть у каждого обновляется какая-то страница, и в зависимости от того, кто "сейчас на сайте...", скрипт и пляшет!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Взаимодействие двух человек через php
« Ответ #23 : 07 Ноября 2003, 11:02:55 »
я одного не понял.
откуда здесь взялся этот Пихоникс со своим перлом?
Какое вообще отношение к теме общения двух юзеров имеет вычисление - сколько пользователей на сайте?
Какое отношение имеет к пользователям на сайте количество активных сессий? С каких пор мы стали считать активным юзера, от которого в течение 20 минут - ни слуху ни духу?
При чем тут вообще сессии с хэндлерами?
Признак онлайновости ставится в таблице юзерс.
И не надо для этого все сессии перебирать

Что здесь вообще за бред творится?

Юкко прав в том, что не надо базовый механизм использовать в качестве прикладной системы. Вы еще воду возите на сессиях.

У сессий есть задача - идентифицировать юзера на протяжении сеанса.
Все.
Остальные задачи решаются гораздо проще. Не надо вешать на сессии еще и механизм игры.
Я знаю, есть гении, которые на примитивную задачу наворотят гору строк кода. Но это не повод навязывать такие решения другим.

Оффлайн KoT9IpA

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.irc.ykt.ru
Взаимодействие двух человек через php
« Ответ #24 : 08 Ноября 2003, 07:14:37 »
Сессии это конечно хорошо, только я так и не догнал как это реализовать... хорошо. т.е ни чего хорошего. Вообще это мне нужно для Виртуального загса... ну как на wed.ru Расскажите тогда, свои идей как они его сделали... +)
 Протокол http вообще не предназначен для таких вот ситуаций... но программисты ведь как то ведь делают =) А что если использовать сокеты ? правда это уже не php...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Взаимодействие двух человек через php
« Ответ #25 : 08 Ноября 2003, 10:07:39 »
прочитай мой мой первый ответ.
Если ты не умеешь читать  - то зачем тогда спрашиваешь?

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Взаимодействие двух человек через php
« Ответ #26 : 08 Ноября 2003, 10:54:41 »
RomikChef
Цитировать
откуда здесь взялся этот Phoinix со своим перлом?

Мне как, адрес написать, или сам догадаешься?

Цитировать
сколько пользователей на сайте?

Не сколько пользователей, а какие пользователи на сайте. Точнее есть ли из этих пользователей тот кто нам нужен. Не надо пожалуйста перефразировать...

Цитировать
от которого в течение 20 минут - ни слуху ни духу

А кто тебе мешает жизнь сессии делать 1 минуту?

И потом, как ты в таблице пользователей будешь отслеживать в он-лайне от или нет? Шерстить её всю, и проверять? не проще ли прошерстить только активные сессии которых будет как минимум на порядок меньше???

P.S. и потом я ни словом не обмолвился о языке программирования, важен механизм а не средство реализации...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Взаимодействие двух человек через php
« Ответ #27 : 08 Ноября 2003, 12:34:05 »
Цитировать
А кто тебе мешает жизнь сессии делать 1 минуту?

Из всех глупостей, что ты тут написал, эта - самая идиотская.
Если раньше ты демонстрировал полное незнание предмета, то в этой фразе - скудоумие.

Быстренько возьми эти свои слова обратно. И все остальные, по цепочке.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Взаимодействие двух человек через php
« Ответ #28 : 08 Ноября 2003, 13:37:42 »
RomikChef
Хочу заметить, что все "глупости" которые я здесь написал, у меня прекрасно работают...
Может конечно, я и полностью незнаю предмет, но вопрос в том о каком предмете говоришь ты? (про твои телепатические способности определения ума собеседников я молчу, уже наслышан)

Чем интересно тебе не нравится моя реализация подобного вопроса? Просто разберем по полочкам...

1. При авторизации пользователя сосздается запись в таблице активных пользователей (они же сессии), на основе таблицы либо пользователей, либо существующих сессий (кому, как нравися)... Плюс прописываются куки у пользователя с его сессией;

2. Ну можно через SSI если статика, можно и просто так если динамика, можно в маленький фрейм воткнуть (тоже кому как нравится) скрипт с проверкой авторизации и индентификации пользователя... Во время этой проверки обновляется своя запись в таблице активных пользователей в части времени; и проверяются остальные записи на предмет превышения лимита времени последнего обновления записи с последующим их удалением;

3. При этом мы можем получить (обращаю внимание - не количество) информацию о всех пользователях которые в данный момент на сайте, с погрешностью - плюс превышение лимита времени последнего обновления записи...
Из этого списка мы можем выбрать (или выдать сообщение о его отсутствии) того пользователя который нам нужен для общения (составить ту же таблицу соответствий пар пользователей);

4. И мы можем отправлять ему сообщения (через дополнительную таблицу), а во время выполнения пункта 2 еще и проверять эту таблицу на предмет присутствия сообщений для этого пользователя, и при их наличии выводить на экран...

Что тут непонятного или неправильного или непонятного?
Или подобное реализовать большая проблема?

А насчет:
Цитировать
Я знаю, есть гении, которые на примитивную задачу наворотят гору строк кода. Но это не повод навязывать такие решения другим

1. Никому я ничего не навязываю, я предлагаю выбор...
2. (Ничего личного) Из-за программистов, которые решают задачу двумя строчами кода, при этом ни на минуту не задумываются о таком понятии как "запас прочности", приходится дофига долбаться, дабы "привинтить" к этому скрипт еще какой-нибудь дополнительный механизм. Как ты видишь автор темы не гостевую книгу хочет написать, и всех тонкостей всоего проекта он до конца не знает... и что он будет делать потом? когда ему потребуется расширение? Заново все переписывать? Да пусть он лучше добавит лишние 150 строчек кода, чем потом будет переписывать 200...

И слова свои назад я не заберу...

P.S. И вообще... я чего-то не допонимаю, в чем проблема описать свой механизм реализации данного вопроса? А то говорить, что - "ты дурак", а "ты вообще ничего не понимаешь", а "ты говоришь неправильно" - может каждый. Если такой умный скажи как правильно, и скажи где у меня не правильно...
[OFF]А то разговор напоминает разговор Исполнителя с Заказчиком:
И: - Вот мы сделали как договаривались, и описано в техническом задании;
З: - Ммм... нет мне так не нравится...
И: - А что не нравится?
З: - Незнаю, но что-то не то, не нравится просто, я думал что это будет по-другому...
И: - Ну скажите, как по-другому, мы сделаем...
З: - Ну не знаю, подумайте сами...[/OFF]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Взаимодействие двух человек через php
« Ответ #29 : 08 Ноября 2003, 14:34:29 »
Я всего лишь надеялся, что ты сам можешь сообразить очевидную глупость про сессии длиной в одну минуту.

Ты пришел сюда со своим перлом, с кустарными сессиями, которые являют собой куку и запись в таблице. Неплохое решение, но в ПХП сессиями называется другое.

При твоей организации сессий, у тебя они сильно срощены с остальной системой. Собственно, и сессий как таковых, у тебя нет. Есть кука с униальным ид. И есть некий алгоритм, завязаный на эту куку.

Я не знаю, какие у тебя там сессии, но если НОРМАЛЬНЫЕ сессии, со сборкой мусора, то если ты
Цитировать
2. Сам скрипт у меня вставляется через SSI на все страницы. При загрузке страницы он проверяет куки на наличие сессии и если сессия есть смотрит в основной таблице сессий есть ли она там

и
Цитировать
жизнь сессии делать 1 минуту

То если у человек две минуты читал страницу, перед тем, как кликнуть куда-то, то в это время кто-то другой обратится к скрипту, сработает сборщик мусора и  - "Мужик, мы тебя не знаем!"
Прелестно.
Ты, когда врешь, что у тебя так все и работает - не завирайся.

То, что ты вообщене понимаешь, о чем идет речь, доказывают и эти твои слова
Цитировать
Отправляем сообщение для сессии такой-то

А если человек взял, да ушел?!
Отправлять сообщение надо ЧЕЛОВЕКУ, а не сессии!
Сессия (а вт воем случае это кука с ид) - это всего лишь способ определять запросы, идущие от одного и того же браузера. И все.
Если это понимать, то все станет гораздо проще. Если этого не понимаешь, то объяснять бесполезно.

Ты безумно много трендел про посетителей на сайте, так, что даже бедный hanslinger решил, что речь идет именно об этом.
Тебе очень трудно отвечать, поскольку ты  пишешь о куче вещей сразу, и во всех - с ошибками.

Способ, который ты описал - стандартный для организации HTTP игр. Все правильно написано.
Вот только к ПХП сессиям он имеет ВЕСЬМА отдаленное отношение.
Отсюда и возник вопрос -
Цитировать
откуда здесь взялся этот Пихоникс со своим перлом?
« Последнее редактирование: 08 Ноября 2003, 14:46:16 от RomikChef »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28