![]() |
|
Модераторы: skyboy |
![]()
|
|
| dstorm81 |
|
|||
![]() бездельник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1178 Регистрация: 18.1.2006 Где: (16RU) Репутация: нет Всего: 39 |
доброго времени. немного сумбурно но надеюсь что меня поймут
ситуация такая, есть гостевые, когда приходит комментарий для темы (в форме скрытое поле id-темы), постинг без авторизации как и на этом форуме кстати
смотрю есть ли тема, добавляю комментарий это реализовано на php в 2 этапа и как мне кажется криво то есть я сначала первым запросом проверяю есть ли тема а вторым запросом добавляю комментарий ибо если не проверять наличие темы, то переменную t можно поменять к примеру FireBug'ом и постить комменты в несуществующие темы - засорять базу вот собственно вопрос - можно ли объединить 2 этих этапа в один запрос или кто посоветует другие решения.... ---------------------------------- mySQL 5 1 таблица -gb (посты) 2 таблица -message (комменатрии) заранее спасибо -------------------- на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
А если нет темы? от этого зависит ответ на вопрос... Хотя какая разница... если в базе задано поддержание целостности - он просто не даст добавить запись в таблицу, если нет соответствующей записи в связанной таблице и вернет ошибку. Так что не вижу проблемы... ты лучше думай, что будет, если при подмене будет поставлен номер СУЩЕСТВУЮЩЕЙ темы... Полагаю, если вместо номера темы в скрытом поле держать временный псевдослучайный тег реферала - проблема отпадет. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
специфика MySQL(по крайней мере, относительно 5, с которой работю, это верно): существуют несколько "движков" БД и более быстрый MyISAM не поддерживает транзакций и foreign keys, а более медленный InnoDB поддерживает и то, и то. я бы посмотрел, сколько занимает запрос:
Добавлено через 2 минуты и 39 секунд
вариант, конечно. а ещё вариант - давать постить только авторизованным пользователям и не давать им постить чаще раза в 5-10 секунд. и пускай изменяют у себя в firbug'e что и где хотят |
||||
|
|||||
| dstorm81 |
|
||||
![]() бездельник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1178 Регистрация: 18.1.2006 Где: (16RU) Репутация: нет Всего: 39 |
вот здесь по существу и загвоздка, я не знаю какой какой тип будет использоваться InnoDB или MyISAM то есть при создании таблиц я созданию их независимымиы (без каскада и внешних ключей) вся логика должна поддерживаться скриптами целостности нет, то если есть темы и изменить t то запишется, проверял ужо для это го и делал проверку
пособите реально дельной ссылкой -------------------- на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#) |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
А при чем тут ссылка? Суть такая - заводится служебная таблица. При отдаче пользователю страницы, допускающей возврат постинга, генерится случайная текстовая последовательность (8-16 байтов), в таблицу записывается она, номер темы, штамп времени, может что-то еще, в форму передается только эта случайная последовательность. Когда возвращается пост, из таблицы по этой последовательности извлекается номер темы, в которую следует поместить пост (то есть тупо join в запрос на добавление). Если последовательность невалидна (отсутствует в таблице) - добавления не произойдет, потому что отбор записей для изменения-добавления вернет ноль записей, и (что приятно) при этом не возникнет ошибки. Угадать же такую последовательность малореально - так что никакая правка не стрельнет. Таблица чистится по шедулеру, скажем раз в полчаса удаляются записи давностью более часа... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
Так может пользовать в php сессии?
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |