<a class="word-export btn btn-large btn-block btn-primary" href="javascript:void(0)" onclick="return IsValid()">Экспорт в .doc</a>
function IsValid()
{
if (проверка полей формы успешная)
{
// если все ok, даем добро на переход по ссылке:
return true;
}
else
{
// если что-то заполнено неправильно, запрещаем переход:
return false;
}
}
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
Например, пользователь загрузил файл, в базу записывается имя, размер, путь физического расположения, связь с записью и т.п., ставится отметка «временный». Когда пользователь отправляет сообщение, отметка «временный» снимается. Для связи с записью можно сгенерировать что-нибудь типа GUID. Т.е. пользователь заходит на страницу добавления сообщения. В hidden-поле должен быть уникальный GUID потенциальной записи. При загрузке файлов, GUID используется для сохранения связи с записью.
Если пользователь удаляет добавленное ранее сообщение, то связанным файлам можно поставить отметку «удален».
Сделать робота, который будет физически удалять временные файлы и файлы помеченные, как удаленные. Ну и из базы тоже. Хотя в базе можно информацию оставлять, для статистики.
Робот может работать раз в сутки. Для временных файлов можно смотреть по дате добавления файла, если файл был добавлен больше 24 часов назад, то можно его удалять. Ну а удаленные, просто удалять, без дополнительных проверок.
Если привязывать загружаемые файлы к пользователям, то можно и размер ограничивать без проблем.
Если пользователь не зарегистрирован на сайте, то можно в куку писать, опять же, GUID и у себя в базе смотреть, сколько этому GUID можно загружать файлов. Но с зарегистрированными пользователями надежней, особенно если есть механизмы подтверждения email и/или телефона.