ホームページ >バックエンド開発 >PHPチュートリアル >Flash と PHP の対話でセッションを同期する
今日、Uploadify と thinkphp を使用して複数のファイルをアップロードするときに問題が発生しました。アップロードされたファイルを選択して自動的にアップロードした後、「http 301」または「http 302」リダイレクトを促す警告ウィンドウがポップアップ表示されました。その後、Flash プラグインを介して開始されたリクエストは別のクライアントによって開始され、ブラウザ セッションと矛盾しており、サーバーのバックエンド コードにたまたまログイン認証があったことがわかりました。これには、URL またはポストを通じて現在の session_id を php に渡す必要があります。
最初は、session_destory()、session_id($_REQUEST['session_id'])、session_start を通じて、session_id を query_string として php に渡すことを想像しました (つまり、$_GET['session_id'] または $_POST['session_id'])。 () 一連の関数は、ブラウザとの一貫性を保つために Flash セッションを同期します。技術グループの専門家は、php.ini の session.name がパラメータとして渡されている限り、PHP がそれを自動的に処理することを思い出させました。つまり、$_GET、$_POST、または $_COOKIE 配列に「PHPSESSID=現在のセッションの ID」がある場合、PHP は自動的にセッション転送を処理して実装できます。以上:
$("#uploadify").uploadify({ 'uploader' : '/xxx/xxx/uploadify.swf', 'script' : '/xxx/xxx/xxx.php', 'scriptData' : {'PHPSESSID' : '<?= session_id() ?>'}, ....
または:
$("#uploadify").uploadify({ 'uploader' : '/xxx/xxx/uploadify.swf', 'script' : '/xxx/xxx/xxx.php?PHPSESSID=<?= session_id() ?>', ...
でも、Flash Cookie をクリアする方法を誰か教えてくれませんか? 。このため、デバッグプロセスは常に困難でした。ははは。 。バカすぎる
これは今日解決された問題です (笑)。しかし、フラッシュでは PHPSESSID パラメータのみが渡され、値は空のままにできることがわかりました...