Пишем гостевую на php

Итак, в этой статье я расскажу вам, как можно буквально за 10 минут создать простенькую файловую гостевую на php. Цель статьи не написать гостевую, а рассказать новичкам, как устроены файловые гостевые/форумы. Данная статья посвящается новичкам в php, бегиннеры не найдут здесь ничего нового. Итак, приступаем.
Каждое сообщение в гостевой должно где-то храниться. На сегодняшний день есть два способа хранения данных:в базах данных или в файлах. Структура каждой гостевой проста:когда пользователь вводит сообщение, php-скрипт обрабатывает его и записывает в файл. Пользователь, добавив сообщение, возвращается на главную страницу и видит своё творение, выведенное php-скриптом из файла. Примерно так работает самая примитивная гостевая. Теперь мы попробуем сами создать такую гостевую.
Сначала мы создаём отдельную папку для гостевой, в ней файлы “index.php”, “addmsg.php” и пустую папку “data”.
В index.php пишете такой код:
<br />
    &lt;html><br />
    &lt;head>&lt;title>ГавноГостевая v.1&lt;/title>&lt;/head><br />
    &lt;body><br />
    &lt;form method="post" action="addmsg.php"><br />
    Имя: &lt;input type="text" name="login" id="login" size="20">&lt;br><br />
    E-mail: &lt;input type="text" name="email" id="email" size="20">&lt;br><br />
    Сообщение: &lt;textarea name="msg" id="msg">&lt;/textarea>&lt;br><br />
    &lt;input type="submit" value="Добавить"><br />
    &lt;/form><br />
    &lt;/body><br />
    &lt;/html><br />
    

Здесь, я думаю, всё понятно:мы создаём форму ввода сообщения
Дальше мы должны написать скрипт, который добавляет сообщение, а потом, который выводит. Пишем в addmsg.php:
<br />
    &lt;?php<br />
    $msg = htmlspecialchars($_POST['msg']); // Заменяем html-теги на безопасные<br />
    $login = htmlspecialchars($_POST['login']);<br />
    $email = htmlspecialchars($_POST['email']);<br />
    <br />
    if (strlen($login) &lt; 2) exit ("Логин меньше 2 сиволов!"); <br />
    /* Если логин меньше 2 символов, то останавливаем скрипт*/<br />
    <br />
    if (!eregi("([[:alnum:]._-]+@[[:alnum:]-]+(.[[:alnum:]-]+)*(?([[:alnum:]?+&amp;%]*)?)?)", $email) and strlen($email)) exit ("Вы знаете что такое e-mail?"); <br />
    /* Проверка мыла */<br />
    <br />
    if (strlen($msg) &lt; 5) exit ("Сообщение меньше 5 сиволов!"); <br />
    /* Если сообщение меньше 5 символов, то останавливаем скрипт */?><br />
    

Здесь мы проверяем правильность ввода e-mail, длину логина и сообщения. А как теперь записать всё это вместе:Логин, мыльницу и сообщение? Нужно соединить их вместе в одно сообщение. А как сделать, чтобы потом можно было из этого сообщения извлечь всё это? Никак. Нужно, когда мы связываем данные, поставить перед ними разделитель, например “##” или “::”, а при выведении данных по этому разделителю их разбить. Например, возьмём “::” Но и в этом примере допущена ошибка. Данные то мы разделили, а сообщения нет. Тогда мы возьмём ещё один разделитель:разделитель сообщений, например “;;”.
<br />
    &lt;?php<br />
    $msg = str_replace ("rn", "&lt;br>", $msg);<br />
    if (!is_file("data/db.php")) fopen("data/db.php", "w"); // Проверяем наличие файла<br />
    $file = @file_get_contents("data/db.php"); // Читаем данные<br />
    $fd = @fopen("data/db.php", "w");<br />
    @flock ($fd, LOCK_EX); // Запираем файл<br />
    $separator = "::"; // Разделитель данных в сообщении<br />
    $separator2 = ";;"; // Разделитель сообщений в файле<br />
    $to = $login.$separator.$email.$separator.$msg.$separator2; // Связываем данные<br />
    @fwrite ($fd, $to); // Записываем данные<br />
    @fwrite ($fd, $file); // Записываем ранние сообщения.<br />
    @flock ($fd, LOCK_UN); // Отпираем файл<br />
    @fclose ($fd); // Закрываем файл<br />
    header ("location: index.php"); // Уходим на главную<br />
    ?><br />
    

