Ticket #771 (closed 新規開発: 修正済)

Opened 13 years ago

Last modified 12 years ago

magic_quotes_gpc が有効な環境を考慮する

Reported by: Seasoft Owned by: Seasoft
Priority: Milestone: EC-CUBE2.11.0
Component: その他 Version: コミュニティ (eccube-comu)
Keywords: Cc:
修正済み:

Description

フォーラムで magic_quotes_gpc が有効なために発生する不具合が度々報告されている。

以下の実装が良いのではないかと考えています。

  • インストール時に警告
  • magic_quotes_gpc が有効な環境では、スーパーグローバル変数を書き換えて、クォートを解除する

Change History

comment:1 Changed 13 years ago by nanasess

インストール時に環境をチェックする仕組みは作りたいですね

comment:2 Changed 12 years ago by Seasoft

  • Owner changed from somebody to Seasoft
  • Status changed from new to assigned
  • Milestone changed from EC-CUBE2.5.0beta to EC-CUBE2.5.0

comment:3 Changed 12 years ago by Seasoft

  • Status changed from assigned to closed
  • Resolution set to 修正済

comment:4 follow-up: ↓ 6 Changed 12 years ago by nanasess

  • Status changed from closed to reopened
  • Resolution 修正済 deleted

PHP4.3.11 の環境でエラーが発生するようです.

PHP4 の環境では, 関数引数に & を記載しての参照渡しは構文エラーとなってしまいます.

とり急ぎ, & を除きましたが, きちんと動作するか不明なのでご確認頂けますでしょうか.

  • data/class/SC_Initial.php

     
    336336            // Create lamba style unescaping function (for portability) 
    337337            $quotes_sybase = strtolower(ini_get('magic_quotes_sybase')); 
    338338            $unescape_function = (empty($quotes_sybase) || $quotes_sybase === 'off') ? 'stripslashes($value)' : 'str_replace("\'\'","\'",$value)'; 
    339             $stripslashes_deep = create_function('&$value, $fn', ' 
     339            $stripslashes_deep = create_function('$value, $fn', ' 
    340340                if (is_string($value)) { 
    341341                    $value = ' . $unescape_function . '; 
    342342                } else if (is_array($value)) { 
    343                     foreach ($value as &$v) $fn($v, $fn); 
     343                    foreach ($value as $v) $fn($v, $fn); 
    344344                } 
    345345            '); 

comment:5 Changed 12 years ago by AMUAMU

その修正では動作しないような・・・stripslashes_deepを下記マニュアルの例のように書き換えると、どうでしょう?  http://jp2.php.net/manual/ja/function.stripslashes.php

テスト環境が無い為、確認出来ないため、コメントまで・・・すいません

comment:6 in reply to: ↑ 4 Changed 12 years ago by Seasoft

個人的には、PHP 4 だったら、当該処理をスキップするようにしてもさほど問題ないように感じます。

comment:7 Changed 12 years ago by nanasess

  • Status changed from reopened to closed
  • Resolution set to 修正済

r20452 PHP4 は処理をスキップするよう修正しました

Note: See TracTickets for help on using tickets.