Сессии и uploadify

Я использовал D для своего исследовательского проекта при разработке глобального алгоритма оптимизации. Я применил его к проблеме учебных нейронных сетей. Вам решать, ли Вы хотите назвать этот "реальный мир".

19
задан Uffo 16 August 2009 в 16:20
поделиться

7 ответов

Обычно идентификатор сеанса не читается из POST. You could do this:

$_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];
session_start();
8
ответ дан 30 November 2019 в 03:29
поделиться

В настоящее время у меня аналогичная проблема с сеансами uploadify + PHP.

Используя error_log (), я могу отслеживать, что когда приложение uploadify flash отправляет данные файла на сервер, оно передает правильный session_id в сценарий загрузки:

'scriptData': {'session_id': session_id},

(session_id, установленный ранее: var session_id = '';)

Итак, это позволяет мне проверить, что да , идентификатор сеанса для моих страниц и идентификатор сеанса для сценария загрузки фактически одинаковы.

Но, когда сценарий запускается, я запускаю сеанс с помощью:

session_id ($ session_id); session_start ();

Каким-то образом ВСЕ данные сеанса уничтожены (я также установил данные сеанса в массив, чтобы я мог обновлять и наблюдать, как данные растут с каждым запросом, а затем, когда я использую uploadify, они стираются).

Я понятия не имею, как это отладить: /

edit: suhosin может разрушать сеанс:

http://www.uploadify.com/forum/viewtopic.php?f=7&t=2062

3
ответ дан 30 November 2019 в 03:29
поделиться

вы не можете решить эту проблему, потому что uploadify имеет собственный идентификатор сеанса, который создается флэш-плеером. Другими словами, флэш-плеер обращается к скрипту uploadify как новый пользователь и получает новый сеанс. Единственный способ решить эту проблему - передать идентификатор сеанса текущей страницы через post в сценарий uploadify.

11
ответ дан 30 November 2019 в 03:29
поделиться

я нашел решение, которое намного легче реализовать, особенно если у вас уже есть ориентированный на сессию бэкенд PHP для входа в систему и т.д.:

просто пишут следующий код в положении jQuery:

'script'    : '/upload.php?<?= session_name(); ?>=<?= session_id(); ?>',

, который волшебно присоединит ваше текущее имя сессии и ваш идентификатор сессии.

7
ответ дан 30 November 2019 в 03:29
поделиться

Это может сработать, но с точки зрения безопасности это действительно плохая практика. Это позволило бы любому, у кого есть действительный идентификатор сеанса, выдать себя за этот сеанс, просто изменив идентификатор сеанса. Было бы лучше сделать даже базовое синхронное шифрование сеанса с секретным ключом (известным только внутреннему коду), а затем расшифровать его с помощью скрипта upload.php.

6
ответ дан 30 November 2019 в 03:29
поделиться

Добавьте это перед вашим внешним .js файлом с реализацией uploadify.

<!-- Get sesssionId -->
 <script type="text/javascript" charset="utf-8">
  var sessionId = "<?php echo session_id(); ?>";
 </script>

Затем добавьте это в скрипт uploadify.

$('#uploadify').uploadifySettings('scriptData', {'sessionId': sessionId});

Это нужно скрипту PHP uploadify.

// Start session
 session_id($_POST['sessionId']);
 session_start();

Все готово!

3
ответ дан 30 November 2019 в 03:29
поделиться
$(document).ready(function() {



nombre = $('#uploadify1').val(); //first input

autor = $('#uploadify1').val();   // second one



$("#uploadify").uploadify({

    'uploader'       : UPLOADIFY_URL+'scripts/uploadify.swf',

    'script'         : 'ticket_docs_uploadify.php',

    'cancelImg'      : UPLOADIFY_URL+'cancel.png',

    'folder'         : 'ticket_document_uploads',

    'queueID'        : 'fileQueue',

    'checkScript'    : 'ticket_docs_check.php?nombre='+nombre+'&autor='+autor,

    'fileDesc'       : 'I am testing uploadify',

    'buttonText'     : 'Upload',

    'scriptData'     : {'sessTempTickedId': '<?php echo $_SESSION['sessTempTickedId'];?>', 'pkEmployeeID': '<?php echo $_SESSION['pkEmployeeID'];?>', 'EmployeeDepartment': '<?php echo $_SESSION['EmployeeDepartment'];?>' },

    'auto'           : false,

    'multi'          : true,        

    'onComplete'     : function(a, b, c, d, e){

        //alert(a+b+c+d+e);

    },

    'onAllComplete': function(event,data){

        //something here             alert('asdasd');             alert(json_decode(data));            

    }

});

});



<?php include_once('../../common/inc/connectdb.inc.php');

if (!empty($_FILES))

{

$tempFile = $_FILES['Filedata']['tmp_name'];

$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';

//change the file name here



$fileName = time();



$arrFile = pathinfo($_FILES['Filedata']['name']);



$strFileExt = strtolower($arrFile['extension']);



$strFileName = $arrFile['filename'];



$strFileBaseName = $arrFile['basename'];



$fileName = $fileName.'.'.$strFileExt;



$targetFile = str_replace('//','/',$targetPath) . $fileName;



$sql = "INSERT INTO ticket_documents (fkTicketID,fkEmployeeID,fkDepartmentID,TicketDocumentName,TicketDocumentLabel) VALUES ('".$_POST['sessTempTickedId']."','".$_POST['pkEmployeeID']."','".$_POST['EmployeeDepartment']."','".$fileName."','".$_FILES['Filedata']['name']."')";

mysql_query($sql) or die(mysql_error());



move_uploaded_file($tempFile,$targetFile);

echo "1";

}

?>
-3
ответ дан 30 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: