Авторитетный guestbook php. Руководство по разработке через тестирование для начинающих

In this post we’re going to see how we can build a guestbook easily with PHP and MySQL. This is very simple and straightforward. All we need is:

  • A webserver or a hosting account
  • phpMyAdmin or something similar for database access

First, we have to create a database and the necessary tables. Go to your control panel (cPanel or something) and go to databases. Create a new database. Notice the database name. Now create an user and add the user to that database. If you find this difficult, please contact the customer service of your hosting provider. The process significantly differs from host to host depending on the control panel they provide. Please note the full database name, user name and database host. In most cases the database host is “localhost”. But some providers ask customers to use a remote mysql host. In that case, please note that host down. If you’re using WAMP server on Windows, go to http://localhost/phpmyadmin/ and you shall get the options there.

Now we’re ready to import the table. Go to phpMyAdmin, select the database you created and use the following SQL commands to create the table:

CREATE TABLE IF NOT EXISTS `comments` (`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `website` varchar(255) NOT NULL, `message` text NOT NULL, `timestamp` int(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Okay, so if you execute the command, we shall have a table named “comments” with 6 fields. The “id” field is the primary key and the unique identifier. The other fields are – name, email, website, message and timestamp. The timestamp field stores the unix epoch value (how many seconds have passed after 1st January 1970) of time. It will be generated using the time() function of php. The other fields are self explanatory.

Now we shall create a configuration file which shall be used to store the mysql connection data. Create a file named: “config.php” and put the following codes in it:

So, the config.php lets you use your own configuration data. Feel free to change the values of the variables to match your setup.

Now we create the first page. Create a file named “index.php” and put these codes into it:

My Little Guest Book

Post A Comment:

Name:

Email:

Website:

Message:

Exisiting Comments:

Name: {$comment["name"]}
"; echo "Email: {$comment["email"]}
"; echo "Website: {$comment["website"]}
"; echo "Message: {$comment["message"]}
"; echo "Posted at: " .date("Y-d-m H:i:s",$comment["timestamp"]). "

"; } } ?>

So what does this script do? It has a html form to fill up the data necessary. After the form, we fetch all the comments stored in the database and display them on the page. If no comments are found, we also print that out. Did you notice that the form action is “post.php”? Yes, the form data will be sent to posts.php which shall process the fields and store them in database. So, let’s crate post.php and put the following codes:

My Little Guest Book

On this page, we check if all the fields were filled out. If not, we ask print an error message. If all the fields were filled out, we try to store the contents to database. We create the timestamp value using time() and extract the keys out of $_POST variable. If the database insertion fails, we also print out an error message. If everything is okay, we forward the visitor to the index.php where he or she shall be able to see the comments just below the form.

We’re now done with our little guestbook. It is not that feature rich but it works! In the coming posts, we shall see how we can modify it to add validation, pagination and ajax interactions. Stay tuned!

Сегодня я дам Вам скрипт гостевой книги на PHP , ведь не секрет, что вещь эта достаточно популярная и если другой возможности общаться с администрацией нет, то гостевая книга просто необходима. И в этой статье Вы сможете скачать скрипт гостевой книги на PHP , а также я расскажу о процессе его установки.

Очень часто люди просят скрипт гостевой книги на html, либо на javascript . Увы, такого никогда нет и не будет, так как для работы гостевой книги необходимо хотя бы записывать сообщения в файл. А это сделать ни в JavaScript , ни, тем более, в HTML невозможно.

Теперь копируйте папку guest в корень своего сайта. Далее располагайте на странице своего сайта ссылку на гостевую книгу (http://ваш_сайт/guest ).

Следующим шагом будет настройка гостевой книги. Для этого зайдите по адресу http://ваш_сайт/guest/admin.php . Введите пароль "admin " и после успешной авторизации зайдите во вкладку "Конфигурирование ". Краткое описание всех настроек:

  • Имя скрипта - поставьте свой название для гостевой книги Вашего сайта.
  • Текст приветствия - напишите любой текст, которые Вы хотите, чтобы видели Ваши посетители при посещении гостевой книги.
  • Рекламный блок - если Вы хотите разместить рекламу в гостевой книги, то скопируйте в это поле её код. Если её нет, то оставьте это поле пустым.
  • Ссылка на главную сайта - поставьте ссылку на главную страницу своего сайта.
  • Емайл админа / отсылать сообщения - укажите свой e-mail , а также выберите: хотите Вы получать сообщения на свою почту или нет.
  • Пароль админа - обязательно поставьте свой пароль. Не оставляйте "admin ".
  • Включить МОДЕРИРОВАНИЕ сообщений? - если Вы хотите проверять каждое сообщение перед публикацией, то включите данную опцию.
  • Задействовать функцию АНТИСПАМ? - здесь можно отключить систему защиты от спама, либо выбрать один из трёх вариантов: обычная капча, загадка или матоперация. Если Вы выберите обычную цифровую капчу, то укажите также длину капчи в текстовом поле справа.
  • Задействовать функцию АНТИФЛУД? - данная опция позволяет отфильтровать сообщения не по теме.
  • Делать ссылки в тексте активными? - если поставите "Да ", то тогда ссылки в тексте собщений будут активными. Это удобно для пользователей, но Ваша гостевая книга будет хорошим местом для спамера.
  • Включить / отключить графические смайлы? - если поставите "Да ", то пользователь сможет использовать смайлики.
  • Макс. длина имени - допустимое количество символов в имени пользователя.
  • Макс. длина сообщения - допустимое количество символов в сообщении.
  • Сообщений на страницу - количество выводимых сообщений на одной странице.
  • Следование сообщений - сортировка по возрастанию или убыванию даты написания сообщения.
  • Скин - внешний вид.

На самом деле, существует огромное количество самых разнообразных скриптов гостевых книг . И когда я искал его, то перебрал не меньше двух десятков и остановился на этом по следующим причинам.

1. На бесплатном хостинге есть только то, что дают.
2. Лучше, но совсем не обязательно. Порядочный гость оставит сообщение так как нужно (через мою форму), а хороший хакер все равно обойдет ваши $_GET, $_POST, $_COOKIE и $HTTP_REFERER тоже.
3. Контроль длины производиться, но только неявно, самой БД (единственно, что только само сообщение может быть огромно - до 64Кб).
4. Да, есть, HtmlSpecialChars была использована, не использовал AddSlashes (и это большая ошибка, признаю свою вину, см. ниже). При в ключеной magic_quotes_gpc, данная проблема не столь остра, но дыра в безопасности остается (в панели управления).
5. Да, согласен, можно было бы и вырезать, но имя #$@%#$^%$ ничем не хуже чем AF4ETX09T43 . В e-mail и url есть дырка, можно использовать скрипты.
6. Интересно, что не неинициализировано?

Есть еще ряд интересных приемов, как например защита от автоматического ввода через картинку (как на этом сайте) http://www.сайт/webmast/php/Security-Images-in-PHP/
...

Картинок кажется небыло, зачем усложнять демонстрационный пример. Пока ни разу не встречал гостевой с подобной защитой. Что касается этого сайта, то это не гостевая.

Анатомия межсайтового скриптинга XSS
http://www.woweb.ru/index.htm/id/1073393942

Очень интересно, спасибо.

З.Ы. Если бы Аффтор потрудился бы почитать (и вниктуть) в статьи что на этом же сайте, то понял бы, на сколько его труд непрофессионален. Стоит учитывать опыт предыдущих Авторов и, по крайней мере, уважать их труды - они же для вас писали.

Где есть не уважение? Извините если кого обидел.

Что касается защиты, то советую еще раз прочесть первый абзац статьи, я не ставил цели расматривать надежную гостевую, а лишь показать как можно написать протейшую гостевую, для тех кто только начинает познавать CGI, ведь не все сразу приходит, надо начинать с простого, и ты тоже не сразу стал таким умным, тоже совершал ошибки, так что давай оставим аспекты защиты другим статьям, другим авторам.

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

PS

Цитата:

Закон "Об авторском праве и смежных правах"
Статья 6. Объект авторского права. Общие положения
1. Авторское право распространяется на произведения науки, литературы и искусства, являющиеся результатом творческой деятельности, независимо от назначения и достоинства произведения, а также от способа его выражения.
Остальное можешь прочесть тут: http://www.febras.ru/~patent/copyright/2_3part2.html
В том числе и Статья 9. п.1
И не тебе решать пользоваться мне моим правом или нет.

Сегодня я опишу, пожалуй, лучшую задачу для новичков языка программирования PHP — Гостевая книга. На мой взгляд эта задача является наипростейшей, но при этом позволяет узнать все основные особенности работы с PHP и базой данных MySQL. Помимо этого, данная задача до бесконечности расширяема, что позволяет оттачивать новые технологии.

Описание и решение данной задачи будет написано сразу здесь, без проверок на работоспособность, поэтому, возможно, где-то есть опечатка. Сделано это не из-за моей лени, а опять таки из за дополнительной тренировки, при создании гостевой книги Вами. Так же представленное решение будет немного «кривовато», но об этом уже в конце данной статьи в разделе «Самостоятельная работа».

Если Вы совсем не знаете как работать с PHP, то для начала советую прочитать заметку PHP — с чего начать .

Мы будем разбирать создание самой примитивной гостевой книги, без дизайна и администрирования. Другими словами мы ограничимся входом в книгу, регистрацией ну и оставлением сообщений.
Из самой задачи становится понятно, что мы можем вполне ограничится тремя файлами php, для реализации данной задачи. Конечно задачку регистрации можно разбить на две: форма регистрации и добавления данных в базу, однако делать мы этого не будем. Аналогичные рассуждения допустимы и для процедуры оставления комментариев. Таким образом создаем три файла: index.php, registration.php, book.php.

По названиям файлов, можно сразу понять, за что они будут отвечать: index.php — страница входа, registration.php — страница регистрации, book.php — страница гостевой книги.

Самое простое в нашем случае это страница входа. Так как страница отвечает за ввод пары логина и пароля — на ней должна присутствовать форма для отправки этих данных на страницу book.php. А так же ссылка на страницу с регистрацией. Имеем:

Вход в гостевую книгу

Логин:
Пароль:

Регистрация

Немного отойдя от темы, для тех кто не вкусе что означает код выше. Здесь мы имеем голый HTML. Ключевым моментом является тег form который принимает два параметра action , который отвечает за адрес страницы, который откроется после подтверждения ввода данных, и параметр method , который отвечает каким способом данные формы будут отправляться на указанную страницу (см. POST и GET простыми словами). Внутри тега form указываются поля для ввода (input, select), которые обязательно должны иметь атрибут name . Именно по значению данного атрибута можно будет получить введенные пользователем данные на странице указанной в параметре формы action. Обязательно внутри формы должен находится input с типом submit , который по своей сути является кнопкой, по нажатию на которую и произойдет отправка данных на страницу action.

Продолжим… Теперь нам нужно создать страницу с регистрацией нового пользователя. Стоит сразу продумать, что именно мы хотим иметь. Я решил, что для простой гостевой книги будет вполне достаточно иметь пользователей с уникальными логинами, а так же знать адрес их Web сайта (если он есть). Раз мы определились с тем что мы хотим знать о пользователе, значит мы можем начать проектировать нашу базу данных.

Заходим в phpMyAdmin. Создадим там базу с именем gb. В данной базе создадим таблицу Users со следующими полями:

Login varchar(50) unique //логин пользователя, уникальное поле password varchar(150) //пароль www varchar(255) //адрес сайта

А раз мы уже зашли в редактор базы, то можно сразу и подумать о том как мы будем хранить сообщения. В нашем случае вполне подойдет знать кто и когда оставил сообщение, ну и собственно текст нашего сообщения. Так же для удобство стоит пронумеровать наши сообщения. С этим мы определились, значит можно смело создавать еще одну таблицу Messages со следующей структурой:

Id int ai(auto_increment) primary_key //номер сообщения, счетчик, который сам будет увеличиваться mes text //текст сообщения who varchar(50) //логин того, кто оставил сообщение when timestamp default(current) //время оставления сообщения, по умолчанию текущая дата и время

С базой данных разобрались. Теперь переходим к файлу registration.php. Подведя итог вышеизложенному имеем:

Регистрация

Логин:
Пароль:
Пароль еще раз:
WWW: http://


На главную

Немного о коде. Как Вы уже заметили, здесь присутствует PHP. Описывать форму я уже не буду, но как мы видим, здесь данные формы посылаются на ту же страницу, где расположена данная форма. Другими словами файл registration.php шлет данные сам на себя. Так делать никто не запрещает, однако использовать это можно не всегда, так как это сильно портит читабельность кода. Однако с другой стороны это наглядно демонстрирует возможности языка PHP. По сути наша страница разделена на два случая. Первый случай это когда на страницу шлются данные POST запросом, второй случай, когда на страницу никакого POST запроса не послано. Во втором случаем мы покажем форму для регистрации, а первом же начнем выполнять проверки присланных данных. Как видно данные шлются в виде ассоциативного массива (т.е. массива, индексами которого являются строки). Причем индексы совпадают с названиями полей input, указанными в форме отправки данных. Т.е. если мы пишем

то у нас, при отправке этих данных POST запросом, будет переменная

$_POST["vasa-peta"]

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

Теперь последнее. Осталось сделать саму гостевую книгу. Немного рассуждений. Так как гостевая книга работает по логину и паролю, то первое что нам придется делать — проверять введенный логин и пароль на наличие в базе. Так как мы решили добавлять сообщения так же в файле book.php, то очевидно следом должна осуществляться процедура добавления сообщения. Ну и в самом конце отображение всех сообщений. (если сделать добавление сообщение, после их отображения, то добавленное сообщение отобразится только после перезагрузки страницы). Имеем:

Гостевая книга "; } else { echo "Ваше сообщение не добавлено!


"; } } ?>
" name="login" /> " name="password" />

"; echo "Текст: ".$row["mes"]."
"; } } mysql_close($link); ?>

Вот по сути и все. Если код 100% рабочий, хорошо. Если нет, то советую Вам постараться самостоятельно исправить ошибки. Теперь обещанный раздел.

Самостоятельная работа
Как уже говорилось в начале, данное решение «кривое». Если Вы еще не поняли почему, то я сейчас поясню. Как вы могли заметить в файле book.php в форме добавления комментария присутсвуют несколько скрытых полей, при этом два из них — это введенный пользователем логин и пароль. Не хорошо, не правда ли? Попробуйте исправить данный недочет использую сессии (Как работать с сессиями в PHP).
Постарайтесь ответить на вопрос, чем отличаюься функции empty/isset и exit/die ?
Измените запрос выборки сообщений из базы так, чтобы при при выводе сообщений отображался web сайт автора сообщения.
Если вы заметили, то пароль пользователей в базе данных храниться в открытом виде, а это очень не хорошо. Отредактируйте код так, чтобы в базе хранился хэш пароля пользователя (например MD5 или SHA1).

Tizag PHP Page Counter is an efficient online PHP counter independent of MySQL database. You can use this program to calculate your websites webtraffic and to claculate the total hits for your website pages. You can easily install this PHP application on your website and configure to suit your website requirements.

If you need a guestbook on your website, you are in the right place. GuestBook Script PHP is a script that is easy and quick to put on your website.
Visitors to your website can leave comments and feedback. Features: administrator page which...

CodeLock is an easy to use PHP and HTML encryptor. Codelock V2.0 works by encrypting the entire PHP page. You can also have PHP mixed with HTML and javascript. Codelock V2.0 uses unique (unconventional) algorithms for it"s encryption (along with...

The DigiOz Graphic counter is a counter script written specifically for PHP files. This script counts the number of times a PHP page has been viewed through the browser. In order for the script to work, the counter.php file will have to be...

php/MySQL easy data editor. A single php page or with a single config file for security to make it easy and safe for non programmers/web designers/mysql gurus to add, edit and delete records. * * * * No need to create a new interface for each table!

HTML Resume Template is a php based script to generate resumes in HTML format.A very easy to use programme.Just enter the inputs in the php page and you have your resume generated in HTML format or in just plain text also.A java script is used to...