Пишем скрипт гостевой книги. Руководство по разработке через тестирование для начинающих

Sort By:

  • 1
  • 2

    Bitmixsoft is a Romania software company and offers a software title called PHP-Jobsite. PHP-Jobsite is job board software, and includes features such as billing & invoicing, discount / package management, employer accounts, job management, matching engine, resume posting, resume search, and job marketplace. With regards to system requirements, PHP-Jobsite is available as SaaS software. Costs start at $299.00. Some alternative products to PHP-Jobsite include SmartJobBoard, jobiqo, and JobMount Job Board Software.

  • 3

    OSI Codes is a software company and offers a software title called PHP Live!. PHP Live! is live chat software, and includes features such as proactive invitations, transfers / routing, white label branding, third party integration, website visitor tracking, proactive chat, screen sharing, and canned responses. With regards to system requirements, PHP Live! is available as SaaS software. Costs start at $9.95/month. Some alternative products to PHP Live! include LiveChat, LiveAgent, and Zendesk.

  • 4

    Mailgun is an email automation solution that is suitable for developers. With Mailgun, users are able to access a complete cloud-based email service for tracking, sending, and receiving emails sent via their applications and websites. Mailgun supports several programming languages including Python, Ruby, PHP , Java, and C#. With Mailgun"s tracking feature, users are able to track all emails and reduce the chances of getting spam.

  • 16

    LifeCubby is a cloud-based web and mobile platform made for documentation, communication, and assessment services for early childhood providers. It offers tools for tuition tracking, roster management, attendance and daily care sheets, lesson planning, daily report, QRIS compliance, among many others. Teachers and caretakers can use a special app in order to capture information from a mobile device, and parents can download a special parent app to strengthen communication and keep track of...

  • 17

    MedEZ delivers a fully incorporated, easy to use EHR, with clinical notes and billing solutions for behavioral health, inpatient mental offices, outpatient, OIP/PHP programs and substance abuse clinics. MedEZ platform includes appointment setting, clinical notes, billing and document management. MedEZ has pharmacies, Med inventory, Dispensing, MARS and E-Pharmacy features as well as handling the states required documentation and reporting efficiently. It has been designed for your facility.

  • 18

    Complete Accounting & ERP System with Source Code and Royalty-Free Distribution and Hosting rights for PHP and MySQL Platforms. Software is fully modern and responsive, bootstrap and MVC. All basic accounting and ERP functionality is included, GL, AR, AP, CRM, MRP, and Shopping Cart. Multi-Language, Multi-Currency, and both LTR and RTL display options. Live demos available at stfb.com

  • 19

    This is a powerfull program with a new user interface, easy to use software to manage warehouse inventory with customers, suppliers, products and automatic calculation of the stock. It has got a clear interface of the latest generation. Always visible warehouse inventory with loading and unloading, products stock and quantities to be ordered. You can try it downloading the setup program by this link: www.rgpsoft.com/software/calus.php

  • 20

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).

"Звучит красиво, как сказка". В большинстве случаев человек, выбирая страсть, выбирает наслаждение, а не вечную муку. И по этим уже маленьким "выборам" складывается общий? Осознанным выбор, был бы тогда, когда слева от человека стояла бы страсть, а за ней котёл, по правую сторону стоял бы Иисус, а за ним двери рая. Выбор очевиден и осознан. Грех или добродетель-это всегда осознанный выбор, иначе психически больных людей судили бы несправедливо. Можно ли сказать, что суицидник осознанно отдаёт предпочтение, вечной муке, а не временным "лёгким" земным страданиям? Да вообще, многие совершаемые грехи неосознанные. Если бы людей судили за грехи по степени их осознанности, то главными грешниками стали бы сами православные-это несправедливо, парадоксально. Из этого всего следует: что осуждение неосознанного греха несправедливо, но при этом несправедливым и будет мерить грех по осознанности, а из этого следует что Если перед человеком не стоит выбор между котлом и раем к которому он может прикоснутся, то суд его выбора будет несправедлив. А из этого "бреда" уже следует, что судить человека или не имеет смысла или несправедливо. Значит суд несправедлив по своей сути. Если суд несправедлив, а судит Бог, то мы посмеем представить, что Бог несправедлив. Идя по цепочке дальше можно допустить смиренное представление, что Бога или нет или он в корне другой нежели описан в евангелие. А на самом деле мне просто хотелось понять: Почему людей настолько сильно мучают в аду, почему для грешников не отвели другое место и почему им не дают возможности наслаждаться тем, чем они наслаждались до этого или второй шанс на рай, но менее прекрасный чем у праведников? Разве в этом не выражалась бы любовь и справедливость? Ведь вариантов миллионы, а отсутствие всего этого, не говорит об обратном? Вы хотите на полном серьёзе мне сказать, что справедливо грешникам уготован такой ад?? Если любишь, то одёрнешь человека, когда тот прыгает под машину, даже если осознанно прыгает по свей воле...

