PDA

Просмотр полной версии : Создание чата...



vitpanov
21.09.2005, 19:10
Создаю чат...Как забацать чтобы новая реплика выводилась сверху или снизу страницы???Помогите плиз!

Oscar
21.09.2005, 20:22
vitpanov, "реплика" введённая пользователем сохраняется на сервере (файл, БД) и выдаётся всем пользователям.

Простейший пример.


<script>
function start() {
var d = new Date()
frames['output'].location='output.php?'+d.toGMTString();
setTimeout('start()', 10000);
}
</script>
<frameset rows="*,100,0" border="0" onLoad="start()">
<frame src="output.php" name="output"/>
<frame src="input.html" name="input"/>
<frame src="empty.html" name="in" noresize />
</frameset>


<?php
header("Expires: Mon, 05 Sep 2003 14:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
$lines = file('chat.dat');

$temp = array();
foreach ($lines as $line_num => $line) {
$temp[count($temp)] = htmlspecialchars($line)."
\n";
}

for($i=count($temp)-1; $i>=count($temp)-30; $i--)
echo $temp[$i];
?>


<center>
<form onSubmit="top.frames['in'].location='input.php?message='+this.message.value; this.message.value='';return false;">
<input name="message">
</form>


<?php
$handle=fopen('chat.dat', 'a');
fwrite($handle, $_REQUEST['message']."\n");
fclose($handle);
?>

empty.html - пустой
chat.dat - изначально пустой файл, в который записываются "реплики".

vitpanov
24.09.2005, 13:58
Oscar, Спасибо огромное за скрипт! А как установить допустим чтобы выводилось последние n-сообщений, и фразы выбирать чтобы они выводились сверху или снизу?????Еще раз большое спасибо!

Oscar
24.09.2005, 17:45
vitpanov, скрипт, что я написал не такой уже и сложный, чтобы понять его и самому сделать то, что ты хочешь.

vitpanov
24.09.2005, 19:45
Oscar, Еще один вопрос... Если в файле-базе 30 сообщений (или более) разделить на 3 страницы (или более) в каждой из которых по 10 реплик...

Oscar
24.09.2005, 19:48
vitpanov,
читаешь всё из файла в массив (output.php пишет в $temp)
и выводишь по десятку.
А зачем в чате страницы? ))

vitpanov
24.09.2005, 19:55
Oscar, Страницы просто так. Спасибо! А как замочить такую вещь чтобы при регистрации на e-mail пользователя отправлялось письмо с его паролем и логином?

Oscar
24.09.2005, 20:19
PHP:mail (http://www.php.net/manual/ru/function.mail.php)

vitpanov
25.09.2005, 19:58
Oscar,
Надо добавит в форму тэг. Ну это просто...


<script LAnGuAgE="JaVaScRiPt">function tag(tag){var n=document.fr.msg.value; document.fr.msg.value=n+tag;}</script>
URL (#qqqw)
/URL (#qqqw)
<textarea rows=10 cols=10></textarea>

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

Oscar
25.09.2005, 21:03
vitpanov,
во-первых, было бы неплохо, если бы ты давал работающий код (у тебя форма и имя для textarea отсутствуют).
во-вторых, я немного изменил то, что ты написал (так красивее)

<script LAnGuAgE="JavaScript">
function tag(tag){
document.fr.msg.value+=tag;
}
</script>

URL (#)
/URL (#)
<form name="fr">
<textarea rows=10 cols=100 name="msg"></textarea>
</form>

в-третьих, для вопросов по Яваскрипту есть отдельная ветка на форуме.
в-четвёртых, этот вопрос относится к чату? если нет - создай новую тему с понятным названием.

И наконец.
Нет, php использовать НЕ обязательно, хотя и можно.
Если хочешь, чтобы замена проводилать Яваскриптом:


<script LAnGuAgE="JavaScript">

function myReplace(){

document.fr.msg.value = document.fr.msg.value.replace(/test/, "XXX");

}

function myReplaceAll(){

document.fr.msg.value = document.fr.msg.value.replace(/test/g, "XXX");

}

</script>

Replace FIRST "test" with "XXX" (#)



Replace ALL "test" with "XXX" (#)



<form name="fr">
<textarea rows=10 cols=100 name="msg"></textarea>
</form>

Обрати внимание, что ф-ция "String.replace" первым параметром принимает НЕ строку для замены, а так называемое "Регулярное выражение"!

Кроме того, что ты хочешь менять?
Если ты просто хочешь поместить написанное в тэги - можешь сделать следующее:


document.fr.msg.value = "[url]"+document.fr.msg.value+"[/url]";

-----

Если же тебе наоборот нужно преобразовывать этот псевдокод "[url]" в реальную ссылку - то да, лучше это делать на стороне сервера, на PHP.

И там полно ф-ций замены:
От простой: str_replace (http://www.php.net/manual/ru/function.str-replace.php)
до навороченых ereg_replace (http://www.php.net/manual/ru/function.ereg-replace.php) , preg_replace (http://www.php.net/manual/ru/function.preg-replace.php)

vitpanov
26.09.2005, 13:42
Oscar, Я хочу менять домустим ::?:: на <img src=img/image.jpg >... Для разработки вставки смайликов..

vitpanov
02.10.2005, 09:49
Oscar,
Почему не работает этот скрипт???


$email = 'vitpanov@mail.ru';
mail($email, 'the subject', 'the message','From: mymail@mail.com');

Хочу сделать при регистрации отправку на е-маил пароля и логина...

Oscar
02.10.2005, 13:37
vitpanov,
я похож на белого кролика? :-)

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

;-)

vitpanov
20.02.2006, 19:36
А как реализовать работу смайликов?
1. Понятно в форму добавляем, допустим, такой символ - :}
2. А как ссделать чтоб этот символ заменяла ссылка, допустим, <img src=img/smile1.jpg> ???

Oscar
20.02.2006, 19:40
$chatText = ....;

$chatText = str_replace ("<smile1>", "<img src=img/smile1.jpg>", $chatText);

vitpanov
20.02.2006, 19:46
Oscar, огромное СПАСИБО, выручил

vitpanov
26.02.2006, 12:21
Oscar,А вот еще вопрос: Еслю юзер при выходе забыл
нажать на кнопку "Выход",а просто закрыл окно,
как отобразить на панельке Юзеров что его уже нет?

Oscar
26.02.2006, 19:46
vitpanov, теоретически - это не решаемая задача.

Не говоря уже о том, что пользователь может не забыть, а забИть, что чаще и происходит.

Практически, список пользователей можно проверять, например, через скрипт [b]output.php[/p].
Если пользователь обращается к этому скрипту - значит он ещё в чате, если больше 15 секунд (минуты, 5 минут), пользователь не вызывал этот скрипт - значит он ушел.

Чистого решения этой задачи - нету.

Pantera
09.01.2007, 02:28
Подскажите пожалуйста скрипт, чтобы юзер мог вставить свое фото в инфо в чате....
и еще как написать скрипт для смены цвета ника и цвета сообщений???

isms.ru
12.01.2007, 13:12
<input type=file>
Это ответ на первый вопрос :-)