Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #28, МАРТ 2003 г.

СЛУЖБА ЗНАКОМСТВ: соединяем половинки

cuttah (cutter@real.xakep.ru)

Спецвыпуск Xakep, номер #028, стр. 028-060-2


Администраторская часть. Самая клевая часть во всех скриптах, особенно для меня :). Я попытался сделать что-то приятное, некий "центр наведения ракет на Пентагон :)". В итоге, правда, функций получилось не так много, и все из-за не очень большого желания работать. Но вот что можно делать. Админ может проверять вновь поступившие анкеты. Решать, стоит ли добавлять новую анкету. При отказе можно указать причину отклонения. Я, например, всегда удалял анкеты, имеющие проститутские наклонности. А их, поверь, почти около половины с женской стороны. Вообще, их надо резать либо выделить специальный раздел - платные объявления. Иначе просто засоришь сайт левыми объявами. Также есть поиск, но он несколько недоработан. Отсутствует возможность редактировать найденные анкеты. И последняя функция - удаление анкеты по ее номеру. Вот это тебе пригодится на все 100 процентов :).

ФОРМАТ ХРАНЕНИЯ БАЗЫ

В чем же хранится вся база? Некоторая часть лежит со скриптами (в директории cgi-bin/), сами же анкеты с текстом находятся в MySQL базе (на самом деле при небольшом желании можно перенести в любую другую SQL базу: mSQL, Postgres и т.д.). А самый первый вариант службы вообще работал в текстовых сообщениях, правда, это уже совсем маразм был :). Но вернемся к SQL. Под все анкеты выделена всего одна таблица, и это нормально. Находится она в cgi-bin/sqldata/create.txt:

CREATE TABLE anketa(

id int NOT NULL PRIMARY KEY AUTO_INCREMENT ,

password varchar (20) NOT NULL ,

name varchar (20) NOT NULL ,

email varchar (30) NOT NULL ,

sex char (1) NOT NULL ,

orient char (1) NOT NULL ,

type tinyint unsigned NOT NULL ,

maritial char (1) NOT NULL ,

education char (1) NOT NULL ,

age tinyint unsigned NOT NULL ,

zodiak tinyint unsigned NOT NULL ,

city varchar (25) NOT NULL ,

height tinyint unsigned NOT NULL ,

weight tinyint unsigned NOT NULL ,

eyes varchar (15) NULL ,

hair varchar (15) NULL ,

i_like varchar (80) NULL ,

i_dislike varchar (80) NULL ,

icq int unsigned NULL ,

homepage varchar (50) NULL ,

about_me text NOT NULL ,

candidate text NOT NULL ,

photo varchar (60) NULL ,

added int unsigned NULL ,

keep int unsigned NULL ,

shows mediumint unsigned NOT NULL ,

status tinyint unsigned NOT NULL ,

ip int unsigned NOT NULL

)

Из файла видно, что главное поле id (параметр PRIMARY KEY). Оно автоматически увеличивается с каждой новой анкетой (AUTO_INCREMENT). Далее следует информация о пользователе, его пароль, мыльник и прочее, прочее. Важным моментом является наличие полей status и ip. Первое отвечает за статус анкеты. По умолчанию анкеты не активизированы и в поле status хранится значение 0. После активирования в поле помещается единичка, и отныне анкета видна на сайте.

Теперь о поле ip. Оно тебе может понадобиться, если какой-нибудь урод зарегает подозрительную анкету или еще что-нибудь начудит. Тогда ты сможешь поднять логи и узнать ip (хотя, конечно, ясно, что все данные могут быть левыми, а человек вообще регался через цепочку соксов или проксей). У меня вообще был случай, пришло письмо от управления "Р" с просьбой прислать логи по какой-то анкете. Так что всякое может быть и ко всему надо быть готовым.

Назад на стр. 028-060-1  Содержание  Вперед на стр. 028-060-3