2. Далее, Вы пишете: «Если бы людей судили за грехи по степени их осознанности, то главными грешниками стали бы сами православные - это несправедливо, парадоксально». Отчего же, это и справедливо и не парадоксально. Человек, знающий, как и что он должен делать и нарушающий заповедь без сомнения более виновен, чем тот, кто вообще ничего не знает. И Бог сказал, что знающий и согрешивший будет наказан больше (Лк. 12, 47-48).

3. Далее, Вы предлагаете рассуждения о суде Божием и Вам кажется, что они логичны. Но на самом деле в них нет никакой логики. Они полностью надуманы и не имеют ничего общего с реальностью. Очевидно в них только то, что Вы пытаетесь рассуждать о том, чего просто не знаете. Ни о Боге, а Он достаточно открыл нам о Себе, ни о свойствах судов Божиих, и частного и Страшного суда, ни о тайной жизни каждой души и путях её выбора и борьбы за этот выбор. Вам просто неизвестно христианство. Здесь опять Вы сами свидетельствуете, что пришли сюда не спрашивать. Когда человек вот так, ничтоже сумнящеся, уверенно рассуждает о несправедливости суда Божия, строя ложно-логические выкладки, это свидетельствует о немалой проблеме, и она заключается не в логике. У неё духовные корни.
Почему я Вам это пишу? Можно было бы ответить кратко: Бог праведен, всеведущ, справедлив и правосуден. Как Существо абсолютное и неизменяемое Он судит всегда по справедливо, всегда милосердно, всегда на основе Своего всеведения: Ему открыты сердца и нет для Него ничего тайного. Он судит с непостижимой для человека любовью и с непонятной нам непреложностью справедливости. Но Вы, полагаю, не сможете этого понять, как и в первый раз. Это всё равно, что объяснять первокласснику бином Ньютона, да ещё и такому первокласснику, который не хочет учиться. Тем не менее, я обозначу ответы и на следующие вопросы, чтобы ВЫ не подумали, что на Ваши вопросы у христиан нет ответов. На самом деле Ваши вопросы неразрешимы только в Вашем воображении.

4. «Почему людей настолько сильно мучают в аду». Ну, это повторение пройденного. Очень много уже было написано Вам о том, что ад это не наказание, а выбор всей жизни. И никто не будет мучить людей в аду, а страдать они будут от их собственных страстей, тех, которые они взращивали в душе всю жизнь. Напишу словами одной замечательной книги: "Душа, перешедшая за гроб с неисцеленными ранами – со своими страстями, остается там в страстном, болезненном состоянии и, неисцеленная на земле, уже здесь не может избавиться от своих страстей. И как не врачуемая болезнь развивается всё более и более, так за гробом страстное состояние души, по закону жизни, будет всё более и более развиваться, доходя до ужасающих размеров. Неудовлетворенная и неудовлетворяемая страсть – вот состояние души, вполне соответствующее геенне. … Привычка ко греху, к исполнению своих страстей, обратившаяся в природу и сделавшая страстное состояние отверженных как бы естественным, будет непрестанно, целую вечность, терзать душу. … Вот в чём состоит внутреннее мучение грешников в геенне! Ничем непреодолимые страсти, – безнадежные, никогда не искореняемые, – терзают и будут терзать душу всю вечность. …Страсти и привычки продолжают существовать и, вследствие своей неудовлетворенности, являются источником мучений для души. Чем кто согрешает, тем и мучится, если только не уврачуется на земле».

