2011-07-10 3 views
1

コードイグナイターで作業しているUploadifyを取得しようとしていますが、既に作成されたセッションを取得する代わりに、新しいセッションを持つすべてのユーザーが「ShockWave Flash」を作成しています。コードイグナイターがビュー内でデータベースsession_idを渡しています

私は、次のsetttingsは、CodeIgniterのセッションテーブルがそう UPLOADIFY

session_id: d39bce3d9c734081379b286449cf56ce 
    ip_address: 127.0.0.1 
    user_agent: Shockwave Flash 
last_activity: 1310341167 
    user_data: 

ブラウザ

session_id: 73b05af777af0e6a56e7bbba8f9714f6 
    ip_address: 127.0.0.1 
    user_agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/53 
last_activity: 1310341663 
    user_data: a:6:{s:5:"email";s:32:"[email protected]"} 

WITH私はハックしようとしているようなものです

$config['sess_cookie_name']  = 'session'; 
$config['sess_expiration']  = 7200; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = TRUE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'sessions'; 
$config['sess_match_ip']  = TRUE; 
$config['sess_match_useragent'] = FALSE; 
$config['sess_time_to_update'] = 300; 

を設定していますこれは、ブラウザのsession_idをPHPに取得するように追加するので、uplのように私はセッションIDを与えられたユーザーセッションデータを取得できます。

   $(document).ready(function() { 
       $('#uploadify').uploadify({ 
        'uploader' : '/uploadify/uploadify.swf', 
        'script' : '/index.php/upload/uploadify/'.$this->session->userdata('session_id').'', 

私の質問は: 1)それは、私がソースで公にSESSION_IDを示していますことを悪いと利用できるというのsession_idが、私はこれを行わない場合でも、かかわらずですか? 2)「アップロード」コントローラーで、どのようにしてsession_idを基本的に「ロード」するか、そこからデータを取り出すことができますか?

答えて

1
  1. 問題を引き起こす唯一の方法は、session_id Cookieを暗号化している場合です。それ以外の場合は、ユーザーにもう少し実際のデータを提供していません。
  2. あなたはカスタム変数を見て、あなたのMY_Sessionクラスでsess_read()または__constructを上書きする必要があります(そう、そう、ほとんどの場合、彼らはとにかく、そのデータを取得することができます)か、クッキーに

基本的に修正することができますこれは

public function __construct($id) 
{ 
    // a hack, but you need a hack 
    $_COOKIE[ $this->sess_cookie_name ] = $id; 
    parent::__construct(); 
} 
+0

ありがとうございましたcwallenpoole!だから私は実際にセッションクッキーを暗号化しているので、クッキーはユーザーに暗号化されています。おそらく私はsession_idでカスタム暗号化を行うだけで、安全に公開することができます。私は今夜​​、上記のコードを試してみましょう、ありがとう! – user391986

+0

いくつかの質問1)上記のようなセッションクラスのコンストラクタを変更した場合、その入力$ idをどのように指定すればよいですか?適切な流れは何ですか? 2)単純にsess_read()関数を修正して手動でセッションIDパラメータを使って呼び出すことを試みましたが、技術的にはうまくいきましたが、sess_readは2回呼び出されます。私のコントローラの私は本当にコンストラクタを変更する必要があると思う。 3)コードイグナイタライブラリをどのように拡張しますか?それはシステムクラスと同じではないようです... – user391986

+0

1. $ this-> load-> library( 'session'、$ id); 2. session_idを手動で設定している場合は、どのくらい頻繁に呼び出すかは関係ありません。エラーはありますか? 3. MY_Session.phpという名前のアプリケーション/ライブラリの下にファイルを作成します。クラスMY_Sessionをその中に置き、サブクラスCI_Sessionにします。 – cwallenpoole

関連する問題