Wortal Webmastera - źródło informacji dla tworzących strony www |  e-marketing / programowanie / webdesign / narzędzia          powered by CubeMatic.com

 

  WEBMASTERS    SKRYPTY

Strona glówna
HTML
JavaScript
PHP
CGI
MYSQL
CSS
SSI
WML
SGML
Offline
Photoshop
PHP
CGI
ASP
JavaScript

Artykuly

FORUM

  NARZEDZIA      SYSTEM

Grafika
Szablony
Czcionki
Porady

Download

  e-BIZNES

Artykuly
Linki
Profesjonalna strona
Nasza oferta
E-booki
Tanie strony www Warszawa

  NIEZBEDNIK

Za darmo
Kasa
Rejestrator www
Aktualności
Domeny
Konwerter ISO

  INNE

DOS
O stronie
Ksiega gości
Kontakt

Zgloś bląd!

 Polecamy:
 śmieszne zdjecia
 Hiszpanski Warszawa


Szukaj pliku



 SERWIS  

Rozbudowany chat

O skrypcie

W tym artykule opisze w jaki sposób zrobić chat, który jedynie potrzebuje serwera z obsługą PHP.
Skrypt ten będzie dzielić okno przeglądarki za pomocą ramek na dwie części, w dolnej będziemy wpisywać tekst, a w górnej będą pojawiać się wpisy.

Charakterystyka dolnej ramki:

