Итак приступим к делу!
Собственно клас выглядит так:
<? class gb { private $db = 'gb'; //объявляем конструктор function __construct () { $this->connect(); } //соединяемся или создаём базу (если не существует) private function connect () { $this->lnk = sqlite_open($this->db, 0660); if (!file_exists($this->db)) throw new Exception('База данных не создана!'); } //выбираем из таблицы записи public function selectRec($s,$f) { $s = intval($s); $f = intval($f); $q=sqlite_query ($this->lnk,"SELECT * FROM messages ORDER by id DESC LIMIT $s,$f"); if (!$q) throw new Exception ('Запрос на выборку данных не был выполнен!'); while (sqlite_valid($q)) { $r = sqlite_current($q); $row[] = $r; sqlite_next($q); } return $row; } //проверка переменных private function checkvar($var,$len) { $var = iconv('UTF-8','windows-1251',$var); $var = trim(strip_tags(substr(sqlite_escape_string($var),0,$len))); if (empty($var)) throw new Exception ('Заполните все поля!'); return iconv('windows-1251','UTF-8',$var); } //не даём устроить флуд (исключительно по ip) private function checkip($ip){ $q=sqlite_query($this->lnk,"SELECT ip, time FROM messages WHERE time>".time()." - 120 and ip='".$ip."'"); if ( sqlite_num_rows($q) > 0 ) return false; else return true; } //добавляем запись в таблицу public function insertRec($name, $message, $ip, $browser) { $name = $this->checkvar($name,15); $message = $this->checkvar($message,150); $ip = $this->checkvar($ip,50); $browser = $this->checkvar($browser,70); $this->checkip($ip); $q=sqlite_query($this->lnk,"INSERT INTO messages (name, message,ip, browser,time) VALUES ('$name','$message','$ip','$browser','".time()."')"); if (!$q) throw new Exception ('Запись не была добавлена'); } //конвертация из виндовой кодировки в utf public function win2utf ($msg) { return iconv ('windows-1251','UTF-8',$msg); } } ?>
Каждый метод класса имеет свой комментарий и название метода несёт свою смысловую нагрузку, так что разобраться думаю не сложно будет. Код класса хорошо прокомментирован, с его разбором проблем не будет.
Описание методов:
selectRec ($arg1, $arg2) - выбор записей из таблицы, начиная от $arg1, до $arg2 checkvar($arg,$arg2) - Проверка переменой, $arg1 - сама переменная, $arg2 - длина до которой необходимо обрезать переменную insertRec($arg1,$arg2,$arg3,$arg4) - Добавление записи в таблицу, $arg1 - имя автора поста, полученное из формы, $arg2 - сообщение автора, полусенное из формы, $arg3 и $arg4 - непосредственно ip автора и браузер.
Автор статьи: windoctor e-mail: admin@wapcoder.com, admin@windoctor.org Сайт автора: http://sultanov.net, http://wapcoder.org, http://windoctor.org
Все вопросы вы можете задать на форуме wapcoder.com или по e-mail При перечатке материалов необходимо установить видимую ссылку на http://wapcoder.com
|