Jednoduchý chat bez SQL - ukázka zdrojového kódu zdrojový kód

<-- index.php -->

<?
require "./const.php";

ClearStatCache(); // vymaz vyrovnavaciu pamet

if(!File_Exists($subor)) // ak subor neexistuje - vytvor ho
    
FClose(FOpen($subor,"w"));
?>
<html>
<head>
    <title>Jednoduchý "chat"</title>
</head>

<frameset rows="100,*,20">
    <frameset cols="34%,*">
        <frame src="head.php?oldSize=<?ClearStatCache(); echo FileSize($subor)?>" name="head">
        <frame src="form.php?name=&sprava=" name="form">
    </frameset>
    <frame src="show.php" name="show">
</frameset>

</html>


<-- show.php -->

<?
Header
("Pragma: no-cache");
Header("Cache-control: no-cache");
Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT");
?>
<html>
<head>
    <title>Zobrazenie odkazov</title>
</head>
<body bgcolor="#cccccc">
<p style="font-family: 'ARIAL CE', 'HELVETICA CE','ARIAL','HELVETICA'; font-size: 12px;">
<?
require "./const.php"// nacitaj "konstanty"

$fp FOpen($subor,"r"); // otvor subor na citanie

ClearStatCache(); // vymaz vyrovnavaciu pamet
$velkostSuboru FileSize($subor); // zisti velkost suboru

if($velkostSuboru $maxOdkazByte// uz mam v datovom subore viac sprav ako maxPocetOdkaz ?
    
FSeek($fp,$velkostSuboru $maxOdkazByte); // zmen poziciu na poslednych maxPocetOdkaz

FPassThru($fp); // vypis suboru od aktualnej pozicie & zatvor subor
?>
</p>
</body>
</html>

<-- form -->

<html>
<!-- Ak nie je vyplnene meno - zameraj nan kurzor. Inak zameraj na spravu. -->
<body bgcolor="#666666" onLoad="if(document.f.meno.value.length) document.f.sprava.focus(); else document.f.meno.focus();">
<?
require "./const.php";

if(
$sprava != ""): // ak sprava nieco obsahuje

    
if($meno == "")
        
$meno "anonym"// ak uzivatel nezadal meno bude "anonym"
    
else
        
$meno StripSlashes(StrTr($meno,"<>&","***")); // odstran lomitka spred citlivych znakov a nahradi niektore nebezpecne znaky

    
$sprava StripSlashes(StrTr($sprava,"<>&","***")); // odstran lomitka spred citlivych znakov a nahradi niektore nebezpecne znaky

    
$fp fopen($subor,"a"); // otvor subor pre doplnenie
    
fputs($fp,sprintf($format,$meno,$sprava)); // naformatuj odkaz a zapis ho do suboru
    
fclose($fp); // zatvor subor
    
?>
        <script language="JavaScript">
        parent.frames["show"].location = "show.php" // bola pridana sprava, obnov zobrazenie odkazov
        </script>
    <?
    
endif;
?>
<form method=post name="f">
<table border="0" align="center">
    <tr align="center">
        <td>meno</td>
        <td>správa</td>
    </tr>
    <tr align="center" valign="baseline">
        <td><input type="text" name="meno" size="8" maxlength="<?echo $maxDlzkaMeno?>" value="<?echo $meno?>"></td>
        <td><input type="text" name="sprava" size="40" maxlength="<?echo $maxDlzkaSprava?>"> <input type=submit value=" Ok "></td>
    </tr>
</table>
</form>
</body>
</html>


<-- head.php -->

<?
Header
("Pragma: no-cache");
Header("Cache-control: no-cache");
Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT");
?>
<html>
<head>
    <title>Kontrola nových odkazov</title>
    <style type="text/css">
        input {
            background-color: #666666;
            color: #000000;
            border-left: 0px;
            border-right: 0px;
            border-top: 0px;
            border-bottom: 0px;
        }
    </style>
</head>
<body bgcolor="#666666">
<?
require "./const.php";

ClearStatCache(); // vymaz vyrovnavaciu pamet
$newSize FileSize($subor); // zisti velkost suboru

if($newSize != $oldSize): // pribudol novy odkaz ?
?>
    <script language="JavaScript">
    parent.frames["show"].location = "show.php" // obnov ramec "show"
    </script>
<?
endif;
?>
<form name="form">
Kontrola nastane za <input type="text" name="timer" size="3" readonly> s
</form>

<script language="JavaScript">
var t = 10 // konstanta v sekundach znovunacitania stranky

function Timer(){
    document.form.timer.value = t // vypis do formulara
    if(!t) // uplynula doba casovaca
        parent.frames["head"].location = "head.php?oldSize=<?echo $newSize?>"
    else{
        t--
        setTimeout("Timer()",999) // spusti opat o 1 sekundu
        }
    }
Timer() // spustenie odpocitavania
</script>

</body>
</html>

<-- const.php -->

<?
$subor 
"./data.txt"// cesta k suboru, kde sa budu ukladat spravy

$maxDlzkaMeno 8// maximalna dlzka retazca "meno"
$maxDlzkaSprava 80// maximalna dlzka retazca "sprava"

$maxPocetOdkaz 15// kolko poslednych odkazov sa ma zobrazovat ?

// format zobrazenia spravy
$format sprintf("%s <b>%%%d.%ds: </b>%%-%d.%ds<br>",Date("d.m.Y H:i:s"),$maxDlzkaMeno,$maxDlzkaMeno,$maxDlzkaSprava,$maxDlzkaSprava);

// kolko bajtov obsahuje maxPocetOdkaz ?
$maxOdkazByte StrLen(sprintf($format,"","")) * $maxPocetOdkaz;
?>
Vložil/Poslal/Autor: Admin
Funkčnost: běží na straně serveru, nemělo by záležet na typu prohlížeče
zavřít okno | jít na hlavní stránku JakNaWeb.com