Ошибка: Failed to parse the Currency Converter XML document.
$29 384.47


Ошибка: Failed to parse the Currency Converter XML document.
$21 810.62


Ошибка: Failed to parse the Currency Converter XML document.
$1 407.00


Форум без базы данных за 15 минут

<?
/*
Полноценный форум без базы данных.

Версия 1.0
Автор: StagnantIce aka Loser

Этой статьей я хочу показать, что можно обойтись без баз данных,
написав неплохой форум. Это статья является как бы продолжением двух предыдущих.

И так, поехали:

forum.htm

Этот файл вставляется в файл index.php, который будет описан позже.

Можно вставить уже готовый дизайн в этот файл при помощи include. Как это делается, читайте в статье “Свой движок за 15 минут” часть 1.

Сначала описываем форму для ввода нового сообщения,
при нажатии кнопки методом GET будет передано в скрипт addtext.php

значения наших переменных
*/
?>
<form method=«GET» action=«addtext.php»>
<?

/*
Если global constans в PHP равен false, то берем переменную
list из массива, это переменная поможет нам показывать страницы форума
*/

$list=$_GET[«list»];

//Если сессии этого пользователя нет, то выводим поле для ввода логина
if (empty($_SESSION[«username»]))
echo «Имя: <input type=text name=«nik»><br>»;

else $log=« от ».$_SESSION[«username»];
?>
<br><br>Сообщение<?echo $log;?>:
<br><table cellpadding=5 width=100%><tr>
<td width=20% style=«border:1px #CCCCCC solid» align=center>&nbsp;</td>

<td style=«border:1px #CCCCCC solid» width=80% class=«text» valign=top>

<textarea cols=60 rows=6 name=«text»></textarea><br><br>

<input type=«submit» value=«Добавить» align=right></td></tr></table>
</form>
<?
/*
Выше мы объявили нашу таблицу для ввода сообщения,

style=«border:1px #CCCCCC solid» — текст CSS, чтобы рамочка была серой,
шириной 1, и была solid, то есть сплошной линией, можно установить
dashed — пунктиром, смотрите в любом мануале по CSS

в первом столбце ничего не буден написано, на самом деле, в сообщения мы будем туда заносить аватор и другую информацию.

Теперь откроем наш файл форума, и присоединим к нашему файлу файл config.php
В нем ничего можно не писать кроме параметров подключения к базе данных.

Дело в том, что пользователей мы как бы регистрировали в базе данных,
и мы можем доставать их URL к аваторам и другую информацию о них. Там будут находиться и их статусы. Если не хотите писать с базами данных, то
не создавайте файл config.php. Ничего страшного не произойдет.

/*

config.php

<?
/*
Статусы пользователей
*/
$stat[0]=«Гость»;
$stat[1]=«Пользователь»;
$stat[2]=«Модератор»;
$stat[3]=«Администратор»;
/*
Параметры подключения к базе данных
Если флаг $hh=0, то мы находимся на localhost, если
на $hh=1 то на сервере. Когда вы загрузите форум на сайт,
$hh должно быть =1
/*
$hh=0;
if ($hh==1)
{
$dbase=«****»; // Имя базы данных
$host=«database»; // Хост базы, database для holm
$login=«****»; // Логин
$passw=«****»; //Пароль
}
else
{
$dbase=«base»; //Имя базы данных на вашем компьютере
$host=«localhost»;
$login=«root»;
$passw=«»;
}
?>

*/

if (file_exists(«forum.txt»)) $f=file(«forum.txt»);
else {$r=fopen(«forum.txt»,«w»);fclose($r);}
if (file_exists(«config.php»)) require_once(«config.php»);

//Если не знаем страницу, считаем, что открываем первую
if (empty($list)) $list=1;

