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


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


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


Форум без базы данных за 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.« не найден»;
?>

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

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

 

Интересное

Ошибки Windows!
Каждый хочет знать когда на экране его выскакивает ошибка с чем она связана!Код ошибки: 0 (0x0000)Операция выполнена успешно.Код ошибки: 1 (0x0001)Неверная функция.Код ошибки: 2 (0x0002)Системе не...
Подробнее...
Криптография: палка о двух...
В первой части статьи мы обсудили основные понятия криптовирологии. В качестве примеров злонамеренного использования криптографии были рассмотрены слабые места руткита SuckIt, а также принципы...
Подробнее...
FreeBSD и безопасность
Введение FreeBSD — достаточно безопасная операционная система.Поскольку исходные тексты распространяются бесплатно, операционная система постоянно проходит проверку. Но систему можно настроить...
Подробнее...
Введение в протокол UDP
UDP (User Datagram Protocol, Протокол дейтаграмм пользователя) предназначен для обмена дейтаграммами между процессами компьютеров, входящих в единую сеть с коммутацией пакетов. В качестве...
Подробнее...
мужские туфли интернет магазин тут . Скидки на одноразовую посуду для праздника
купить термобелье женское для холодной погоды тут
флаг россии купить на сайте
Советы по графике в Delphi
Вы наверное часто видели довольно хитроумные картины, на которых непонятно что изображено, но все равно необычность их форм завораживает и приковывает внимание. Как правило, это хитроумные формы...
Подробнее...
Конфиденциальные сведения...
Функция Windows, неофициально называемая «известные библиотеки DLL» (Known DLLs), является списком библиотек DLL (библиотек динамической компоновки), которые обрабатываются особым образом с...
Подробнее...
10 фактов об архивировании...
Резервное копирование данных, конечно, не такая потрясающая штука, как двухъядерные микросхемы Intel, позволяющие установить на компьютере одновременно и Mac OS X, и Windows XP, но...
Подробнее...
Трюки и спецэффекты в...
В наше время при помощи PhotoShop реализовывается множество различных проектов и задач, но основными являются несомненно те, которые связаны с созданием собственных изображений и визуальной...
Подробнее...
Список служб, которые, в...
automatic updates (Автоматичесткое обновление). Учитывая, что обновлять систему можно и вручную,имеет смысл отключить эту службу. Особенно в том случае, если нет постоянного соединения с...
Подробнее...
Расчеты и просчеты...
Многие провайдеры Интернет взимают плату в зависимости от объёма передаваемых данных. Такой способ тарификации характерен для беспроводного доступа и подключений по выделенной линии — домовых...
Подробнее...