Мини-чат
Наш опрос
Статистика
Онлайн всего: 4
Гостей: 4
Пользователей: 0
Поиск
Новое на форуме
Название : Способ отправки файлов с TClientSocket & TServerSocket | |
Название : Как получить список логических дисков? | |
Название : Как добавить приложение в автозагрузку | |
Название : Сохранение странички в файл из TWebBrowser | |
Название : Как програмно отключить и включить мышь | |
Календарь
« Январь 2012 » | ||||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
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 | 31 |
Друзья сайта
Главная » 2012 Январь 9 » Гостевая книга на PHP. Часть 1
19:46 Гостевая книга на PHP. Часть 1 | |
Шаг 1. SQL Для работы нашего приложения требуется создать таблицу: Code CREATE TABLE IF NOT EXISTS `s178_guestbook` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) default '', `email` varchar(255) default '', `description` varchar(255) default '', `when` int(11) NOT NULL default '0', `ip` varchar(20) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Шаг 2. PHP Основной файл будет содержать следующий код: guestbook.php Code // Отключаем возможные предупреждения if (version_compare(phpversion(), "5.3.0", ">=") == 1) error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); else error_reporting(E_ALL & ~E_NOTICE); require_once('classes/CMySQL.php'); // including service class to work with database // Получаем IP посетителя function getVisitorIP() { $ip = "0.0.0.0"; if( ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) && ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif( ( isset( $_SERVER['HTTP_CLIENT_IP'])) && (!empty($_SERVER['HTTP_CLIENT_IP'] ) ) ) { $ip = explode(".",$_SERVER['HTTP_CLIENT_IP']); $ip = $ip[3].".".$ip[2].".".$ip[1].".".$ip[0]; } elseif((!isset( $_SERVER['HTTP_X_FORWARDED_FOR'])) || (empty($_SERVER['HTTP_X_FORWARDED_FOR']))) { if ((!isset( $_SERVER['HTTP_CLIENT_IP'])) && (empty($_SERVER['HTTP_CLIENT_IP']))) { $ip = $_SERVER['REMOTE_ADDR']; } } return $ip; } // Получаем последние записи в гостевой книге function getLastRecords($iLimit = 3) { $sRecords = ''; $aRecords = $GLOBALS['MySQL']->getAll("SELECT * FROM `s178_guestbook` ORDER BY `id` DESC LIMIT {$iLimit}"); foreach ($aRecords as $i => $aInfo) { $sWhen = date('F j, Y H:i', $aInfo['when']); $sRecords .= << Автор {$aInfo['name']} ({$sWhen}): {$aInfo['description']} EOF; } return $sRecords; } if ($_POST) { // Принимаем новые записи $sIp = getVisitorIP(); $sName = $GLOBALS['MySQL']->escape(strip_tags($_POST['name'])); $sEmail = $GLOBALS['MySQL']->escape(strip_tags($_POST['name'])); $sDesc = $GLOBALS['MySQL']->escape(strip_tags($_POST['text'])); if ($sName && $sEmail && $sDesc && $sIp) { // Защита от спами $iOldId = $GLOBALS['MySQL']->getOne("SELECT `id` FROM `s178_guestbook` WHERE `ip` = '{$sIp}' AND `when` >= UNIX_TIMESTAMP() - 600 LIMIT 1"); if (! $iOldId) { // Можно добавлять комментарий $GLOBALS['MySQL']->res("INSERT INTO `s178_guestbook` SET `name` = '{$sName}', `email` = '{$sEmail}', `description` = '{$sDesc}', `when` = UNIX_TIMESTAMP(), `ip` = '{$sIp}'"); // Выводим последние 10 записей $sOut = getLastRecords(); echo $sOut; exit; } } echo 1; exit; } // Выводим последние 10 записей $sRecords = getLastRecords(); ob_start(); ?> <div class="container" id="records"> <div id="col1"> <h2>Гостевая книга</h2> <div id="records_list">= $sRecords ?></div> </div> <div id="col2"> <h2>Добавьте ваш отзыв здесь</h2> <script type="text/javascript"> function submitComment(e) { var name = $('#name').val(); var email = $('#email').val(); var text = $('#text').val(); if (name && email && text) { $.post('guestbook.php', { 'name': name, 'email': email, 'text': text }, function(data){ if (data != '1') { $('#records_list').fadeOut(1000, function () { $(this).html(data); $(this).fadeIn(1000); }); } else { $('#warning2').fadeIn(2000, function () { $(this).fadeOut(2000); }); } } ); } else { $('#warning1').fadeIn(2000, function () { $(this).fadeOut(2000); }); } }; </script> <form onsubmit="submitComment(this); return false;"> <table> <tr><td class="label"><label>Ваше имя: </label></td><td class="field"><input type="text" value="" title="Введите ваше имя" id="name" /></td></tr> <tr><td class="label"><label>Ваш email: </label></td><td class="field"><input type="text" value="" title="Введите ваш адрес email" id="email" /></td></tr> <tr><td class="label"><label>Отзыв: </label></td><td class="field"><textarea name="text" id="text" maxlength="255"></textarea></td></tr> <tr><td class="label"> </td><td class="field"> <div id="warning1" style="display:none">Заполните все обязательные поля</div> <div id="warning2" style="display:none">Вы не можете размещать более одного отзыва в течении 10 минут (защита от спама)</div> <input type="submit" value="Отправить" /> </td></tr> </table> </form> </div> </div> $sGuestbookBlock = ob_get_clean(); ?> <!DOCTYPE html> <html lang="ru" > <head> <meta charset="utf-8" /> <title>Гостевая книга на PHP | Материалы сайта RUSELLER.COM</title> <link href="css/main.css" rel="stylesheet" type="text/css" /> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> = $sGuestbookBlock ?> <footer> <h2>Гостевая книга на PHP</h2> <a href="http://www.ruseller.com" class="stuts" target="_blank">Материалы сайта <span>RUSELLER.COM</span></a> </footer> </body> </html> При открытии страницы вы увидите записную книжку. На левой стороне выводится последние три записи, а справа - форма для размещения нового отзыва. Когда отправляется форма, скрипт посылает данные POST (той же PHP странице), затем сохраняет полученные данные в базе и возвращает три последние записи. С использованием эффекта проявления записи выводятся на левой стороне книги. Также используется файл PHP classes/CMySQL.php Данный файл содержит код класса для работы с базой данных. В нем требуется настроить три переменных для подключения к серверу. Code $this->sDbName = 'ИМЯ_БАЗЫ_ДАННЫХ'; $this->sDbUser = 'ИМЯ ПОЛЬЗОВАТЕЛЯ'; $this->sDbPass = 'ПАРОЛЬ'; | |
|
Всего комментариев: 1 | ||
| ||