1. Będzie zawierać 6 pól (5 wyboru, 1 do wpisania tekstu) i przycisk do wysyłania.
2. Pole do wpisywania tekstu będzie automatycznie aktywne po wysłaniu tekstu, dzięki użyciu JavaScript`u.
3. Będzie zawierać przycisk do "Wylogowania".
4. Będzie zawierać przycisk do przeglądania emotikon.
5. Będzie zawierać przycisk do historii.

Charakterystyka górnej ramki:

1. Będzie odświeżać za pomocą znacznika META.
2. Będzie zawierać kolor tła (bgcolor).
3. Będzie wyświetlać 19lini.

Plusy i minusy skryptu

Plusy:
+ zawiera sporo formatowań tekstu (posiada takie: kolor tekstu, wielkość liter, pogrubienie tekstu, kapitaliki tekstu, kolor nicku) wszystkie te funkcje posiadają kilka pozycji w formularzy wyboru.
+ można go dowolnie rozbudowywać i modyfikować
+ nie posiada żadnych bannerów reklamowych
+ zawiera emotikony
+ jest poprawnie interpretowany przez większość przeglądarek

Minusy:
- mruganie podczas odświeżania
- może wywalać podczas wolnych łącz
- polskie litery mogą być źle odczytane (jeśli przeglądarka będzie używać innego kodowania niż ISO)

Użyte pliki:

admin.php - zawiera narzędzia administrujące (takie jak: banowanie i dodawanie komentarzy bez logowania).
chat.php - zawiera definicje ramek i skrypt dodający usera.
hent.php - wyświetla rozmowę.
history.htm - plik w którym jest zapisywana rozmowa.
index.php - zawiera skrypt do logowania i podgląd chatu.
logaf.php - zawiera skrypt do wylogowania.
obraz.htm - plik z wykazem emotikon.
outlog.htm - plik po wylogowaniu.
skriv.php - zawiera dolną ramkę, skrypt dodający rozmowę i kod emotikon.
styl.css - kaskadowy arkusz stylów.

Gotowy skrypt z opisem:

admin.php

<?
$password = "admin"; // haslo admina
 
if($action == "doit" && $pass == $password)
{
$fil = "history.htm"; // plik do ktorego ma byc dodany komentaz
$str = "<TABLE><tr><td colspan="1"><I><font face="Arial" size="2" color="#FF0000"><b>".date("H:i:s",time())." Komentarz:</b> $chatten</font></I></td></tr></TABLE> "; // formatowanie tekstu komentarza
$fp = fopen($fil, r);
if($fp)
{
$fileArray = file($fil);
$result = implode("", $fileArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if($fp)
{
fputs($fp,$result);
fclose($fp);
}
}
?>
<html>
<meta http-equiv="Pragma" Content="no-cache">
<meta http-equiv="Refresh" Content="60"> // co ile sec. ma byc odswiezany obraz
<CENTER>
<IFRAME src="history.htm" Width="490" hight="200" scrolling="no"></IFRAME> // wielkosc plywajacej ramki
<BR><BR>narzędzia admina ;)))
<BR><BR>
<font face="verdana">
<form action="admin.php" method="post">
<input type="hidden" name="action" value="doit">
Haslo:<BR> <input type="password" name="pass" value="<? echo("$pass"); ?>"><br>
Komentarz:<BR> <input type="text" name="chatten"><br>
<input type="submit" value="Wyslij">
</form>
</font>
<BR><BR><BR>
<?
$password = "ban8520ban"; // haslo do banowania
 
if($action == "doit" && $pass == $password)
{
$fil = ".htaccess"; // najczestrzy plik ktory umozliwia zakazanie komputerowi z danego IP lub hosta oczytywac dane, jesli w Twoim serwerzejest inny to wpisz ja
$str = "deny from ";
$fp = fopen($fil, r);
if($fp)
{
$fileArray = file($fil);
$result = implode("", $fileArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if($fp)
{
fputs($fp,$result);
fclose($fp);
}
}
?>
<BR>
<font face="verdana">
<form action="admin.php" method="post">
<input type="hidden" name="action" value="doit">
Haslo:<BR> <input type="password" name="pass" value="<? echo("$pass"); ?>"><br>
Banuj (z IP, host lub serwer proxy):<BR> <input type="text" name="chatten"><br>
<input type="submit" value="Wyslij">
</form>
</font>
</CENTER>
</html>

chat.php

<?
header("Cache-Control: no-cache");
header("Pragma: no-cache");
 
setcookie("$coknavn");
 
if($navn==admin10) // twoj nick i haslo
{
$navn = "admin <B><I>(admin)</I></B>"; // co ma byc wyswietlone
}
 
if($navn == $coknavn)
{
header("refresh: 1; url=logaf.php?action=logaf&navn=$navn&doh=nisser");
print("<font face="verdana">Zaraz obraz zostanie odswiezony...</font>");
exit;
}
 
elseif($navn == "chatten" or $navn == "Chatten" or $navn == "")
{
header("refresh: 2; url=index.php");
echo("<font face="verdana">Zaraz obraz zostanie odswiezony...</font>");
exit;
}
 
setcookie("coknavn","$navn",time()+1440);
setcookie("online","ja",time()+1440);
 
$fil = "history.htm";
$str = "<TABLE><tr><td colspan="1"><font face="verdana" size="1" color="#FF0000">".date("H:i:s | d-m-Y")."<B> Chatten:</b> $navn ($REMOTE_ADDR) </font></td></tr></TABLE> ";
$fp = fopen($fil, r);
if($fp)
{
$fileArray = file($fil);
$result = implode("", $fileArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if($fp)
{
fputs($fp,$result);
fclose($fp);
}
?>
<html>
<head>
<title>Patt Cafe - v2.5 </title>
</html>
 
<frameset rows="*,110" border="0">
<frameset rows="*,1" border="0">
<frame name="hent" src="hent.php?navn=<? echo("$navn"); ?>" scrolling="no" noresize>
<frame name="logaf" src="logaf.php?navn=<? echo("$navn"); ?>" scrolling="no" noresize>
</frameset>
<frame name="skriv" src="skriv.php?navn=<? echo("$navn") ?>" scrolling="no" noresize>
</frameset>

hent.php

<?
setcookie("$coknavn");
 
if($navn == $coknavn)
{
header("refresh: 5");
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Pragma" Content="no-cache">
<BODY bgcolor="#CCCC99">
 
<table border="0">
<?
$fcontents = file("history.htm");
while(list($line_num, $line) = each($fcontents))
{
if($line_num == "0") { echo("$line"); }
if($line_num == "1") { echo("$line"); }
if($line_num == "2") { echo("$line"); }
if($line_num == "3") { echo("$line"); }
if($line_num == "4") { echo("$line"); }
if($line_num == "5") { echo("$line"); }
if($line_num == "6") { echo("$line"); }
if($line_num == "7") { echo("$line"); }
if($line_num == "8") { echo("$line"); }
if($line_num == "9") { echo("$line"); }
if($line_num == "10") { echo("$line"); }
if($line_num == "11") { echo("$line"); }
if($line_num == "12") { echo("$line"); }
if($line_num == "13") { echo("$line"); }
if($line_num == "14") { echo("$line"); }
if($line_num == "15") { echo("$line"); }
if($line_num == "16") { echo("$line"); }
if($line_num == "17") { echo("$line"); }
if($line_num == "18") { echo("$line"); }
if($line_num == "19") { echo("$line"); }
}
?>
</table>
 
</html>
<?
exit;
}
?>

history.htm

<BODY bgcolor="C0C0C0"> //kolor tla historii

index.ph

<?
setcookie("$online");
 
if($online == "ja")
{
echo("<font face="verdana">Jesteś online!</font>");
exit;
}
?>
<html>
<head>
<title>Patt Cafe - v2.5</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Pragma" Content="no-cache">
<meta http-equiv="Refresh" Content="40">
<BODY bgcolor="#333366" text="FFFFFF" link="#FFFFFF" vlink="#FFFFFF">
<STYLE TYPE="text/css">
#przycisk { background-color: #CCCC99; color: #000000;>
</Style>
<style fprolloverstyle>A:hover {color: #000099}</style>
</head>
<BODY>
<CENTER>
<nobr>
<BR><BR><BR>
<TABLE WIDTH="500" background="tlotab.gif" align="center">
<TR>
<TD>
<CENTER>
<IFRAME src="history.htm" Width="490" hight="200" scrolling="no"></IFRAME>
<BR>
<body onload="document.login.navn.focus()">
 
<script language="javascript" type="text/javascript">
if (self != top) top.location = self.location;
</script>
<form action="chat.php" method="post" name="login">
Login: <input type="text" maxlength="15" name="navn">
<input type="submit" value="Wejdz" id="przycisk">
</form>
<A HREF="obraz.htm" TITLE="Dostępne obrazki (emiticony)" TARGET="_blank">Obrazki;</A>
</CENTER>
</TD></TR></TABLE>
</CENTER>
</body>
</html>

logaf.php

<?
if($action == "logaf")
{
setcookie("coknavn","udlobet",time()+1);
setcookie("online","nej",time()+1);
 
$fil = "history.htm";
$str = "<TABLE><tr><td colspan="1"><font face="verdana" size="1" color="#0000CC">".date("H:i:s | d-m-Y")."<B> Chatten:</b> Opuscil(a) nas $navn </font></td></tr></TABLE> ";
$fp = fopen($fil, r);
if ($fp)
{
$fileArray = file($fil);
$result = implode("", $fileArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if ($fp)
{
fputs($fp, $result);
fclose($fp);
}
 
if($doh == "nisser")
{
header("location: index.php");
exit;
}
?>
<SCRIPT Language="JavaScript">
window.close();
</SCRIPT>
<?
exit;
}
?>
 
<html>
<meta http-equiv="Pragma" Content="no-cache">
<script language="JavaScript">
var exit=true;
function xit()
{
if (exit)
open("logaf.php?action=logaf&navn=<? echo("$navn") ?>","_blank","width=1, height=1, scrollbars=0,status=0,menubar=0,resizable=0,location=0,toolbar=0");
}
</script>
<body onunload="xit()" >
 
</body>
</html>

obraz.htm

<Html>
 
<head>
<meta http-equiv="Content-Type" content=text/html; charset=iso-8859-2">
<META NAME="Language" CONTENT="pl">
<META NAME="Author" CONTENT="Patt">
<title>Patt Cafe - v.2.5 - Wstawianie obrazkow (emoticon) </title>
 
<LINK REL=stylesheet HREF="styl.css" TYPE="text/css">
 
<BODY bgcolor="#333366" text="FFFFFF" link="#FFFFFF" vlink="#FFFFFF">
 
</head>
 
<BODY>
<nobr>
<CENTER>Wstawianie obrazkow (emiticon):</CENTER>
<BR>
<BR>
<center>
Wystarczy wpisac nazwe.<BR>
Oto lista rysunkow (obok kazdego obrazka jest nazwa):<BR><BR>
<TABLE Width="480" BORDER="1" background="tlotab.gif">
<TR>
<TD>
<IMG SRC="aniol.gif"> :aniol <BR>
<IMG SRC="pyt.gif"> :pyt<BR>
</TD><TD>
<img src="icon_wink.gif"> :mrugniecie<BR> // wazne jest aby nie dać takiego samego poczatku dla skrotu tzn. np. :ass i :as skrypt uzna je za takie same
</TD><TD>
<img src="!.gif"> !!!<BR> // trzeba recznie wpisac adres do obrazka i jego odpowiednik w skrocie
<IMG SRC="usmiech.gif"> :)<BR>
</TD></TR>
</TABLE>
</center>
</nobr>
</body>
</html>

outlog.htm

Użyj dowolnej strony dla tego pliku

skriv.php

<?
setcookie("$coknavn");
 
if($navn && $skriv && strlen($skriv)<=100 && $coknavn == $navn)
{
setcookie("coknavn","$navn");
 
$skriv = ereg_replace("<","&lt;",$skriv);
$skriv = ereg_replace(">","&gt;",$skriv);
$skriv = ereg_replace(":)","<img src="usmiech.gif" border="0">",$skriv); // wystarczy dopisywac nastepne linie w tym samym stylu co te, wazne jest aby nie dublowac poczatku
$skriv = ereg_replace(":pyt","<img src="pyt.gif" border="0">",$skriv); //mozna ten klopot niwelowac dajac inna cyfre do kazdego konca skrotu
$skriv = ereg_replace(":aniol","<img src="aniol.gif" border="0">",$skriv);
$skriv = ereg_replace("!!!","<img src="!.gif" border="0">",$skriv);
 
$fil = "history.htm";
$str = "<TABLE><tr><td><font face="verdana" size="1" color="$coloruser"><b>".date("H:i:s",time())." $navn:</b></font><font face="verdana" size="$wielkoscx" color="$farve" style="font-weight: $gruboscx" style="font-variant: $kapitalikix">&nbsp;&nbsp;$skriv</font></td></tr></TABLE> ";
$fp = fopen($fil, r);
if ($fp)
{
$fileArray = file($fil);
$result = implode("", $fileArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if ($fp)
{
fputs($fp, $result);
fclose($fp);
}
}
?>
<html>
<meta http-equiv="Pragma" Content="no-cache">
<BODY bgcolor="#333366" text="FFFFFF" link="#FFFFFF" vlink="#FFFFFF">
<STYLE TYPE="text/css">
#przycisk { background-color: #CCCC99; color: #000000;>
</Style>
<style fprolloverstyle>A:hover {color: #000099}</style>
<body onload="document.submit_form.skriv.focus()">
<CENTER>
<form action="skriv.php" method="post" name="submit_form">
<input type="hidden" name="navn" value="<? echo("$navn"); ?>">
Kolor: <select name="farve">
<? if($farve == "darkred"){ echo("<option value="darkred">Czerwony</option>"); } ?>
<? if($farve == "darkblue"){ echo("<option value="darkblue">Niebieski</option>"); } ?>
<? if($farve == "darkgreen"){ echo("<option value="darkgreen">Zielony</option>"); } ?>
<option value="black">Czarny</option>
<option value="darkred">Czerwony</option>
<option value="darkblue">Niebieski</option>
<option value="darkgreen">Zielony</option>
</select>
<form action="skriv.php" method="post" name="submit_form">
<input type="hidden" name="navn" value="<? echo("$navn"); ?>">
Wielkosc: <select name="wielkoscx">
<? if($wielkoscx == "1"){ echo("<option value="1">Mniejsza</option>"); } ?>
<? if($wielkoscx == "3"){ echo("<option value="3">Wieksza</option>"); } ?>
<? if($wielkoscx == "4"){ echo("<option value="4">Najwieksza</option>"); } ?>
<option value="2">Standartowa</option>
<option value="1">Mniejsza</option>
<option value="3">Wieksza</option>
<option value="4">Najwieksza</option>
</select>
<form action="skriv.php" method="post" name="submit_form">
<input type="hidden" name="navn" value="<? echo("$navn"); ?>">
Pogrubienie: <select name="gruboscx">
<? if($gruboscx == "700"){ echo("<option value="700">grubsza</option>"); } ?>
<? if($gruboscx == "900"){ echo("<option value="900">najgrubsza</option>"); } ?>
<option value="normal">normalna</option>
<option value="700">grubsza</option>
<option value="900">najgrubsza</option>
</select>
<form action="skriv.php" method="post" name="submit_form">
<input type="hidden" name="navn" value="<? echo("$navn"); ?>">
Kapitaliki: <select name="kapitalikix">
<? if($kapitalikix == "small-caps"){ echo("<option value="small-caps">small-caps</option>"); } ?>
<option value="normal">normalna</option>
<option value="small-caps">small-caps</option>
</select>
<BR>
<form action="skriv.php" method="post" name="submit_form">
<input type="hidden" name="navn" value="<? echo("$navn"); ?>">
Kolor nick`u: <select name="coloruser">
<? if($coloruser == "#0000FF"){ echo("<option value="#0000FF">Niebieski</option>"); } ?>
<? if($coloruser == "#000099"){ echo("<option value="#000099">Granatowy</option>"); } ?>
<? if($coloruser == "#00FF00"){ echo("<option value="#00FF00">Zielony</option>"); } ?>
<? if($coloruser == "#CCCC99"){ echo("<option value="#CCCC99">Niewidoczny</option>"); } ?>
<? if($coloruser == "#FF9933"){ echo("<option value="#FF9933">Pomaranczowy</option>"); } ?>
<? if($coloruser == "#FFFF00"){ echo("<option value="#FFFF00">Zolty</option>"); } ?>
<? if($coloruser == "#FF00FF"){ echo("<option value="#FF00FF">Rozowy</option>"); } ?>
<option value="#000000">Czarny</option>
<option value="#0000FF">Niebieski</option>
<option value="#000099">Granatowy</option>
<option value="#00FF00">Zielony</option>
<option value="#CCCC99">Niewidoczny</option>
<option value="#FF9933">Pomaranczowy</option>
<option value="#FFFF00">Zolty</option>
<option value="#FF00FF">Rozowy</option>
</select>
&#160 <input type="text" maxlength="100" name="skriv">
<input type="submit" name="send" id="przycisk" value="Wyslij">
</form>
</CENTER>
<nobr>
<A HREF="outlog.htm" TITLE="Wyloguj sie" TARGET="_top">Wyloguj sie;</A> &#160 &#160 <A HREF="obraz.htm" TITLE="Dostepne obrazki (emiticony)" TARGET="_blank">Obrazki;</A> &#160 &#160
<A HREF="historia.htm" TITLE="Historia" TARGET="_blank">History;</A>
</nobr>
</body>
</html>

styl.css

<STYLE TYPE="text/css">
BODY { font: 12 Arial; color: #FF0000 }
#przycisk { background-color: #000099; color: #FFFF00;>
</Style>
 
<STYLE type="text/css">
<!--
BODY {
scrollbar-face-color: #000000;
scrollbar-highlight-color: #000000;
scrollbar-3dlight-color: #FF0000;
scrollbar-darkshadow-color: #000000;
scrollbar-shadow-color: #FF0000;
scrollbar-arrow-color: #FFFFFF;
scrollbar-track-color: #000000;
}
-->
</STYLE>


Zakończenie:

To jest już koniec skryptu :) mam nadzieje, że przyda Wam się ten skrypt :)
UWAGA: Należy ustawić chmod 666 na pliki history.htm

Autor nie ponosi żadnej odpowiedzialności
za ewentualne szkody mogące wyniknąć
z błędu w skrypcie.

Autor:
Patryk Lisikiewicz "Patt"
Home Page: www.pattpage.prv.pl


<== WSTECZ =

R E K L A M A

^top^