ma.user
(Frmaxm)
December 20, 2013, 12:12am
1
Привет,
Загрузчик работает, как только добавил сессию - перестал работать сразу же или ошибка Error #2038 " или же 302
[b]config main.php
[/b]
//start session
'session' => array (
'autoStart' => true,
'sessionName' => 'rmmbr',
'timeout' => 300, //30*24*60*60, // месяц
),
код добавления и чтении сессии, может я что не правильно написал…
При проверки существования пользователя
при проверки авторизации
Перестал загружать и выдает ошибку или 302 или Error #2038 .
Народ может, что вар_дампнуть? или там хедер показать) К кто-нибудь с там сталкивался
andy_s
(Arekandrei)
December 20, 2013, 7:35am
2
Flash загрузчик не передаёт PHP_SESSION_ID, поэтому если при загрузке есть проверка, авторизован ли пользователь, то она никогда не будет успешной. Нужно вручную передавать ID сессии GET или POST параметром (не знаю, как это делается в swfupload), а на сервере можно воспользоваться фильтром EForgerySessionFilter (не нашёл его в расширениях, поэтому прикрепляю прямо так).
ma.user
(Frmaxm)
December 20, 2013, 7:59am
3
Можно более подробнее, где его использовать? что-то не соображу…
Вы использовали его?
andy_s
(Arekandrei)
December 20, 2013, 8:20am
4
Да, как и любой фильтр в контроллере:
public function filters()
{
return array_merge(array(
array(
'path.to.EForgerySessionFilter + upload',
),
), parent::filters());
}
actionUpload() отвечает за загрузку файла.
ma.user
(Frmaxm)
December 22, 2013, 9:45am
5
Подключил фильтр, тоже самое…
Файл EForgerySessionFilter.php components // естественно папка компонентс в автолоаде…
// вставил в контроллер UploadController
public function filters() {
return array(
array('application.components.EForgerySessionFilter + upload')
);
}
public function actionUpload(){
$albumID = CJSON::decode(Yii::app()->request->getPost('albumid'));
echo CJSON::encode(array( 'success' => Gphoto::uploadPhoto($albumID, $_FILES['Filedata']), ));
}
загружаю картинку все равно сыпит теми же ошибками
andy_s
(Arekandrei)
December 22, 2013, 6:39pm
6
А в самом SwfUplaod как id сессии передаёте?
ma.user
(Frmaxm)
December 22, 2013, 6:57pm
7
А я туда и не передаю, я проверяю в контроллере родителе
andy_s
(Arekandrei)
December 23, 2013, 7:52am
8
Суть в том, что нужно из flash передать is сессии, с uploadify это можно сделать так, например:
$this->widget('ext.uploadify.EUploadifyWidget', array(
'model'=>$model,
'attribute'=>'file',
'sessionParam'=>'PHP_SESSION_ID',
'options'=>array(
'fileExt'=>'*.jpg;*.png;*.gif',
'script'=>$this->createUrl('upload'),
'scriptData'=>array('album_id'=>$album->id),
'auto'=>true,
'multi'=>true,
'onAllComplete'=>'js:function(event, data){alert("Фотографии были успешно загружены ("+data.filesUploaded+" шт.)");}',
'buttonImg'=>$ui->getThemeFileUrl('images/select_photos.jpg'),
'width'=>180,
'buttonText'=>'',
),
));
Про SwfUpload ничего сказать не могу