Почему я не могу загрузить файл в Dropzone в codeigniter, когда CSRF имеет значение TRUE

Почему я не могу загрузить файл в Dropzone в codeigniter, если csrf_protection имеет значение TRUE? и когда я делаю "csrf_protection" ЛОЖНЫМ, загрузка работает, но могу ли я сделать "csrf_protection" ИСТИННЫМ и работать нормально?

это мои контроллеры:

function proses_upload(){
        $config['upload_path']   = FCPATH.'/upload-foto/';
        $config['allowed_types'] = 'gif|jpg|jpeg|png|ico';
        $this->load->library('upload',$config);

        if ($this->upload->do_upload('userfile')){
        $token=$this->input->post('token_foto');
        $nama=$this->upload->data('file_name');
        $this->db->insert('foto',array('nama_foto'=>$nama,'token'=>$token));
        }
	}

function remove_foto(){
	$token=$this->input->post('token');
	$foto=$this->db->get_where('foto',array('token'=>$token));

	if ($foto->num_rows()>0){
	$hasil=$foto->row();
	$nama_foto=$hasil->nama_foto;
	if (file_exists($file=FCPATH.'/upload-foto/'.$nama_foto)){
		unlink($file);
		}
	$this->db->delete('foto',array('token'=>$token));
		}
	echo "{}";

}

это в просмотрах:

  
Dropzone.autoDiscover = false;

var foto_upload= new Dropzone(".dropzone",{
url: "<?php echo base_url('index.php/upload/proses_upload') ?>",
maxFilesize: 2,
method:"post",
acceptedFiles:"image/*",
paramName:"userfile",
dictInvalidFileType:"Type file ini tidak dizinkan",
addRemoveLinks:true,
});

foto_upload.on("sending",function(a,b,c){
	a.token=Math.random();
	c.append("token_foto",a.token);
});

foto_upload.on("removedfile",function(a){
	var token=a.token;
	$.ajax({
		type:"post",
		data:{token:token},
		url:"<?php echo base_url('index.php/upload/remove_foto') ?>",
		cache:false,
		dataType: 'json',
		success: function(){
			console.info("Foto terhapus");
		},
		error: function(){
			console.info("Error");
		}
	});
});

и это в моем config.php специально для CSRF:

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

Кешируется ли ваша форма? См .: [ссылка] symfony.com/doc/3.3/http_cache/form_csrf_caching.html

Jamie_D 01.09.2018 18:16

@Jamie_D Думаю, да, но я мало об этом знаю

Adhiwhit 01.09.2018 18:24

Вы должны использовать информацию из приведенной выше ссылки или настроить страницу формы на «без кеша» Подробнее здесь: [ссылка] stackoverflow.com/questions/19775382/codeigniter-disab‌ ле-кеш

Jamie_D 01.09.2018 18:44

поэтому я просто отключаю кеш, если хочу установить TRUE для csrf_protection? Я недавно перешел по вашей ссылке, чтобы отключить кеш, но это не работает

Adhiwhit 01.09.2018 19:10

Убедитесь, что вы очистили кеш браузера и полностью обновили его (Ctrl-F5).

Jamie_D 01.09.2018 19:16

Вам также следует вручную удалить кешированные элементы в папке приложения / кеша.

Jamie_D 01.09.2018 19:18

@Jamie_D все еще не работает

Adhiwhit 01.09.2018 19:19

Хотя я по-прежнему считаю, что кеширование - это ваша проблема, я бы использовал консоль разработчика для проверки любых других непредвиденных проблем (например, межсайтовой блокировки, ошибок CORS и т. д.). Вы можете попробовать один из способов, проиллюстрированных здесь [ссылка] symfony.com/doc/3.3/http_cache/esi.html или здесь [ссылка] symfony.com/doc/3.3/templating/hinclude.html

Jamie_D 01.09.2018 19:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
276
0

Другие вопросы по теме