Навигация
  Главня
Статьи
-Сеть
--Безопасность
-Графика
--Photoshop
--Corel Draw
--Illustrator
-ОС
--Windows
--Linux
--Unix
-SEO
-Дизайн
--Web-Design
-Разное
-Программирование
--Delphy
--C/C++
--.NET
--PHP
--Pascal
--Perl
--Visual Basic
--Ассемблер
--Java
--Java Script
--ASP
Книги

Карта Сайта
Наши Сайты
Обратная связь
Новое на сайте
Статьи про любовь

 
Вход
 
Логин
Пароль
 

 
Найти
 

 
Партнёры
 

 
Статистика
 

 
Популярное
 

 
Календарь
 
«    Сентябрь 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

 
Архив
  Сентябрь 2008 (4)
Июнь 2008 (4)
Май 2008 (12)
Апрель 2008 (49)
Март 2008 (51)
Февраль 2008 (73)
Январь 2008 (40)
Декабрь 2007 (58)
Ноябрь 2007 (61)
Октябрь 2007 (51)
Сентябрь 2007 (82)

 
Реклама
  Кабель и провод, провод ШВВП Кулинарные рецепты на Cook-room.com - с пошаговыми фото

 
Казино
 

Интернет-казино Grand Casino произвело фурор в игорном мире. Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее. Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.

   

Статьи » Программирование » PHP » Форум без базы данных за 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.' не найден';
?>

Все файлы работают, было проверено.
Вот и все что я хотел поведать, спасибо за внимание.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » Программирование » PHP » Форум без базы данных за 15 минут
Статьи по теме:
  • Скрипт подсчета кликов
  • Голосование на базе
  • Многоязычность в РНР
  • Графический счётчик на PHP
  • FAQ по разделу CGI интерфейс
  •  (голосов: 0)
    Просмотров: 65535 :: Комментарии: (0) :: :: Напечатать

    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
     
    Design by PODPOLE