У меня есть страница, на которой пользователь может загружать изображения на мой сайт.
Я хочу, чтобы пользователи, которые не зарегистрированы на сайте, могли загружать только один раз, это идет вместе с другой информацией, которую они вводят в форму. Конечно, можно загрузить, а затем обновить страницу, но это будет совершенно новая запись в базе данных, т.е. у них не может быть более одного изображения для каждой записи базы данных.
Пользователи, которые зарегистрированы и вошли в систему, могут загружать несколько изображений в форму. Это не является проблемой.
Моя проблема в том, что я хотел бы иметь надежное решение для предотвращения повторной загрузки незарегистрированными пользователями.
Я мог бы удалить или отключить ввод загрузки после завершения загрузки, но это кажется неуклюжим, и любой, у кого есть хоть немного мозгов, может легко обойти это, вернув поле ввода обратно с помощью инспектора кода браузера.
Вот мой javascript для загрузчика Kendoui:
$('#files').kendoUpload({
multiple: function()
{
var r;
call({call: 'user->isloggedin'}, function(data) {
if (data == 1)
{
r = true
} else {
r = false
}
}, false);
return r;
},
async: {
saveUrl: ROOT + 'share/upload',
removeUrl: ROOT + 'share/remove',
autoUpload: true
},
localization: {
select: 'Select car(s) to upload...',
remove: 'Delete'
},
error: function(e) {
var msg = '<b>' + e.files[0].extension + '</b> files can not be uploaded.';
modalError(msg, 'Upload error');
},
upload: function(e) // When each image finishes uploading...
{
},
progress: function(e)
{
},
success: function(e)
{
var name = "_" + e.files[0].name.replace(".", "_");
if (e.operation == 'upload')
{
$('#previews').append('<img style="display:none;" id="' + name + '" src="' + ROOT + 'cars/thumbs/' + e.files[0].name.toLowerCase() + '"/>');
$('#' + name).fadeIn('slow');
}
else if (e.operation == 'remove')
{
$('#' + name).fadeOut('slow', function() {
$('#' + name).remove();
})
}
}
})