spirit24, это если уникальные данные вводить, если же численные (деньги), то от повтора защитит только сессия.
Может у вас массив post не очищается? Типичная ошибка начинающих. До выполнения скрипта вновь делайте проверку - если всё в ажуре и данные записаны, то делайте location методом get и обязательно после этого exit;, чтобы скрипт ниже обновления станицы не выполнился снова и форма повторно не отправилась. Надеюсь я верно понял суть проблемы.
в мускул можно блокировать таблицы на запись, как и на файлы, будет очередь, это если двойной сабмит делать, чтоб данные не терялись, ну и проверки не лишнее
это называется обычно антифлудом
пишите в сессию время записи, при записи проверяйте, прошло ли необходимое время (10сек например), иначе выдавайте ошибку