PHP Część 6


YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
Kurs PHP - Część 6
Ogólny zarys skryptu
W tym rozdziale opiszę krok po kroku tworzenie skryptu obsługującego prostego chata.
Gotowy do u\ycia skrypt mo\na ściągnąć (http://ygreg.and.pl/php/kurs/chat.zip) stąd. Okno
przeglądarki podzielimy ramkami na dwie części. W dolnej będzie znajdował się formularz,
zawierający jedno pole do wpisywania tekstu, w górnej będzie wyświetlać się treść rozmowy.
Aby uniknąć u\ycia Javy w górnej ramce umieścimy znacznik META powodujący odświe\enie
zawartości co 1 sekundę. Skrypt obsługujący formularz umieścimy w tym samym pliku, co
formularz. Dięki temu u\ytkownik po wpisaniu linijki tekstu będzie mógł od razu zacząć pisać
następną.
U\yte pliki HTML
Nasz skrypt będzie potrzebował 4 plików. Będą to:
index.html - plik zawierający definicję ramek
gora.php3 - górna ramka, zawierająca skrypt wyświetlający rozmowę
dol.php3 - dolna ramka, zawierająca formularz i skrypt do jego obsługi
chat.txt - plik w którym będzie przechowywana treść rozmowy
Skrypt w pliku dol.php3 musi mieć mo\liwość zapisu do pliku chat.txt. Teraz przedstawię
początkową zawartość tych plików:
index.html:
=============


YGREG - Chat

FRAMESPACING=0 BORDER=0>

SCROLLING=NO>


gora.php3:
============


CONTENT="text/html; charset=ISO-8859-2">


1 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6

WIDTH=500 HEIGHT=400>


// tutaj umieścimy skrypt
// wyświetlający treść
?>




dol.php3:
===========


content="text/html; charset=iso-8859-2">


ACTION=dol.php3 NAME=formularz>
NAME=ACTION VALUE=add>
MAXLENGTH=80 NAME=TEKST>
// tutaj umieścimy
// skrypt obsługujący formularz
?>



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ę.
Wyświetlanie treści rozmowy
Zaczniemy od skryptu wyświetlającego treść rozmowy w pliku gora.php3. Będzie on
czytał kolejne linie z pliku chat.txt i wyświetlał je, rozdzielając tagami

$file=fopen("chat.txt", "r");
flock($file, 1);
while($linia=fgets($file, 81))
{
echo($linia);
2 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
echo("
");
}
flock($file, 3);
fclose($file);
Dodawanie nowej linii
Teraz pora na skrypt dodający do pliku linię. Ten będzie ju\ bardziej skomplikowany.
Oprócz dodania nowej lini na końcu, trzeba będzie usunąć pierwszą linię pliku, je\eli stanie się
on zbyt długi:
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,
$lineNr=2; // zapisywanie zaczyna się
// od 2 lini
3 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
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:

Skrypt ten nale\y dopisać pod formularzem w pliku dol.php3. Teraz po załadowaniu
strony dol.php3 pole formularza uaktywnia się automatycznie.
Rozró\nianie u\ytkowników
Chocia\ skrypt działa ju\ całkiem niezle, cię\ko będzie się w nim dogadać z więcej ni\
jedną osobą. Trzeba dodać mo\liwość wpisania imienia. Ale po wpisaniu imienia, trzeba je
gdzieś zapamiętać. Mo\na u\yć 2 sposobów - skorzystać z Cookie, lub ukrytego pola w
formularzu. W tym przypadku lepsze będzie ukryte pole - dzięki takiemu rozwiązaniu
u\ytkownik będzie mógł przy ponownym wejściu na stronę podać inne imię. Ze strony będą te\
mogły skorzystać osoby, których przeglądarki nie obsługują cookies (jest ich ju\ bardzo mało,
ale mo\e jakaś się trafi). Musimy więc stworzyć nowy plik, zawierający formularz do wpisania
imienia. Plik imie.htm nale\y wpisać w pliku index.html jako zródło dolnej ramki (zamiast
dol.php3).
imie.htm
==========


content="text/html; charset=iso-8859-2">



Wpisz swoje imię:
MAXLENGTH=80 NAME=IMIE>
4 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6



Konieczne będzie te\ dokonanie zmian w pliku dol.php3. Na końcu skryptu
obsługującego formularz trzeba dopisać linię:
echo(" 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
Ka\dy u\ytkownik ma ju\ swoje imię, po którym mo\na go odró\nić od innych. Mo\e
jeszcze pozwolić mu na wybór koloru, jakim będzie wyświetlane to imię? Nie będzie z tym
z7byt du\o kłopotu. Wystarczy na końcu skryptu w pliku dol.php3 dodać poni\szy fragment
kodu:
$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("");
A linię wpisującą do pliku nowy tekst zmienić na
fwrite($file,
"
$IMIE>
$TEKST");
5 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
W ten sposób zostanie utworzone pole wyboru, zawierające 4 kolory. Po wysłaniu
formularza domyślnie zaznaczony będzie ostatnio wybrany kolor.
Gotowy skrypt
Ostatecznie chat składa się z następujących plików: index.html, imie.htm, dol.php3,
gora.php3 i chat.txt. W pliku chat.txt jest zapisywana rozmowa. Pozostałe pliki w ostatecznej
formie:
index.html
============


YGREG - Chat

FRAMESPACING=0 BORDER=0>




imie.htm
==========


content="text/html; charset=iso-8859-2">



Wpisz swoje imię: SIZE=80 MAXLENGTH=80 NAME=IMIE>



dol.php3
==========


content="text/html; charset=iso-8859-2">


ACTION=dol.php3 NAME=formularz>
NAME=ACTION VALUE=add>
MAXLENGTH=80 NAME=TEKST>
if($ACTION=="add")
{
$file=fopen("chat.txt", "r");
flock($file, 1);
for($lineNr=1;true;$lineNr++)
6 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
{
$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, "");
fwrite($file, "$IMIE>
$TEKST");
fwrite($file, "\n");
flock($file, 3);
fclose($file);
}
echo(" 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("");
?>

7 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6



gora.php3
===========


content="text/html; charset=iso-8859-2">



CELLSPACING=0 WIDTH=500 HEIGHT=400>


$file=fopen("chat.txt", "r");
flock($file, 1);
while($linia=fgets($file, 81))
{
echo($linia);
echo("
");
}
flock($file, 3);
fclose($file);
?>




Zakończenie
To ju\ koniec tego kursu. Więcej informacji o PHP, jak i gotowe skrypty mo\na znalezć na
stronach zamieszczonych w dziale linki. Du\o ciekawych stron mo\na znalezć na oficjalnej
stronie PHP. Strona ta ma tak\e bogaty zbiór linków.
Grzegorz 'Ygreg' Plebański
ygreg@ygreg.com
8 z 9 2010-02-14 21:08
YGREG.COM - Kurs PHP - Część 6 http://www.ygreg.com/druk.php?php6
http://www.ygreg.com
http://www.ygreg.com
9 z 9 2010-02-14 21:08


Wyszukiwarka

Podobne podstrony:
PHP Część 1
PHP Część 3
PHP Część 2
PHP Część 4
PHP Część 5
czesc rozdzial
czesc 1
Thaumasyt – Część 1 Droga do powszechnie przyjętego zrozumienia
czesc rozdzial
php 2
czesc rozdzial

więcej podobnych podstron