サポート » プラグイン » マルチサイトとKtai Styleでauからログイン出来ない

  • 次のトピックで誤って便乗質問していました。
    http://ja.forums.wordpress.org/topic/4951?replies=8
    以降、その続きです。

    wordpress3.1マルチサイト
    ktai-style2.0.3
    で構築した携帯サイトにau機種「NS01」からログインができません。
    (wordpress3.0.5、3.0.1のマルチサイトでも同様の現象を確認しています)

    同じau機種でもマルチサイト化する前の状態ではログインが可能、docomoやsoftbankの端末ではマルチサイト化以後もログインが可能でした。

    なお、wp-content/plugins/ktai-style/admin/class.phpの関数「get_sid」で、sidが取得できていないことがわかりました。

    public function get_sid() {
            global $Ktai_Style;
            $sid = NULL;
            if ($Ktai_Style->get('cookie_available')) {
                    $sid = isset($_COOKIE[KTAI_COOKIE]) ? $_COOKIE[KTAI_COOKIE] : NULL;
            } elseif (isset($_POST[self::SESSION_NAME])) {
                    $sid = $_POST[self::SESSION_NAME];
            } elseif (isset($_GET[self::SESSION_NAME])) {
                    $sid = $_GET[self::SESSION_NAME];
            }
    
    //この段階で$sidには何も入っていない。
    
            if (! is_string($sid) && ! is_numeric($sid)) {
                    $sid = NULL;
            }
            return $sid;
    }

    マルチサイト化しているとはいうものの、試験はID=1のブログで行っているため、データベースの接頭辞の問題とは関係がなさそうです。
    (そもそも、docomoやsoftbank携帯からではログインできています)

    変数の内容を表示するのでさえ手古摺っている状態です。

    そこで質問ですが、

    1.au携帯からの接続において、マルチサイト状況下のwp-content/plugins/ktai-style/admin/class.phpの関数「get_sid」でsidを取得できる方法があれば教えてください。

    2.wp-content/plugins/ktai-style/admin/class.phpで変数の内容を表示させる方法(たとえば、このファイル内でks_die等の関数を利用する方法)を教えてください。

    些細なヒントでもかまいません。情報の提供をお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 maxline

    (@maxline)

    2.wp-content/plugins/ktai-style/admin/class.phpで
    変数の内容を表示させる方法
    (たとえば、このファイル内でks_die等の関数を利用する方法)
    を教えてください。

    の方は解決しました。

    引き続き1の質問に対するヒントをお願いいたします。

    トピック投稿者 maxline

    (@maxline)

    通常のサイトとマルチサイト、それぞれで挙動を調べました。

    ktai-styleのファイルlogin.phpの関数「login」で違いがありました。

    通常のサイトではクッキーの内容が保存されており、マルチサイトでは保存されていませんでした。

    さかのぼり調べていくと、最初にktai_style.phpが呼び出された時点でクッキーが保存されていないことがわかりました。
    (マルチサイトでは保存されていませんが、当然、通常のサイトではクッキーが保存されています)

    そこで、質問を追加させてください。

    3.au携帯からマルチサイトのktai-styleを呼び出した場合、クッキーが保存される方法を教えてください。

    ほんの些細なことでもかまいません。情報があれば提供をお願いいたします。

    トピック投稿者 maxline

    (@maxline)

    原因はプラグイン(ktai-style)ではなくauおよびwordpress(マルチサイト)にあるようです。

    wp-includes/ms-default-constants.phpを次のように変更するとau携帯からもログインが可能になりました。
    (プラグインの状態確認を省略しておりすので、「ktai-style」がOFFの状態でこの適用を変更するとエラーになります。)

    /**
     * Defines Multisite cookie constants.
     *
     * @since 3.0.0
     */
    function ms_cookie_constants(  ) {
    	global $current_site;
    
    	/**
    	 * @since 1.2.0
    	 */
    	if ( !defined( 'COOKIEPATH' ) )
    		define( 'COOKIEPATH', $current_site->path );
    
    	/**
    	 * @since 1.5.0
    	 */
    	if ( !defined( 'SITECOOKIEPATH' ) )
    		define( 'SITECOOKIEPATH', $current_site->path );
    
    	/**
    	 * @since 2.6.0
    	 */
    	if ( !defined( 'ADMIN_COOKIE_PATH' ) ) {
    		if( !is_subdomain_install() ) {
    			define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH );
    		} else {
    			define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
    		}
    	}
    
    	/**
    	 * @since 2.0.0
    	 */
    	if ( !defined('COOKIE_DOMAIN') && is_subdomain_install() ) {
    ###ここから追加
    		if(is_ktai() == KDDI){
    			if ( !empty( $current_site->cookie_domain ) )
    				define('COOKIE_DOMAIN', $current_site->cookie_domain);
    			else
    				define('COOKIE_DOMAIN', $current_site->domain);
    			return;
    		}
    ###ここまで追加
    		if ( !empty( $current_site->cookie_domain ) )
    			define('COOKIE_DOMAIN', '.' . $current_site->cookie_domain);
    		else
    			define('COOKIE_DOMAIN', '.' . $current_site->domain);
    	}
    }

    要するに、au携帯では . (ドット)から始まるCOOKIE_DOMAINを認識できないということなのでしょうか。。

    この変更による他の機能への影響も心配です。
    より良い解決策があれば、ご教授をお願いいたします。

    (ここから先の修正や調査は、おそらく私の技量では不可能でしょう。)
    (助けてくれ!ゆりっぺ!)

    モデレーター IKEDA Yuriko

    (@lilyfan)

    au のクッキー仕様は確かに特殊なんですよね。ちょっと調べてみます。
    http://labs.unoh.net/2008/10/cookie.html あたりが関係しそうなのかも

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「マルチサイトとKtai Styleでauからログイン出来ない」には新たに返信することはできません。