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化のスタンダードってなんだろう。