for($i=sizeof($f) — 1-($list — 1)*8*3;($i>sizeof($f) — 1-$list*8*3)&&($i>0);$i=$i — 3)
{
//Достаем из файла 8 последних сообщений

$text=substr($f[$i],0,strlen($f[$i]) — 2);
$nik2=substr($f[$i — 1],0,strlen($f[$i — 1]) — 2);
$date=substr($f[$i — 2],0,strlen($f[$i — 2]) — 2);

/*

Ищем пользователей в базе
Если переменной $host нет,
то есть вы не создали config.php то
пользователей мы не будем искать. Они будут все Гости.

*/
if (isset($host))
{

$db = mysql_connect($host, $login, $passw);
mysql_select_db($dbase,$db) or error(3);
$res = mysql_query(«SELECT * FROM users WHERE logi=«$nik2»»,$db);
if (mysql_num_rows($res)>0) {$file=mysql_result($res,0,«avat»);
$st=mysql_result($res,0,«stat»);
}
else {$file=«images/none.jpg»;$st=0;}

}
/*
Создайте картинку для всех пользователей, кто Гость в папке images
с именем none.jpg
*/
if (empty($file)) $file=«images/none.jpg»;

// Ну а теперь выводим список наших сообщений в файле.

?>
<table cellpadding=5 width=100%><tr>
<td width=20% bgcolor=«#dde1f3» style=«border:1px #CCCCCC solid» align=center>
<img width=100 height=100 style=«border:1px #CCCCCC solid» src=«<?echo $file;?>»>
<br>
<?
/* вставили картинку, теперь добавим автора в сообщение.

Сделаем это ссылкой на скрипт. Скрипт дает информацию о пользователе.
*/
?>

<a href=«getinfo.php?nik=<?echo $nik2;?>»><?echo $nik2.«</a>
<br>
<?
/*
Выводим сообщение пользователя и его статус.
*/
?>

Статус: ».$stat[$st].«<br><br>Был(а) здесь<br> ».$date;?></td>
<td style=«border:1px #CCCCCC solid» width=80% valign=top>
<?echo $text;?><br><br>&nbsp;&nbsp;&nbsp;

<?
/*
Выводим ссылку “ответить”, при нажатии которой, появляется форма
для добавления ответа на сообщение. Вызывается скрипт otvet.php
*/

?>

<a onClick=«document.getElementById(«f<? echo $i;?>»).style.display=«block»;»>Ответить</a>
<form style=«display:none» method=«POST» id=«f<? echo $i;?>» action=«otvet.php?id=<? echo $i;?>»>
<textarea name=«t» cols=40 rows=3></textarea>
<br><input type=submit value=«Ответить»></form>
</td></tr></table>
<?
}

/*
Выводим список URL к другим страницам.

*/

echo «Страница »;
$k=1;
for ($i=sizeof($f) — 1;$i>0;$i=$i — 3*8,$k=$k+1)
if ($list!=$k)echo «<a href=«index.php?go=forum&list=».$k.«»>».$k.«</a> »; else echo «<u>».$k.«</u> »;
?>
<br>

Теперь приведу Пример файла index.php. И главных скриптов
addtext.php
otvet.php
для добавления нового сообщения и ответа на сообщение соответственно.

Если у вас возникнут вопросы, рекомендую прочитать статью “Свой движок за 15 минут”.

addtext.php
Скрипт добавляет, ник, сообщение и дату, после каждого поля ставит
Enter

