• 解決済 web-cosmo

    (@web-cosmo)


    パスワード保護した記事のパスワードのクッキーを、ブラウザを閉じたら削除されるようにしたいのですが、どうすればよいのでしょうか。

    別フォーラムにありました、施作を実行しましたが、解決しません。

    施作内容は、wp-pass.php 15行目付近の内容を以下の通りに変更しました。
    setcookie(‘wp-postpass_’ . COOKIEHASH, $_POST[‘post_password’], 0, COOKIEPATH);

    IE8のインターネットオプションの閲覧の履歴>設定>ファイルの表示でcookieが残っていることが確認されています。有効期限日時もデフォルトの設定どおりの10日後になっています。

    完全に削除した時は、正常に動作(パスワード入力欄が表示されるのですが)一度ログインするとやはりcookieが残ってしまいます。

    PS
    IE8の他、FireFox、Operaなども同様の動作です。
    WPのバージョンは、WordPressのバージョンは、3.4.1です。

    どなたか、設定方法をご教授いただけないでしょうか?

    wp-pass.php 設定内容詳細

    <?php
    /**
    * Creates the password cookie and redirects back to where the
    * visitor was before.
    *
    * @package WordPress
    */

    /** Make sure that the WordPress bootstrap has run before continuing. */
    require( dirname(__FILE__) . ‘/wp-load.php’);

    if ( get_magic_quotes_gpc() )
    $_POST[‘post_password’] = stripslashes($_POST[‘post_password’]);

    setcookie(‘wp-postpass_’ . COOKIEHASH, $_POST[‘post_password’], 0, COOKIEPATH);

    wp_safe_redirect(wp_get_referer());
    ?>

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • OSは何でしょう?
    [インターネットオプション]の[ファイルの表示]で開くフォルダとは違う場所にクッキーが保存されます。
    Vistaと7は次の場所です。
    [C:\Users\アカウント\AppData\Roaming\Microsoft\Windows\Cookies\Low]
     
    上記の場所のクッキーを削除してから確認してみてください。
     
    http://matsh.jp/d/IE7Cookie
    http://pasofaq.jp/windows/mycomputer/folderlist.htm
     
    Firefoxのバージョンはいくつでしょうか?
    Firefoxの場合、ブラウザを閉じても開いたままのタブのセッションは継続されるようです。
    タブを閉じてブラウザを終了した場合、終了したタブのセッションは切れているので、パスワードの入力フォームが表示されます。
    最新のベータバージョンでは、前回のセッションを復元するボタンがあって、そのボタンをクリックした場合はセッションが継続されますが、新しく開いたタブで表示した場合は、パスワードの入力フォームが表示されます。(一度セッションを復元するボタンをクリックした場合は、既にセッションが復元されていますので、再度終了して確認してください。)
     
    Operaは確認していませんが、タブを開いたままにしているのでしたら、Firefoxと同じ挙動ではないかと思います。
     
    各ブラウザの仕様ですので、どのような動作になるかはユーザーの使い方に依存します。
    WPやPHPのsetcookie()関数の問題ではありませんので、セッションではなく、短い期限のクッキーの発行など、別の手段を検討してみてください。

    トピック投稿者 web-cosmo

    (@web-cosmo)

    早速お返事いただき感謝申し上げます。
    OSは、7 64bit になります。

    因みに、ご指摘の\AppData\Roaming\Microsoft\Windows\Cookies\Low 内にデータはありませんでした。

    IE8のインターネットオプションの閲覧の履歴>設定>ファイルの表示では、
    \AppData\Local\Microsoft\Temporary\Internet Files 内を見ているようです。
    ここでは、残っています。

    Firefoxのバージョンは14.0.1になります。ご指定の通り試してみました。
    タブを閉じてブラウザを終了してみましたが、表示されてしまいます。

    どちらにしてもご指摘の通りユーザーの使い方により制御できないようでは、難しいという事になるのでしょうか?
    他に、有効期間を1日とか30分などのように短縮するなどで解決を図るしかないのでしょうか?

    トピック投稿者 web-cosmo

    (@web-cosmo)

    色々と調査しました。その結果、wp-login.phpにもcookieの有効期限の設定がされておりこちも改変しないと有効にならないことが判明しました。

    393行目付近
    setcookie( ‘wp-postpass_’ . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST[‘post_password’] ) ), time() + 864000, COOKIEPATH );

    setcookie( ‘wp-postpass_’ . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST[‘post_password’] ) ), 0, COOKIEPATH );

    上記の通り改変しましたら可能となりました。

    解決済みのようですが、パスワード保護した記事のパスワードのクッキーを、ブラウザを閉じたら削除されるようにする場合、参照トピックの通りwp-pass.phpを変更するだけで大丈夫です。
    デフォルトのwp-login.phpには、記事のパスワードのクッキーを保存する記述はありません。
    wp-login.phpもカスタマイズしていたのでしょうか?
     
    Firefoxでは(おそらくOperaも)タブを開いたままで終了した場合、他のバージョンは不明ですが、IE9では[最終閲覧セッションを再度開く]を実行すると、前回のセッションが有効になって記事がそのまま表示されます。(ただし、IE9はページを更新するとセッションは無効になります。)
    どういう目的で記事をパスワード保護しているのか分かりませんが、上でも返信したとおり、ユーザーが使用しているブラウザと操作に依存することを踏まえて利用してください。
     
    クッキーの保存場所についてですが、IEの保護モードが無効か、UACをオフにしているのでしょうか?
    その場合、クッキーは次の場所と、[Temporary Internet Files]フォルダの両方に保存されます。
    [C:\Users\アカウント\AppData\Roaming\Microsoft\Windows\Cookies]
     
    Internet Explorer の Cookie 操作 – re-Think things
    マルウエア対策として生まれたVista+IE7の「保護モード」- ITpro
    保護モードの Internet Explorer の理解と機能 – msdn
     
    wp-login.phpの独自カスタマイズが原因だったようですので、今回は関係ないようですが、参考情報として残しておきます。

    トピック投稿者 web-cosmo

    (@web-cosmo)

    参考情報ありがとうございます。

    会員用コンテンツとして構築する予定ですが、会員ごとに見ることができるコンテンツが違う為、記事単位にシンプルにパスワード保護をかけることができる仕様がベストと考え現在に至っています。

    別スレッドでは、wp-pass.phpを変更するだけで大丈夫との事でしたが、cookieの保存先の有効期間がどうしても10日間が残っていたため、他のプログラムが干渉しているのかと推測し、wp-login.phpにもcookieの有効期間が10日間有効となっていました。試験的に有効期間を0として試験した結果、cookieの保存先にて確認したら問題なく処理が確認できました。

    どうして、wp-login.php干渉してしまうのか(優先)されてしまうのか技術的な事は不明ですが、根本的な問題ではあると思いますが、それ以上にユーザー側のブラウザの種類および利用方法に依存する事の方が、問題と感じているところです。

    popupさんへ、
    wordpress 3.4.1以降では、
    wp-pass.php

    wp-register.php
    が無いですよ。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「パスワード保護 cookieの設定について」には新たに返信することはできません。