Intereting Posts
Использование двойной фигурной скобки в Laravel Collective Использование AJAX для передачи переменной в PHP и повторного получения тех, кто использует AJAX невозможно проверить имя пользователя или нет. хранить данные в текстовый файл, используя php? Как запустить скрипт PHP с помощью задачи расписания Windows? JSON не работает с событием OnChange Как я могу сделать эту же функцию шифрования / дешифрования PHP на iOS с Objective-C? Учетная запись Paypal Express Checkout отсутствует. Ошибка 10400 Symfony2 Doctrine Qb STR_TO_DATE Неизвестная функция Как сделать временную ссылку для загружаемого файла Создание и извлечение файлов из zip-архивов woocommerce_thankyou вызывается 4 раза Регулярное выражение для 7-12 цифр; может содержать пробел или дефис PHP max_execution_time игнорируется (нет безопасного режима, нет общего хоста, только localhost / windows7 / php 5.3.1 и время ожидания Apache равно 300) PHP – Вызывающие функции с несколькими переменными

Настройка переменных сеанса PHP с помощью Flash ActionScript

У меня есть простой скрипт загрузки PHP, который вызывается из моего приложения Flash. Я уверен, что он делает вызов, потому что он фактически загружает файл!

session_start(); $default_path = 'files/'; $target_path = ($_POST['dir']) ? $_POST['dir'] : $default_path; if(!file_exists($target_path)) mkdir($target_path, 0777, true); $destination = $target_path . basename( $_FILES[ 'Filedata' ][ 'name' ] ); $file_name = rand(1,9999).$_FILES[ 'Filedata' ][ 'name' ]; if(move_uploaded_file($_FILES[ 'Filedata' ][ 'tmp_name' ], $destination)){ $_SESSION['path'] = 'flashuploader_online/upload/'.$destination; } 

Тем не менее, я пытаюсь использовать переменную сеанса «путь» в другом скрипте, но это дает мне пустое значение! Да, я обязательно использовал session_start.

Я что-то упускаю?

Обновить

По крайней мере, теперь я знаю, в чем проблема! Но я не уверен, как решить эту проблему, не запускаясь через переменные сеанса. Есть идеи?

Solutions Collecting From Web of "Настройка переменных сеанса PHP с помощью Flash ActionScript"

Вам придется перенести session_id по всем запросам, передав его как переменную. Я обещаю, что это не станет слишком грязным! Вам нужно будет внести пару изменений на страницу, на которой отображается флеш, а также сценарий, на котором он отправляется. Вам также необходимо внести небольшое изменение в приложение Flash, чтобы он мог включать идентификатор сеанса, когда он загружает файл на сервер.

Во-первых, вы захотите предоставить flash с идентификатором сеанса, включив его в FlashVars. Вам понадобится страница, на которой Flash будет предварительно обработан PHP, или не удастся сохранить сеанс. Убедитесь, что вы вызываете session_start () на странице, которая выводит Flash. Вы получите что-то вроде этого:

 <object classid="clsid:(blah)" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="800" height="800" id="ZoomifyHotspotViewer"> <param name="flashvars" value="phpsessionid=<? print session_id(); ?>"> <param name="src" value="YourSWF.swf"> <embed flashvars="phpsessionid=<? print session_id(); ?>" src="YourSWF.swf" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" width="800" height="800" name="YourSWF"></embed> </object> 

Эта часть, в частности, должна быть добавлена ​​как в теги param, так и в embed:

 phpsessionid=<? print session_id(); ?> 

Затем, в своем приложении Flash, когда вы делаете запрос, теперь у вас будет доступ к идентификатору сеанса в переменной «phpsessionid». Вам нужно включить значение в переменную POST с именем PHPSESSID (все кепки) – включить ее, но вы включаете в себя другие переменные, такие как переменная «dir», которую вы используете.

Включение этой переменной гарантирует, что при вызове session_start () на следующей странице сеанс будет восстановлен вместо нового сеанса. Есть несколько случаев конфигурации, когда это происходит не автоматически. Если это окажется для вас (т.е. идентификатор сеанса по-прежнему отличается на следующей странице), вам нужно сделать следующее на странице, которая обрабатывает загрузку:

 session_id($_POST['PHPSESSID']); session_start(); 

Это заставит PHP вручную обновить сохраненный сеанс с указанным ID. Это не должно быть проблемой, с которой вам приходится иметь дело, но если это вам, возможно, придется сделать что-то подобное на следующей странице, которую пользователь продолжает делать, или добавить общий код ко всем страницам:

 if (isset($_REQUEST['PHPSESSID'])) { session_id($_REQUEST['PHPSESSID']); } session_start(); 

Убедитесь, что если вам действительно нужно вызвать session_id () таким образом, как установщик, вы делаете это до вызова session_start ().

Каждый раз, когда веб-сервер предоставляет вам ответ (страницу, графику и т. Д.), Он имеет возможность отправить вашему браузеру cookie.

1) Каждый файл cookie отправляется обратно на тот же веб-сайт, в котором он был в первую очередь. 2) «Содержимое» файла cookie (содержащихся в нем данных) может быть составлено только из любой информации, которую веб-сервер уже знал в любом случае ,

Таким образом, ваш браузер автоматически отправляет файлы cookie в переменную «Cookie» в заголовке HTTP. Вы можете прочитать его с помощью следующей команды в PHP:

 $headers = apache_request_headers(); echo $headers['Cookie']; 

Сервер (если поддержка сеанса включена в конфигурации PHP) автоматически создает PHPSESSID (вы можете изменить имя переменной в конфигурации) в файле cookie, и вы можете получить к нему доступ непосредственно с помощью вышеприведенного скрипта (вам нужно разобрать $ headers, чтобы получить переменную PHPSESSID или любую другую печенье). Я думаю, что нет необходимости использовать flashvars, ваш браузер автоматически добавляет переменную Cookie в HTTP-заголовок.

Надеюсь это поможет !