WebDeveloper
 g³ówna | forum manual | skrypty |  artyku³y |  projekty | porady |  zasoby |  linki 
dzia³y
  •  manual PHP
  •  skrypty PHP
  •  artyku³y
  •  projekty
  •  porady
  •  zasoby
  •  linki
  •  
    forum
  •  php
  •  apache
  •  mysql
  •  postgresql
  •  faq php
  •  pomocnik php
  •  
    news
  • Porcjowanie wyników zapytania
  • Kartki Internetowe
  • PHP + MySQL + Windows 98
  • Bezpieczne uploadowanie plików
  • Przegl±danie obrazków z bazy PostgreSql.
  • Co to jest WebDeveloper?
  • Instalujemy serwer baz danych !
  • Sesje w PHP4 !
  • Dodaj poradê !!!
  • Zastosowano... PHP !
  • redakcja

    Je¶li masz ciekawe informacje odno¶nie PHP, skrypty, porady, linki itp. lub chcia³by¶ wspó³tworzyæ serwis PHP.zone.pl daj nam znaæ na email !



    dodaj poradê !


    Powered by:
    PHP
    Apache
    MySql
    Linux

    users online: 8

    Artyku³y

    Kurs PHP (5)
    autor: Grzegorz Plebañski

    Krótki kurs jêzyka PHP.

    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±æ 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:
    =============
    <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ê.


    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 <BR>:
    <?
    $file=fopen("chat.txt", "r");
    flock($file, 1);

    while($linia=fgets($file, 81))
    {
    echo($linia);
    echo("<BR>");
    }

    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, 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.


    Rozró¿nianie u¿ytkowników

    Chocia¿ skrypt dzia³a ju¿ ca³kiem nie¼le, 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 ¼ród³o dolnej ramki (zamiast dol.php3).
    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

    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 zbyt 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("<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.


    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
    ============
    <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>



    (C)opyright 1999-2000 by Grzegorz Plebañski
    ygreg@and.pl
    http://ygreg.and.pl





    komentarze | artyku³y






    kontakt

    autor:

    Hubert Mierzwiak

    wspó³praca:

    Piotr Karolak

    Chcesz prowadziæ swój dzia³ tematyczny typu XML, SQL, admin, JavaScript, itp?
    Napisz do nas !
     
    skrypty
  • designer.zip
  • vipAuth.tgz
  • phpCenzura.tgz
  • vip_php.tgz
  • pomocnik_light
  • ankieta
    Co s±dzisz o stworzeniu FAQ PHP?
    super!
    po co?

    poprzednie

    newsletter

    wpisz swój email i wci¶nij Enter

    linuxnews.pl
  • KRRiTV stra¿nikiem!?
  • Dzisiejsze zebranie...
  • Felieton w warunkach ekstremalnych
  • Nexidion Designer
  • Solaris OpenSource
  • KDE 2.0.1
  • Jest ju¿ nowy Debian...
  • Tydzieñ min±³...




  • Manual | Skrypty | Artyku³y | Projekty
    Porady | Zasoby | Linki
    G³ówna | Forum

    Copyright 2000 Hubert Mierzwiak