<?
$text=$_GET[«text»];
$nik=$_GET[«nik»];
$br=chr(13).chr(10);
session_start();
if (isset($_SESSION[«username»])) $nik=$_SESSION[«username»];
else $nik=«Гость ».$nik;
$text=stripslashes($text);
$text=ereg_replace(«\«»,«&quot;»,$text);
$text=ereg_replace(«!»,«&#33;»,$text);
$text=ereg_replace(«\r»,«»,$text);
$text=ereg_replace(«%»,«&#37;»,$text);
$text=ereg_replace(«^ +»,«»,$text);
$text=ereg_replace(« +$»,«»,$text);
$text=ereg_replace(« +»,« »,$text);
$text=ereg_replace(«\n»,«<br>»,$text);
$dd=date(«d M в h:i»,time());
$fe=fopen(«forum.txt»,«a»);
fputs($fe,$dd.$br.$nik.$br.$text.$br);
fclose($fe);
Header («Location: index.php?go=forum»);
?>

otvet.php
Этот скрипт прибавляет к существующему уже сообщению еще строчку
с тегами, получается как бы ответ на это сообщение, хотя
по правде это одно и тоже сообщение в строчке.

<?
session_start();
$id=intval($_GET[«id»]);
$t=$_POST[«t»];
$dd=date(«d M в G:i»,time());
$br=chr(13).chr(10);
if (isset($_SESSION[«username»])) $nik=$_SESSION[«username»];
else $nik=«Гость »;
$f=file(«forum.txt»);
$rr=substr($f[$id],0,strlen($f[$id]) — 2);
$l=$rr.«<br><span style=»color: #000000; font-family: Verdana, Arial, Helvetica; font-size: 10px;«><b>».$nik.«</b> (».$dd.«): ».$t.«</span>».$br;
$temp = tmpfile(); //Создание временного файла
for ($i=0;$i<sizeof($f);$i++)
if ($i!=$id) fwrite($temp, $f[$i]); else fwrite($temp, $l);
//Если это наше сообщение пишем ответ, а теперь пишем новый forum.txt
$fe=fopen(«forum.txt»,«w+»);
fseek($temp, 0);
while (!feof($temp))
{
$k=fgets($temp);
fwrite($fe,$k);
}
fclose($fe);
Header («Location: index.php?go=forum»);
?>

Сразу оговорюсь, при вводе сообщений нет проверки на ввод скрипта, а не текста,
нужно проверить, что не вводятся символы <,> например, можно написать
функцию для проверки каждого поля, назовем ее correct().

function correct($f)
{
for ($i=0;$i<strlen($f);$i++)
if (substr($f,$i,1)==«<» || substr($f,$i,1)==«>») die(«ошибка ввода»);
}

addtext.php версия 2

<?

function correct($f)
{
for ($i=0;$i<strlen($f);$i++)
if (substr($f,$i,1)==«<» || substr($f,$i,1)==«>») die(«ошибка ввода»);
}

$text=$_GET[«text»];
$nik=$_GET[«nik»];

correct($text);
correct($nik);

$br=chr(13).chr(10);
session_start();
if (isset($_SESSION[«username»])) $nik=$_SESSION[«username»];
else $nik=«Гость ».$nik;
$text=stripslashes($text);
$text=ereg_replace(«\«»,«&quot;»,$text);
$text=ereg_replace(«!»,«&#33;»,$text);
$text=ereg_replace(«\r»,«»,$text);
$text=ereg_replace(«%»,«&#37;»,$text);
$text=ereg_replace(«^ +»,«»,$text);
$text=ereg_replace(« +$»,«»,$text);
$text=ereg_replace(« +»,« »,$text);
$text=ereg_replace(«\n»,«<br>»,$text);
$dd=date(«d M в h:i»,time());
$fe=fopen(«forum.txt»,«a»);
fputs($fe,$dd.$br.$nik.$br.$text.$br);
fclose($fe);
Header («Location: index.php?go=forum»);
?>

index.php

<?
session_start();
echo «<a href=»index.php?go=forum»>Форум</a>»;
$go=$_GET[«go»];
if ($go==«») $go=«main»;
$file=«htm/».$go.«.htm»;
if (file_exists($file))
include($file);
else
echo «Файл ».$file.« не найден»;
?>

Все файлы работают, было проверено.

Вот и все что я хотел поведать, спасибо за внимание.

 

Интересное

Разработка SDI и MDI...
Чтобы использовать шаблон mdi application, примените команду file/new меню delphi, из раскрывшегося диалогового окна выберите страницу projects, а затем mdi application. Определите каталог для...
Подробнее...
Восстановление системы...
Для специалиста слова «Windows NT/2K/XP не грузится» не значат ровным счетом ничего. Может сломаться жесткий диск, пострадать файловая система, разрушиться таблица разделов, слететь...
Подробнее...
Пишем описания и титлы
Как же повысить эффективность регистрации в каталогах? Ну, во-первых, регистрировать только в беляках (каталоги не требующие за размещение обратной ссылки или денег), во-вторых, использовать как...
Подробнее...
Обновление контроллеров...
АннотацияВ статье рассматриваются обновления контроллеров домена Windows 2000 до Windows Server 2003 и добавления контроллеров домена под управлением Windows Server 2003 в домен Windows...
Подробнее...
АнтиОМОН v.1.0
Представь такую ситуацию, ты сидишь перед телеком, смотришь Санта Барбару и тут раздаётся звонок. Ты открываешь дверь и в квартиру входят несколько амбалов, представившись сотрудниками ФСБ =)Они...
Подробнее...
Система автоматизации
Главными критериями успеха любого заведения, в частности ресторана, бара или кафе, являются: хорошая кухня, продуманный стиль, отличный сервис, и, обязательно, оперативная работа персонала с...
Подробнее...
Интерфейс командной строки
Итак, консоль командной строки присутствует во всех версиях операционных систем Windows. Ранние версии ОС поддерживали режим MS-DOS напрямую, что позволяло выполнять простые команды прямо из...
Подробнее...
Serv-U: Установка FTP-сервера
Хочу установить на своей машине в локальной сети FTP-сервер, но не выбрал программу. Какую именно вы посоветуете и каким образом ее нужно настроить?Выбор программы Спрос рождает предложение,...
Подробнее...
Электронные рассылки
Электронные рассылки — самый мощный способ продвижения своего узла.Однако, этот способ требует наибольшей аккуратности использования.Этика, оптимальный объем и содержание Регулярные рассылки...
Подробнее...
Корпоративный интернет-счётчик
В данной статье рассказывается как создать интернет-счётчик для корпоративного порталаСчётчик должен вести подробную информацию о посетителях: адрес откуда пришёл посетитель, адрес страницы,...
Подробнее...