Web-мастер: курс молодого бойца

Чат на основе БД

   

 Добавлено 2008-10-18 00:47:42
haZe


Сообщений: 212
Зарегистрирован: 31.07.2008

Цитировать
Думаю иммет право на жизнь така=ой скрипт, написал сам, надеюсь кому нить будет полезно.

Использует данный механизм пользователей http://forum.webmasterschool.ru/index.php?action=showTheme&idForum=1&id_theme=342&page=1

Пример тут: http://pripyat3d.com/?p=chat

Состоит он из трех файлов:
chat.php
chat_form.php
chat_window.php

chat.php:

<iframe frameborder='0' height='600' width='790' scrolling='auto' src='chat_window.php#down' name='chat_window'></iframe>

<iframe frameborder='0' height='80' width='500' scrolling='no' src='chat_form.php' name='chat_form'></iframe><br>

<b>Внимание!</b> После отправки сообщения, оно может появится не сразу. 
Это сделано с целью экономии Вашего траффика, необходимо подождать несоклько секунд(не более 7).<br>
Кликнув на ник в чате, Вы осществите обращение к к этому пользователю.

chat_form.php
<?
//chat_form

session_start();
include 
"connect.php";
include 
"function.php";

if(isset(
$_POST['engine'])){
        
$name $_SESSION['user']['login'];
        
$text $_POST['text'];
        
$color $_SESSION['user_option']['chat_color'];
        
$text clear($text);
        
$time date("d H:i:s");



        if(
$text != ""){
        
$insert mysql_query("INSERT INTO `chat` (`name`, `color`, `text`, `time`) VALUES ('$name', '$color', '$text', '$time')"
or die(
"mysql error:".mysql_error());
        }
}
?>

<html>
<head><title>Chat</title>
<link rel='stylesheet' type='text/css' href='img/style.css'></head><body topmargin='0'>
<script type="text/javascript">
function concTexta(text){
document.form.text.value+=text;
}

function setfocus() {
  document.form.text.focus();
}
</script>


</head>
<body onLoad="setfocus()">

<?
if ( isset( $_SESSION['user'] ) ) { 
echo
"
<form method='post' name='form'>

    <table border='0' cellpadding='0' cellspacing='0'><tr>
    <td class='b' onClick=\"concTexta('[b][/b]')\"><a class='b'></a></td>
    <td class='i' onClick=\"concTexta('[i][/i]')\"><a class='i'></a></td>
    <td class='u' onClick=\"concTexta('[u][/u]')\"><a class='u'></a></td>
    <td class='a' onClick=\"concTexta('[url=][/url]')\"><a class='a'></td>
    <td background='img/comm_header_bg.jpg'>
    <img src='img/icon_smi.gif' onClick=\"concTexta(':)')\">
    <img src='img/icon_win.gif' onClick=\"concTexta(';)')\">
    <img src='img/icon_rb0.gif' onClick=\"concTexta(':(')\">
    <img src='img/icon_cra.gif' onClick=\"concTexta(':crazy:')\">
    <img src='img/icon_ton.gif' onClick=\"concTexta(':p')\">
    <img src='img/icon_goo.gif' onClick=\"concTexta(':cool:')\">
    <img src='img/icon_coo.gif' onClick=\"concTexta('8)')\">
    </td></tr></table>

<input name='text' type='text' size='60'>
<br>
<input name='engine' type='hidden' readonly value='1'>
<input type='submit' value='Добавить'>
</form>
"
;
}


?>




chat_window.php

<?

if(!isset($_GET['refresh'])) $_GET['refresh'] = 7;
?>
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="<? echo $_GET['refresh']; ?>" URL="/?p=chat&refrash=<? echo $_GET['refresh']; ?>#name">
<script type="text/javascript">
function concTexta(text){
parent.chat_form.form.text.value+=text;
}
</script>


</head>

<?
include "connect.php";
            
$select mysql_query("SELECT `id`, `name`, `text`, `time`, `color` FROM `chat` ORDER BY `time` DESC LIMIT 20");
        
//    $sel = mysql_fetch_array($select);
            
            
if(mysql_num_rows($select) != 0){
                echo 
"<table border='0'>";
                
$ch3=0;
            do{
            
$check $ch3%2;
            if(
$check != ){ 
                          
$check "<tr><td style='background:#f3f3f3;'>";
                        } else {
                          
$check "<tr><td style='background:#ffffff;'>";
                        };
            
$list[] = $check.$sel['time']." <b><a onClick=\"concTexta('[b]2 ".$sel['name']."[/b]')\">".$sel['name']."</a></b> <font color='#".$sel['color']."'> ".$sel['text']."</font></td></tr>";
            
$ch3++;
            }while(
$sel mysql_fetch_array($select));
            
$ch2 50;
            for(
$ch=0;$ch <= 50;$ch++)
            {
            echo 
$list[$ch2];
            
$ch2--;
            }
            echo 
"</table>";
            echo 
"<a name='down'></a>";
            } else echo 
"В чате пусто!";
            
?>


бд:
CREATE TABLE `chat` (
  `id` int(11) NOT NULL auto_increment,
  `name` text character set utf8 NOT NULL,
  `text` text character set utf8 NOT NULL,
  `time` text character set utf8 NOT NULL,
  `color` text character set utf8 NOT NULL,
  PRIMARY KEY  (`id`)
)

ф-ция clear:

<?
function clear ($string){
$string strip_tags($string'<b><br></b><u></u><i></i><li></li><ul></ul><ol></ol><a></a><img>');
$string str_replace("\n""<br>"$string);

$string str_replace("[img]""<img src="$string);
$string str_replace("[/img]"">"$string);
$string str_replace("[b]""<b>"$string);
$string str_replace("[/b]""</b>"$string);
$string str_replace("[u]""<u>"$string);
$string str_replace("[/u]""</u>"$string);
$string str_replace("[i]""<i>"$string);
$string str_replace("[/i]""</i>"$string);
$string str_replace("[li]""<li>"$string);
$string str_replace("[/li]""</li>"$string);
$string str_replace("[ul]""<ul>"$string);
$string str_replace("[/ul]""</ul>"$string);
$string str_replace("[ol]""<ol>"$string);
$string str_replace("[/ol]""</ol>"$string);

$string preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU"'<a href="\\1" target="_blank">\\2</a>'$string);
$string preg_replace("#\[url\][\s]*([\S]+)[\s]*\[\/url\]#isU",'<a href="\\1" target="_blank">\\1</a>',$string);
$string preg_replace("#\[color=red\](.+)\[\/color\]#isU",'<span style="color:#FF0000">\\1</span>',$string); 
$string preg_replace("#\[color=green\](.+)\[\/color\]#isU",'<span style="color:#008000">\\1</span>',$string); 
$string preg_replace("#\[color=blue\](.+)\[\/color\]#isU",'<span style="color:#0000FF">\\1</span>',$string);

$string str_replace(":)""<img src=\'img/icon_smi.gif\' border=\'0\'>"$string);
$string str_replace(";)""<img src=\'img/icon_win.gif\' border=\'0\'>"$string);
$string str_replace(":(""<img src=\'img/icon_rb0.gif\' border=\'0\'>"$string);
$string str_replace(":p""<img src=\'img/icon_ton.gif\' border=\'0\'>"$string);
$string str_replace(":cool:""<img src=\'img/icon_goo.gif\' border=\'0\'>"$string);
$string str_replace("8)""<img src=\'img/icon_coo.gif\' border=\'0\'>"$string);
$string str_replace(":crazy:""<img src=\'img/icon_cra.gif\' border=\'0\'>"$string);
$string trim($string);

return 
$string;
};
?>

CSS
A.b {background: url('bb.jpg'); display: block;  width: 18px;  height: 25px; }
A.b:hover { background-position:0   -25px; }

A.i {background: url('bb.jpg'); display: block;  width: 10px;  height: 25px; background-position:-18 0;}
A.i:hover { background-position:-18   -25px; }

A.u {background: url('bb.jpg'); display: block;  width: 15px;  height: 25px; background-position:-28 0;}
A.u:hover { background-position:-28   -25px; }

A.ul {background: url('bb.jpg'); display: block;  width: 15px;  height: 25px; background-position:-45 0;}
A.ul:hover { background-position:-45   -25px; }

A.li {background: url('bb.jpg'); display: block;  width: 15px;  height: 25px; background-position:-60 0;}
A.li:hover { background-position:-60   -25px; }

A.ol {background: url('bb.jpg'); display: block;  width: 18px;  height: 25px; background-position:-75 0;}
A.ol:hover { background-position:-75   -25px; }

A.img {background: url('bb.jpg'); display: block;  width: 30px;  height: 25px; background-position:-93 0;}
A.img:hover { background-position:-93   -25px; }

A.a {background: url('bb.jpg'); display: block;  width: 15px;  height: 25px; background-position:-123 0;}
A.a:hover { background-position:-123   -25px; }
 



Даже точка лазерного прицела на твоем лбу, тоже чья-то точка зрения.
Наверх  Посмотреть профиль   Сайт автора Отредактировано модератором evgenijj 08.12.2008

 Добавлено 2008-12-06 17:23:58


Цитировать
А можно ещё и регистрацию. А то Я не как не пойму как написать регистрацию в которой при ошибке выводилась бы на той же странице ошибки о не правильности заполнения полей.

Геннадий.
Наверх Незарегистрированный пользователь  

 Добавлено 2008-12-08 09:48:06
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
Посетитель пишет:
А можно ещё и регистрацию. А то Я не как не пойму как написать регистрацию в которой при ошибке выводилась бы на той же странице ошибки о не правильности заполнения полей.
Обработка ошибочного заполнения формы


Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора  

 Добавлено 2019-03-20 06:31:42


Цитировать
http://theprettyguineapig.com/amoxicillin/ - Amoxicillin 500 Mg <a href="http://theprettyguineapig.com/amoxicillin/">Buy Amoxicillin Online</a> http://theprettyguineapig.com/amoxicillin/
Наверх Незарегистрированный пользователь  
   
Быстрый ответ
 
Цвет шрифта: Закрыть все теги
Сообщение
Защитный код