ホームページ  >  記事  >  バックエンド開発  >  codeigniter と swfupload_PHP を統合するための最良のソリューションのチュートリアル

codeigniter と swfupload_PHP を統合するための最良のソリューションのチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:28:32762ブラウズ

codeigniter は軽量で便利な MVC フレームワークです。最近のプロジェクトにはバッチアップロードが含まれているため、インターネット上に ci と swfupload に関する投稿がたくさんありますが、あまり完全ではないので、ここで紹介します。各社のメリットを私の実体験をもとにまとめました。

質問 1: ファイルの種類を取得できませんか?

答え: SWFUPLOAD のすべての種類のファイルの MIME は application/octet-stream であるため、Codeigniter に付属するアップロード クラスを使用しても、それが画像であるかどうかを正確に判断できません。答えは公式 ci wiki に従って示されています

ビュー ファイルに SWFUpload JavaScript ファイルを含めます:

コードをコピーします コードは次のとおりです:
do_upload 関数の名前の値として「Filedata」を渡します:
$this->upload->do_upload('Filedata')
mimes.php ファイルで、許可されているすべての画像形式に「application/octet-stream」を追加します。
'gif' => array('image/gif', 'application/octet-stream'),
'jpeg' => array('image/jpeg', 'image/pjpeg', 'application/octet-ストリーム'),
'jpg' => array('image/jpeg', 'image/pjpeg', 'application/octet-stream'),
'jpe' => array('image/jpeg', ' image/pjpeg' , 'application/octet-stream'),
'png' => array('image/png', 'image/x-png', 'application/octet-stream'),


質問2: セッション認証のバックグラウンドがあり、アップロード後にログアウトする状況になります 答え:

一般的な方法: swfuplaod がアップロードすると、元のプロセスと矛盾する新しいプロセスが開きます。この問題を解決するには、session_id を指定し、投稿された session_id があるかどうかを判断する必要があります。次に、関数 session_id( $ _POST['PHP_SESSIONID']) を使用してそれを指定します。

アップロードページのJSで、現在のSESSION_IDを取得できます。

CI でのステータス: 通常の状況では、uploadify と swfupload はフラッシュ クライアントを使用するため、生成されるユーザー エージェントはユーザーのブラウザで使用されるユーザー エージェントとは異なる必要があります。したがって、ユーザーがシステムにログインするときにセッションが生成されますが、アップロード プロセスがトリガーされるとき (上記の useragent オプションがオンになっているとき)、別のセッションが生成されます。

つまり、セッションが失われるわけではありませんが、ファイルをアップロードすると、CI はアップロード用に別のセッションを作成します。

解決策 1: $config['sess_match_useragent'] を FALSE に設定して、再試行します。

解決策 2 (

推奨): セキュリティ上の理由から、最初の解決策を使用することは推奨されません。アップロードされるたびに URL にトークンを追加してサーバーと比較するなど、別の検証方法を使用することをお勧めします。サイド トークン (たとえば、このトークンはユーザー名のハッシュ値にすることができます)。具体的な実装方法については、stblogのアップロード検証実装(swfuploadを使用)を参照してください。 ----私がこの方法を試してみた重要な点は、セッション クラスが autoload で自動的にロードされる場合、これは間違いなく失敗するということです。たとえば、To log を使用して、MY_Controller が CI_Controller から継承する新しいクラスを作成することです。アップロード クラスが CI_Controller から継承している場合は、もちろん、アップロードを検証する必要がありますが、post_params を使用して渡すことができます。検証用の値:

例:


コードをコピーします コードは次のとおりです:
class Upload extends CI_Controller {
//*******
//*****
}
//~~ ~~~~ ~~~~~~~~~~~
class client_photo extends MY_Controller {
function __construct() {
parent::__construct();
function Index() {
}
}
//~~ ~~ ~~~~~~~~~~~~~~~~~
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load-> library( 'セッション');
}
}

www.bkjia.com本当http://www.bkjia.com/PHPjc/788608.html技術記事 codeigniter は軽量で便利な MVC フレームワークです。最近のプロジェクトではバッチアップロードが含まれるため、インターネット上に ci と swfupload に関する投稿がたくさんありますが...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。