index.html:
=============
<HTML>
<HEAD>
<TITLE>YGREG - Chat</TITLE>
</HEAD>
<FRAMESET ROWS="*, 60" FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>
<FRAME SRC=gora.php3 NAME="gora">
<FRAME SRC=dol.php3 NAME="dol" SCROLLING=NO>
</FRAMESET>
</HTML>
gora.php3:
============
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
<META HTTP-EQUIV="REFRESH" CONTENT="1">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<TABLE BORDER=1 CELLPADDING=5 CELLSPACING=0 WIDTH=500 HEIGHT=400>
<TR><TD VALIGN=TOP>
<FONT CLASS=text>
<?
// tutaj umieścimy skrypt wyświetlający treść
?>
</FONT>
</TR></TD></TABLE>
</BODY>
</HTML>
dol.php3:
===========
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<FORM METHOD=GET ACTION=dol.php3 NAME=formularz>
<INPUT TYPE=HIDDEN NAME=ACTION VALUE=add>
<INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=TEKST>
<?
// tutaj umieścimy skrypt obsługujący formularz
?>
</FORM>
</BODY>
</HTML>
Dla zwiększenia czytelności skryptów pola formularza będe zawsze nazywał dużymi literami. Jak widać w powyższym pliku będą potrzebne 2 skrypty - wyświetlający treść rozmowy i dodający nową linię.
<?
$file=fopen("chat.txt", "r");
flock($file, 1);
while($linia=fgets($file, 81))
{
echo($linia);
echo("<BR>");
}
flock($file, 3);
fclose($file);
?>
<?
if($ACTION=="add") // jeśli użytkownik dopiero wszedł
// na stronę, zmienna $ACTION będzie pusta
{
$file=fopen("chat.txt", "r");
flock($file, 1);
for($lineNr=1;true;$lineNr++)
{
$linia=fgets($file, 81); // odczytuje kolejną linię z pliku
if(!$linia)
break; // kończy pętle, jeśli natrafi na koniec pliku
$linie[$lineNr]=$linia; // dopisuje linię do tablicy $linie
}
flock($file, 3);
fclose($file);
$nLines=$lineNr; // zapisuje ilość lini w zmiennej $nLines
$file=fopen("chat.txt", "w");
flock($file, 2);
if($nLines<16) // jeżeli lini jest mniej niż 16 zapisywanie
$lineNr=1; // do pliku zacznie się od pierwszej lini
else // jeżeli 16 lub więcej, zapisywanie
$lineNr=2; // zaczyna się od 2 lini
for(;$lineNr<$nLines;$lineNr++) // zapisuje kolejne linie
fwrite($file, $linie[$lineNr]);
fwrite($file, $TEKST); // dopisuje linię podaną przez użytkownika
fwrite($file, "\n");
flock($file, 3);
fclose($file);
}
?>
Teraz można już przetestować pierwszą, najprostszą wersję skryptu. Najbardziej rażącą niedogodnością jest to, że po wysłaniu formularza pole do wpisywania tekstu nie jest aktywne i trzeba użyć myszy, żeby wpisać kolejną linię. Można temu zaradzić stosując bardzo prosty skrypt Javy:
<SCRIPT LANGUAGE="JavaScript">
<!--
document.formularz.TEKST.focus();
// -->
</SCRIPT>
Skrypt ten należy dopisać pod formularzem w pliku dol.php3. Teraz po załadowaniu strony dol.php3 pole formularza uaktywnia się automatycznie.
imie.htm
==========
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<FORM METHOD=GET ACTION=dol.php3>
Wpisz swoje imię:
<INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=IMIE>
</FORM>
</BODY>
</HTML>
Konieczne będzie też dokonanie zmian w pliku dol.php3. Na końcu skryptu obsługującego formularz trzeba dopisać linię:
echo("<INPUT TYPE=HIDDEN NAME=IMIE VALUE=$IMIE>");
Spowoduje ona wprowadzanie do formularza ukrytego pola, zawierającego imię użytkownika. Należy teakże zmienić linię dodającą nowy tekst do pliku na:
fwrite($file, "$IMIE> $TEKST");
Teraz można już swobodnie rozmawiać.
$kolory[0]="black";
$opisy[0]="Czarny";
$kolory[1]="blue";
$opisy[1]="Niebieski";
$kolory[2]="red";
$opisy[2]="Czerwony";
$kolory[3]="green";
$opisy[3]="Zielony";
if($KOLOR=="")
$KOLOR="black";
echo("<SELECT NAME=KOLOR>");
for($i=0;$i<4;$i++)
{
echo("<OPTION VALUE=$kolory[$i]");
if($kolory[$i]==$KOLOR)
echo(" SELECTED");
echo(">$opisy[$i]</OPTION>");
}
echo("</SELECT>");
A linię wpisującą do pliku nowy tekst zmienić na
fwrite($file, "<FONT COLOR=$KOLOR>$IMIE></FONT> $TEKST");
W ten sposób zostanie utworzone pole wyboru, zawierające 4 kolory. Po wysłaniu formularza domyślnie zaznaczony będzie ostatnio wybrany kolor.
index.html
============
<HTML>
<HEAD>
<TITLE>YGREG - Chat</TITLE>
</HEAD>
<FRAMESET ROWS="*, 60" FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>
<FRAME SRC=gora.php3 NAME="gora">
<FRAME SRC=imie.htm NAME="dol" SCROLLING=NO>
</FRAMESET>
</HTML>
imie.htm
==========
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<FORM METHOD=GET ACTION=dol.php3>
Wpisz swoje imię: <INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=IMIE>
</FORM>
</BODY>
</HTML>
dol.php3
==========
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<FORM METHOD=GET ACTION=dol.php3 NAME=formularz>
<INPUT TYPE=HIDDEN NAME=ACTION VALUE=add>
<INPUT TYPE=TEXT SIZE=80 MAXLENGTH=80 NAME=TEKST>
<?
if($ACTION=="add")
{
$file=fopen("chat.txt", "r");
flock($file, 1);
for($lineNr=1;true;$lineNr++)
{
$linia=fgets($file, 81);
if(!$linia)
break;
$linie[$lineNr]=$linia;
}
flock($file, 3);
fclose($file);
$nLines=$lineNr;
$file=fopen("chat.txt", "w");
flock($file, 2);
if($nLines<16)
$lineNr=1;
else
$lineNr=2;
for(;$lineNr<$nLines;$lineNr++)
fwrite($file, $linie[$lineNr]);
fwrite($file, "<FONT COLOR=$KOLOR>$IMIE></FONT> $TEKST");
fwrite($file, "\n");
flock($file, 3);
fclose($file);
}
echo("<INPUT TYPE=HIDDEN NAME=IMIE VALUE=$IMIE>");
$kolory[0]="black";
$opisy[0]="Czarny";
$kolory[1]="blue";
$opisy[1]="Niebieski";
$kolory[2]="red";
$opisy[2]="Czerwony";
$kolory[3]="green";
$opisy[3]="Zielony";
if($KOLOR=="")
$KOLOR="black";
echo("<SELECT NAME=KOLOR>");
for($i=0;$i<4;$i++)
{
echo("<OPTION VALUE=$kolory[$i]");
if($kolory[$i]==$KOLOR)
echo(" SELECTED");
echo(">$opisy[$i]</OPTION>");
}
echo("</SELECT>");
?>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.formularz.TEKST.focus();
// -->
</SCRIPT>
</BODY>
</HTML>
gora.php3
===========
<HTML>
<HEAD>
<META http-equiv="Content-type"
content="text/html; charset=iso-8859-2">
<META HTTP-EQUIV="REFRESH" CONTENT="1">
</HEAD>
<BODY BGCOLOR=WHITE TEXT=BLACK>
<TABLE BORDER=1 CELLPADDING=5 CELLSPACING=0 WIDTH=500 HEIGHT=400>
<TR><TD VALIGN=TOP>
<FONT CLASS=text>
<?
$file=fopen("chat.txt", "r");
flock($file, 1);
while($linia=fgets($file, 81))
{
echo($linia);
echo("<BR>");
}
flock($file, 3);
fclose($file);
?>
</FONT>
</TR></TD></TABLE>
</BODY>
</HTML>