2. Предположем Это наша гостевая книга:
Код:
<?
echo "<html><head><title>Гостевая книга</title></head><body>";
echo "<h1>Гостевая книга</h1>";
$file_gb="./gbook/gb.txt"; *****// это файл гостевой книги
$file_tmp="./gbook/gb_tmp.txt"; *****// это временный файл, используемый сценарием
$Max=50; * *// максимальное число выводимых сообщений
// Функция для вывода файла gb.txt
function view()
{
$Messages=file('./gbook/gb.txt');
echo "
<table width=100%>"; $i=0;
foreach($Messages as $v)
{
$i++;
if ($i % 2 == 0) echo "<tr><td>$v</td></tr>";
else echo "<tr><td bgcolor=gray>$v</td></tr>";
// Если номер сообщения = 50 (то есть уже выведено 50 сообщений), прерываем цикл
if ($i==$Max) break;
}
}
if (!isset($Post)) {
// Выводим форму для ввода нового сообщения
echo "<table width=100% border=1>";
echo "<tr><td><h2>Новое сообщение</h2><form method=post action=$SCRIPT_NAME>";
echo " Email: <input type=text name=email>";
echo " Сообщение <input type=text name=mes> <input type=submit name=Post></td></tr>";
echo "</table></form>";
// Выводим сообщения
view();
}
else
{
if(file_exists($file_tmp)) die("fatal error, call administrator!");
// Добавляем новое сообщение в начало файла
if(copy($file_gb, $file_tmp))
{
if($w=fopen($file_gb,"w"))
{
*flock($w,2); *// блокируем доступ к основному файлу
*// $mes - это сообщение пользователя
*// перед внесением сообщения в файл удалим из него HTML-теги
// strip_tags($mes);
*fwrite($w,"[".date("d.m.Y H:i:s").$email."] ". strip_tags($mes)."\n");
*if(!$r=fopen($file_tmp,"r")) die("can't open file");
*flock($r,1); *// блокируем доступ к временному файлу
*while($mes=fgets($r,10240))
*{
* fputs($w,$mes);
*}
*// Снимаем блокировку и закрываем файлы
*flock($r,3);
*fclose($r);
*flock($w,3);
*fclose($w);
*// Удаляем временный файл
*unlink($file_tmp);
}
}
echo "Сообщение успешно записано в файл";
// Выводим гостевую книгу
view();
}
?>
Обратите внимание на функцию View():
Код:
function view()
{
$Messages=file('./gbook/gb.txt');
echo "
<table width=100%>"; $i=0;
foreach($Messages as $v)
{
$i++;
if ($i % 2 == 0) echo "<tr><td>$v</td></tr>";
else echo "<tr><td bgcolor=gray>$v</td></tr>";
3. С помощью библиотеки GD. Вот пример картинки для защиты от спам-ботов.
Код:
<?
****/*
*Защита От спам-Ботов.
*****/
****//
****// KeyImage script
****// версия 1.0 от 20.12.05
****//
****list($msec, $sec)=explode(chr(32), microtime());
****$mTimeStart=$sec+$msec;
****$code=substr(md5(sha1(strtok($_SERVER['QUERY_STRING'], '|'))), 8, 6);
****$im=imagecreatetruecolor(406, 16);
****mt_srand((double)microtime()*100000000000);
****$r=mt_rand(130, 185);
****$g=mt_rand(130, 185);
****$b=mt_rand(130, 185); $k=0;
****for ($i=0; $i<=203; $i++) {
*$k++; if ($k==4) $k=1;
*if ($k==1) $r++;
*if ($k==2) $g++;
*if ($k==3) $b++;
*$c[$i]=imagecolorallocate($im, $r, $g, $b);
*imageline($im, $i, 0, $i, 16, $c[$i]);
****}
****$r1=$r; $g1=$g; $b1=$b;
****for ($i=203; $i<=406; $i++) {
*$k++; if ($k==4) $k=1;
*if ($k==1) $r--;
*if ($k==2) $g--;
*if ($k==3) $b--;
*$c[$i]=imagecolorallocate($im, $r, $g, $b);
*imageline($im, $i, 0, $i, 16, $c[$i]);
****}
****$r=255-$r1;
****$g=255-$g1;
****$b=255-$b1;
****$w=imagecolorallocate($im, $r, $g, $b); $k=0;
****$white=imagecolorallocate($im, 255, 255, 255);
****imageline($im, 0, 8, 406, 8, $white);
****$k=0;
****for ($i=33+mt_rand(-10, 10); $i<400; $i+=(66+mt_rand(-10, 10))) {
*imagestring($im, 3, $i, 1, substr($code, $k, 1), $w);
*$k++;
****}
****imagepng($im);
****imagedestroy($im);
?>