5. Вы не без наивности спрашиваете: «Вы хотите на полном серьёзе мне сказать, что справедливо грешникам уготован такой ад?» - Выбрав смыслом своей жизни страсти, человек остаётся с этим выбором своей воли. Что же здесь несправедливого? На это Вам отвечает Апостол: «кто кем побежден, тот тому и раб» (2 Петр. 2, 19).
6. О том, в чём «выражалась бы любовь и справедливость» Вам тоже написано уже более, чем достаточно.
7. «Почему для грешников не отвели другое место и почему им не дают возможности наслаждаться тем, чем они наслаждались до этого или второй шанс на рай». – Грешников оставят в том месте, которое явится выбором их жизни. Теории о втором шансе, второй жизни, реинкарнации и пр. – это уловки дьявола, чтобы погубить людей. Нам дана жизнь не на что иное, как на то, чтобы мы сделали выбор. Бог посылает каждому всё, что ему необходимо для этого. И Бог посылает смерть только тогда, когда выбор души определился. Тот, кто выбрал зло один раз, выберет его и сто раз. Тот, кто стремится к истине, выберет её в своей единственной жизни. Ни у кого из нас не будет второго шанса, потому что никто из нас не воспользуется им: это была бы дурная бесконечность зла. А у Бога нет ничего нецелесообразного. Можно почитать об этом в статье
8. «Если любишь, то одёрнешь человека, когда тот прыгает под машину, даже если осознанно прыгает по своей воле». Бог не только много раз за нашу жизнь останавливает нас, направляет, вразумляет, всячески предостерегает через людей, обстоятельства, книги, внушая нам добрые помыслы и будя нашу совесть. Бог из одной только Любви сошёл землю, населённую ужасными грешниками, чтобы помиловать их. Он стал Человеком и умер в страшных муках на кресте, чтобы взять на Себя все наши грехи и этим открыть нам путь в рай. Он зовёт к Себе каждого всю его жизнь, и ждёт от нас только одного: свободного произволения жить в добре и любви. Поэтому безответны мы будем перед Ним на суде, поправ такую высоту милосердия.

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

Sort By:

  • 1
  • 2

    Bitmixsoft is a Romania software company and offers a software title called PHP-Jobsite. PHP-Jobsite is job board software, and includes features such as billing & invoicing, discount / package management, employer accounts, job management, matching engine, resume posting, resume search, and job marketplace. With regards to system requirements, PHP-Jobsite is available as SaaS software. Costs start at $299.00. Some alternative products to PHP-Jobsite include SmartJobBoard, jobiqo, and JobMount Job Board Software.

  • 3

    OSI Codes is a software company and offers a software title called PHP Live!. PHP Live! is live chat software, and includes features such as proactive invitations, transfers / routing, white label branding, third party integration, website visitor tracking, proactive chat, screen sharing, and canned responses. With regards to system requirements, PHP Live! is available as SaaS software. Costs start at $9.95/month. Some alternative products to PHP Live! include LiveChat, LiveAgent, and Zendesk.

  • 4

    Mailgun is an email automation solution that is suitable for developers. With Mailgun, users are able to access a complete cloud-based email service for tracking, sending, and receiving emails sent via their applications and websites. Mailgun supports several programming languages including Python, Ruby, PHP , Java, and C#. With Mailgun"s tracking feature, users are able to track all emails and reduce the chances of getting spam.

  • 16

    LifeCubby is a cloud-based web and mobile platform made for documentation, communication, and assessment services for early childhood providers. It offers tools for tuition tracking, roster management, attendance and daily care sheets, lesson planning, daily report, QRIS compliance, among many others. Teachers and caretakers can use a special app in order to capture information from a mobile device, and parents can download a special parent app to strengthen communication and keep track of...

  • 17

    MedEZ delivers a fully incorporated, easy to use EHR, with clinical notes and billing solutions for behavioral health, inpatient mental offices, outpatient, OIP/PHP programs and substance abuse clinics. MedEZ platform includes appointment setting, clinical notes, billing and document management. MedEZ has pharmacies, Med inventory, Dispensing, MARS and E-Pharmacy features as well as handling the states required documentation and reporting efficiently. It has been designed for your facility.

  • 18

    Complete Accounting & ERP System with Source Code and Royalty-Free Distribution and Hosting rights for PHP and MySQL Platforms. Software is fully modern and responsive, bootstrap and MVC. All basic accounting and ERP functionality is included, GL, AR, AP, CRM, MRP, and Shopping Cart. Multi-Language, Multi-Currency, and both LTR and RTL display options. Live demos available at stfb.com

  • 19

    This is a powerfull program with a new user interface, easy to use software to manage warehouse inventory with customers, suppliers, products and automatic calculation of the stock. It has got a clear interface of the latest generation. Always visible warehouse inventory with loading and unloading, products stock and quantities to be ordered. You can try it downloading the setup program by this link: www.rgpsoft.com/software/calus.php

  • 20