PDA

Показать полную графическую версию : Чат на php


LEXX2002
04-04-2003, 18:46
Как давно я не был на этом форуме. Всем привет кого знаю.
Вопрос по php. Начал я писать чат, вроде не чего, нормально получается, но в последнее время стало раздражать этот «рефреш» для обновления сообщений, я раньше писал так: <meta http-equiv="refresh" content="8";  charset=windows-1251"> (это окно где все сообщение, или просто в народе, ОБЩАГ). Но когда много сообшений, или смайликов, то это уже отстой полнейший. Знаю есть чаты которые показывают новые сообщений без обновление страницы. Так вот, КАК ЭТО СДЕЛАТЬ???

ivank
05-04-2003, 08:27
сложно, http://php.spb.ru/chat/

LEXX2002
05-04-2003, 17:02
ivank
Блин тоже мне помог, я этот чат на пхп груп уже год назад скачивал, он мне не нравиться, и хочется СВОЙ, родной сделать, что бы каждую фифочку знать. Темболее что там нельзя удалить эту шапку с ссылкой на их сайт.



Я тут долго размышлял, как это сделать. НЕ как же не возможно принимать сообщение без обновления. После долгих размышлений я вроде догадался как это сделать. Существует невидимый фрейм, который все время обновляется, или хотя бы раз в 5 секунд. В этом фрейме есть скрипт. Если приходит новое сообщение (или вообще что приходит), он его кидает в общаг.
Не знаю как на других чатая, я попробую пойти по этому пути. Если кто знает ТОЧНО как это сделать то не в падлу напишите.

XXXX Pro
05-04-2003, 19:11
Если я не ошибаюсь, такое можно реализовать только в виде Java-апплета. С помощью Perl или PHP ничего такого не получится (максимум, что можно сделать - прописать соответствующий Cache-control, чтобы смайлики грузились один раз, а потом - только быстро обновлялись, но и то - вряд ли), разве что сработает ваша идея про невидимый frame, но возникнет другая проблема: этот чат не будет работать при отключенных Java-Scriptах.

LEXX2002
05-04-2003, 19:56
Уже начал писать скрипт, только столкнулся с проблемой (точнее проблемы нет, просто я не знаю как это сделать).
Существует два фрейма
Chat – где показываться все сообщений
SAY – постоянно обновляемый фрейм.

Пишу так (фрейм say):

<script language="JavaScript" type="text/javascript">

function say_sc(text) {parent.chat.document += text}
say_sc(‘<? Php $new_talk ?>’)


</script>

никаких результатов (конечно никаких, неправильно написал, плохо знаю скрипт).
Какой объект надо создать что бы его невидно было, или …………………. Ну поняли??, как сделать что бы функция say_sc() писала новый сообщения в фрейме chat.

XXXX Pro
На счет отключения скриптов. К сожалению УЖЕ поставил ограничитель. В чат могут зайти только с брайзером MSIE, и как бы опера не подделывалась под IE её не пускаю.
Хотя я помню есть функция в PHP которая выясняет возможности брайзера.


Исправлено: LEXX2002, 19:59 5-04-2003

Sulako
05-04-2003, 21:28
конечно, никаких...
parent.chat.document += text - это чушь ;)

parent.chat.document.write(text) - вот так надо бы...

вот пример, у меня работает...

<iframe name="chat"></iframe>
<input id=txt type="text">
<input type=button value="Послать" onclick="chat.document.write(txt.value)">

А вообще, это не совсем корректно...как думаешь убирать просроченные сообщения? Вообще есть несколько способов писать в текст документа... я бы лично действовал через свойства innerHTML/innerText - просто и наглядно...


Исправлено: Sulako, 21:51 5-04-2003

ivank
05-04-2003, 21:40
LEXX2002
Я ссылку дал как на пример реализации непрерывного соединения. Это идеологичесски правильнее чем делать со скрытым фрецмом.

LEXX2002
05-04-2003, 22:04
Так вот я и спрашиваю КАК сделать это «непрерывное соединение», как обновить страницу без обновления ( теперь надо осмыслить чего написал :-) ), Я то не знаю как это реализовано в чатах. Пришлось своё придумывать.

Я сегодня ещё раз поставил этот чат, который с примера , так вот там все таки есть какой то рефреш.

На счёт старых сообщений, в примере это проблема решена очень просто, ОНА НЕ КАК НЕ РЕШЕНА. На протяжении всей сессии все сообщения видны.

И ещё, что такое innerHTML/innerText . Некогда о таком не слышал, это что?? язык, технология?? Что это и с чем это едят.

Sulako
05-04-2003, 22:54
innerHTML и innerText - это такие свойства элементов HTML в JavaScript, означают текст внутри элемента.
например, body.innerHTML содержит весь текст документа, который внутри тега <body></body>, и с ним можно вытворять что угодно ;) Разница между innerHTML и innerText в том, что при использовании innerHTML можно добавлять кроме текста еще и теги HTML.

LEXX2002
28-04-2003, 23:40
Извиняюсь за долгую задержку, уезжал,
Sulako
parent.chat.document.write(text) – работает, только проблема, все что было до этого в фрейме chat удаляются, а мне этого не надо, у меня там ещё скрипт, как сделать что бы дописывало, а не перезаписывало. И еще, можно что бы это командой писать в отведённый для неё место а не в конец документа, так как когда она пишет в конец документа, а там возникают проблемы со скроллингом.

Guest
19-12-2003, 06:11
http://www.x7chat.com супер новейший чат

Guest
28-01-2004, 17:48
Ну что сделал чат то? А то ты принципиально не в ту сторону движесся! Механизм реализован по другому совсем! Если интересно я тебе расскажу как magway2030@mail.ru!:gigi:

LEXX2002
28-01-2004, 20:48
Да вроде уже сам додумался как делается это, скриптом открывается сокет, тем самым создается непрерывное соединение, но чат потерпел крах по очень простой причине, на бесплатных хостингах в каждый фрейм помещается банер что портит скрипт и конечно внешний вид :( а денежек на платный хостинг нет. В локалке работАЛ простой чат на рефреше, там то нет проблем со скоростью и некто кроме своих не видит так что над функциональностью не работал. А вообще IRC рулит, html чаты меня в последнее время раздражают.




© OSzone.net 2001-2012