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


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


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


Форум без базы данных за 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...
Если Windows не может корректно завершить работу, в большинстве случаев это связано либо с системой управления электропитанием, либо с неправильно работающими драйверами. Могут существовать и...
Подробнее...
FAQ по файлу подкачки
F.A.Q. по файлу подкачки.Ответы на вопросы:-Что такое файл подкачки? -Как определить требуемый объем swap-файла? -Где располагать файл подкачки? -Надо-ли фиксировать максимальный размер файла...
Подробнее...
Диски, разделы, буквы...
Вот, не кажется мне MS Windows такой дружественной, как утверждают её пользователи. Ничего удивительного, впрочем: сам я её пользователем практически не являюсь, и сталкиваюсь с ней...
Подробнее...
Стоит ли самому собирать...
Недавно в одном уважаемом компьютерном издании довелось прочитать в статью о том, как самому собрать себе компьютер. В этой статье был ряд полезных советов на тему выбора монитора, материнской...
Подробнее...
Как правильно создать...
Наверняка, вам часто приходится закрывать «непрошеные» окна броузера, открывающиеся во время навигации по сети. Большинство пользователей (и я в том числе) ненавидят всплывающие окна, которые...
Подробнее...
Откат обновлений драйверов...
Обновляя драйвер, чтобы решить существующие проблемы или улучшить работу устройства, не стоит забывать, что установка нового драйвера может привести к неожиданным результатам или воспрепятствовать...
Подробнее...
Обновление контроллеров...
АннотацияВ статье рассматриваются обновления контроллеров домена Windows 2000 до Windows Server 2003 и добавления контроллеров домена под управлением Windows Server 2003 в домен Windows...
Подробнее...
Основные требования к...
Простота логотипа, товарного знака предполагает отсутствие в нем большого количества переплетающихся, сложных линий, мелких подробных деталей и т.п. Она облегчает восприятие и запоминание знака, а...
Подробнее...