В первой строчке мы заменяем символ перевода строки на html-эквалитент
.
Во второй мы проверяем наличие базы данных, если её нету, то создаём её.
В третьей строчке мы получаем данные из базы данных, т.е. ранние сообщения
Четвёртая строчка открывает базу данных, т.е. файл, предварительно затерев его.
Функцией flock($fd, LOCK_UN) мы запираем файл, чтобы никто не мог в него ничего записать, например если два пользователя вместе добавят сообщение, то в результате уничтожатся все данные нашей “базы”.
Далее мы обьявляем разделители ($separator и $separator2).
В переменную $to мы помещаем склеенное сообщение, а в следующей строчке мы записываем её в базу. Далее мы записываем ранние сообщения, т.е. сообщения, которые добавили ранее. Потом мы отпираем файл, закрываем его и уходим на главную страницу. Вас не смущали “собаки” перед функциями? Они обозначают, что если будет сбой, не выдать ошибку. У меня нет возможностей здесь предотвратить все ошибки, экспериментируйте сами. Все! Сообщение добавлено в базу.
Теперь его надо вывести. Единственная проблема:если сообщений много, то страница грузится долго. Тогда нужно разбить сообщения на части во время их вывода. И создать страничную навигацию.
Приступаем. В файл “index.php” после тега “” добавьте следующий код:(разберём его позже)
<br />
    &lt;?php<br />
    if ($_GET['start'] &lt; 0 ||!$_GET['start']) $_GET['start'] = 0;<br />
    $start = $_GET['start'];<br />
    if (!is_file("data/db.php")) fopen("data/db.php", "w"); // Проверяем наличие файла<br />
    $file = @file_get_contents("data/db.php");<br />
    $separator = "::"; // Разделитель данных в сообщении<br />
    $separator2 = ";;"; // Разделитель сообщений в файле<br />
    $messages = explode ($separator2, $file); // Разбиваем на сообщения<br />
    $pnumber = 10; // Сообщений на страницу<br />
    <br />
    $cnmessages = 0;<br />
    for ($i = 0; $i &lt; count ($messages); $i++)<br />
    {<br />
    $tmp = explode ($separator, $messages[$i]);<br />
    if (trim($tmp[2])!= "") $cnmessages++;<br />
    }<br />
    <br />
    $pages = ceil ($cnmessages / $pnumber);<br />
    <br />
    for ($i = $start; $i &lt; $start + $pnumber; $i++)<br />
    {<br />
    list ($login, $email, $msg) = explode ($separator, $messages[$i]);<br />
    if ($msg!= "") echo "&lt;a href="mailto:".trim($email)."">".trim($login)."&lt;/a>&lt;br>".$msg."&lt;br>&lt;br>";<br />
    }<br />
    echo "Перейти: ";<br />
    for ($i = 0; $i &lt; $pages; $i++)<br />
    {<br />
    echo "&lt;a href="index.php?start=".($i * $pnumber)."">".($i + 1)."&lt;/a>&amp;nbsp;";<br />
    }<br />
    ?><br />
    

Всё очень просто:у нас есть переменная $_GET[‘start’], в которой хранится позиция, откуда начинать просмотр сообщений и переменная $pnumber, в которой хранится число, сколько выводить сообщений на страницу. И мы просто в цикле от начала просмотра ($start) до начала просмотра + кол-во сообщений на страницу ($start + $pnumber). А в конце выводятся страницы. Внимательно разберите этот код, в нём очень много полезного для начинающих программимтов.
Вот и написали мы гостевую... Самое главное для вас – понять принцип. Тогда даже форум типа phpBB покажется вам легким. Не останавливайтесь на достигнутом, придумывайте что-то новое
http://slil.ru/24730402 - исходник
Подсчет даты - скрипт Подсчет даты - скрипт
Вот уже давно хотел кинуть ну только седня получил код,написанный на яве,он отсчитывает,сколько времени прожил сайт(а точнее просто сколько от назначенной даты прошло времен

Африка | Арт | Art | Africa (II) Африка | Арт | Art | Africa (II)
  Африканское искусство.   60 jpg | 777 ~ 3354 pix | 124,42 mb

Как и для чего использовать CSS
Для лучшего оформления сайтов и простой его смены, используют каскадные таблицы стилей (CSS), которые включают в себя разнообразные настройки элементов сайта (от фона, до шрифта).Эта статья расскажет вам, как их использовать (включать в страницу).Также из ...

Clipart - Education Clipart - Education
  Clipart - Education   336 files| jpg | min 2295 x 1536 | rar 381 mb

PSD - Mobile technologies 11 PSD - Mobile technologies 11
  PSD - Mobile technologies 11   4 PSD | min 1390 x 1953 | rar 162 mb