モンスターカレンダー

« 2010年11月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

xoopsの最近のブログ記事

xoopsで、ログインやマイアカウント、問い合わせページをSSL化。

 ↓このモジュールを使ってみた。

どこでもSSL SSL/非SSL自動切替版 anywhereSSL

 

●不具合が1点。

サイズの大きいページが出力されない。

→内部的に使用している preg_replace の長さ制限にひっかかっていた。

この関数のマニュアルページのコメントを参考に、include/buffering.inc.php を以下のように修正した。

(修正前)

   $buf = preg_replace( $pattern, $replacement, $buf );

(修正後)

     $iSet= 0;  // Count how many times we increase the limit
     while( $iSet< 10 ) {
         $sNewText= preg_replace( $pattern, $replacement, $buf );  // Try to use PREG

         if( preg_last_error()== PREG_BACKTRACK_LIMIT_ERROR ) {  // Only check on backtrack limit failure
             ini_set( 'pcre.backtrack_limit', (int)ini_get( 'pcre.backtrack_limit' )+ 30000 );  // Get current limit and increase
             $iSet++;  // Do not overkill the server
         } else {  // No fail
             $buf = $sNewText;  // On failure $sNewText would be NULL
             break;  // Exit loop
         }
     }

 

●もう1点。表示上の不具合ではないが、SEOでNGなんだそうで。

Cookieに情報を書き込むため、初回アクセス時、同じURLにリダイレクトしている。
この時にステータスが302となるが、検索エンジンでは拾ってくれなくなる。

→ とりあえずリダイレクトを外してみた。運用後1ヶ月弱だが、今のところは不具合はない。

include/precheck.inc.php 下記、一番下、headerをコメント化。

     //*****************************************************************/
     // ログイン処理時のみ、XOOPS_ROOT_PATH/include/checklogin.phpをinclude
     //*****************************************************************/
     if ( ($_SERVER['SCRIPT_FILENAME'] === XOOPS_ROOT_PATH .'/user.php') &&
      ($_SERVER['REQUEST_METHOD'] === 'POST') &&
      (!empty($_POST['op']) && $_POST['op'] === 'login') ) {
      include_once( XOOPS_ROOT_PATH.'/include/checklogin.php' );
      exit;
     }
     //header( "Location: " .$current_url );

 

このモジュール、あまり情報がないようです。使われていないのか...? xoops SSL化のスタンダードってなんだろう。

xoopsのブックマークモジュール「Shiori」を入れたが動かない。
管理メニュー動かすと画面が真っ白。
PHP Fatal error:  Call to undefined function spl_autoload_register()...
この関数はphp5で使えるということで、4からバージョンアップしてみた。しかしやはり動かない。
このモジュールで同様な事例を探すが、特にない。phpinfoでsplも入っているし。

マニュアルでは
「すべての登録済み __autoload 関数を配列で返します。 autoload スタックが有効になっていない場合は、FALSE. が返されます。 関数が何も登録されていない場合は、空の配列が返されます。」
FALSEが返ってきているから、スタックが有効になっていないらしい。有効にするには?と調べるが、なかなかヒットせず...

そんなこんなでトライ&エラーで、ようやく動きました。

        spl_autoload_register('spl_autoload');
        spl_autoload_register(array(__CLASS__, 'autoload'));

1行目を追加することで、スタックが有効になったのか?
システムによってはこれが自動で実行されるようになっているから問題ないのか?
よく分からないが、便利なモジュールなんで動いてよかった。。