2020/12/05 12:21 JST

Geeklog Japan Forums

CAPTCHAで画像認証をおこなうと「セッションの期限切れ」になる

ページナビゲーション


状態: オフライン

Ivy

Site Admin
管理者
登録日: 01
投稿数: 5960
場所:Tokyo
https://www.geeklog.jp/staticpages/index.php/otoiawasetest このobitastar,および,CORESERVERでデフォルトのままテストしました。 いずれも1.6ですが,問題ありませんでした。 このURLで一度テストしていただけないでしょうか。 画像認証のところだけ,一度リロードさせてみても同じでしょうか。 あるいは,関係ないかもしれませんが,クッキーや履歴を削除してもおなじでしょうか。 2通おなじメールが届くということですが,管理者あてのメールは1通だけ,でしょうか。

状態: オフライン

cleverOne

Forum User
Chatty
登録日: 14
投稿数: 54
Ivyさん、おはようございます。 テストをしていただいて、ありがとうございます。 ----- https://www.geeklog.jp/staticpages/index.php/otoiawasetest このobitastar,および,CORESERVERでデフォルトのままテストしました。 いずれも1.6ですが,問題ありませんでした。 このURLで一度テストしていただけないでしょうか。 ----- ↑について、先ほどテストさせていただきました。CAPTCHAもメール送信も正常に完了しました。 画像認証の部分で一度「再表示」させて試しましたが問題なしです。 ----- あるいは,関係ないかもしれませんが,クッキーや履歴を削除してもおなじでしょうか。 ----- ↑こちらについては、以前も試したのですが全然関係ないみたいです。 Wink ----- 2通おなじメールが届くということですが,管理者あてのメールは1通だけ,でしょうか。 ----- ↑今回のテストでは、お問い合わせ者(私)には1通のメールが届きました。  私が準備した汎用お問い合せフォームでは、「管理者」と「お問い合わせ者」それぞれに同じメールが2通届く症状がでております。(計4通) PHP技術や知識には乏しいのですが、今日も頑張って調べてみます。 よろしくお願いいたします。

状態: オフライン

Ivy

Site Admin
管理者
登録日: 01
投稿数: 5960
場所:Tokyo
http://wiki.geeklog.jp/index.php/InstallSAKURA14 関係ないかもしれませんが,php.iniなどのサーバーの環境設定はどうなっているでしょうか。

状態: オフライン

cleverOne

Forum User
Chatty
登録日: 14
投稿数: 54
Ivyさん、お知らせありがとうございます。
Quote by: Ivyhttp://wiki.geeklog.jp/index.php/InstallSAKURA14 関係ないかもしれませんが,php.iniなどのサーバーの環境設定はどうなっているでしょうか。
はい、php.ini については次のようになっております。 ----- default_charset UTF-8 short_open_tag = off allow_url_fopen = off register_globals = off track_vars On cgi.fix_pathinfo = 1 mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.substitute_character = none mbstring.http_input pass mbstring.http_output pass mbstring.encoding_translation = On mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII mbstring.substitute_character = none magic_quotes_gpc = Off display_errors off error_log "/home/*******/private/******/logs/php_error.log" ----- <追記> CAPTCHAのセッション切れエラーが表示されると、CAPTCHAログには次の内容が記録されています。 ----- 月 10/12 10:03:20 2009 - CAPTCHA: An invalid CAPTCHA string was entered in sp_formmail - IP Address: ****** 月 10/12 10:03:20 2009 - CAPTCHA: Detected an attempt to use old CAPTCHA Session in sp_formmail - IP Address: ****** ----- よろしくお願いします。

状態: オフライン

ひろろん

Site Admin
管理者
登録日: 22
投稿数: 110
まず最初にお断りを・・・CAPTCHA4.0.2は私がリリースいたしましたが、Geeklog1.4.1で確認してます。 その後はGeeklog1.5.0とGeeklog1.6.0のリリース時に関数レベルで最低限の対応をして動くだろう状態にしてきたものなのをご理解ください。 まず、こちらのタイポは元々のCAPTCHAから存在するタイポですね^^;
Quote by: mystral-kk

全く外している可能性が強いのですが、staticpages_formmail.phpの696行目にある

PHP Formatted Code

            $oldSessions = time() - ($_CP_CONFIG['expire']+900);
 
という行を、
PHP Formatted Code

            $oldSessions = time() - ($_CP_CONF['expire']+900);
 
に変えるとどうなるでしょうか? このソースコードの中で他に $_CP_CONFIG という変数が使用されている箇所はないので、タイポのような気がします。

これは今回の問題には影響ない部分ですね。 古いセッションを削除する”タイミングが若干かわる”ぐらいの影響になります。 影響範囲も小さいですし、すぐに対応ではなく、次回提供時には修正したいと思います。 で!元々のCAPTCHAがセッションタイムアウトになる件ですが、 「アカウント登録」にもチェックをつけて、ログアウト後に新規アカウント登録してみて CAPTCHAが正常に動いているか確認してみてもらえませんか? どうもCAPTCHAが正常に動いてないように思います。 これは該当のエラーログが出ている場所が次のように
PHP Formatted Code
            $validationString = DB_getItem($_TABLES['cp_sessions'],'validation',"session_id='" . $csid . "'");
            if ( $validationString == '' ) {
               // no active session was found
                CAPTCHA_errorLog("CAPTCHA: Detected an attempt to use old CAPTCHA Session in " . $type . " - IP Address: " . $_SERVER['REMOTE_ADDR'] );
                $msg = $LANG_CP00['bypass_error_blank'];
                $rc = 0;
                return ( array( $rc, $msg ) );
            }
 
表示時に作成されて埋めこまれているはずの$csidがDB内にない(="")ときにエラーになるようです。 $csidがないと別のエラーなのでcsidが作られてないということもなさそうですし、、、この直前で実行されている古いセッションの削除で削除されているのかもしれないですね。
PHP Formatted Code
        $oldSessions = time() - ($_CP_CONFIG['expire']+900);
        DB_query("DELETE FROM {$_TABLES['cp_sessions']} WHERE cptime < " . $oldSessions,1);
 
ここで15分以上前のセッションを削除しているのですが、time()が古い時間を返すとかDB内に登録されているセッションのcptimeがおかしいとかも考えられます。 あと、ちなみにCAPTCHAのセッションの時間制限は 非公開/plugins/captcha/config.php 内にある
PHP Formatted Code
$_CP_CONF['expire'] = 900;
この部分を見ています。Geeklog標準の設定とは別なのであしからず。
wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします

状態: オフライン

cleverOne

Forum User
Chatty
登録日: 14
投稿数: 54
ひろろん さん、お知らせいただきましてありがとうございます。 私の諸問題に、Ivyさん、mystral-kkさん、ひろろん さんのご登場に大変嬉しくまた感謝しております。 Big Grin さて、ひろろん さんが記された次の内容を試してみました。 ----- で!元々のCAPTCHAがセッションタイムアウトになる件ですが、 「アカウント登録」にもチェックをつけて、ログアウト後に新規アカウント登録してみて CAPTCHAが正常に動いているか確認してみてもらえませんか? どうもCAPTCHAが正常に動いてないように思います。 ----- 結果、CAPTCHAが正常動作?し新規アカウント登録ができました。正直、少々不思議に感じてますが原因の特定になるでしょうか。 そのほか、ひろろん さんが記されている内容についても私なりに理解いたしました。そこで、実行時のフィールドの値がどのようになっているか、汎用お問い合せフォームで cp_session テーブルの各フィールドの状態を確認してみました。 -----  session_id  cptime    validation  counter 4ad2d01da62e  1255329821         0   GoogleChrome 4ad2cfa7c9b6  1255329703         0   Firefox 4ad2cfa7b501  1255329703  80ZG1E    0   Firefox 4ad2d01d802b  1255329821  W7XJFN    0   GoogleChorme ----- 上記ですが、phpMyAdmin でcp_sessionテーブルの内容が表示された状態を表しています。 まず Firefox でサイトへログインし汎用お問い合せフォームへアクセスしたところ、2レコードが追加されました。続いて、GoogleChromeから同様にアクセスしたところ、同じように2レコードが追加されました。 cpitimeが同じレコードにvalidationの値の有無が確認できますが、これはこれでオッケーなのか疑問に感じております。 参考になれば幸いです。 よろしくお願いいたします。

状態: オフライン

ひろろん

Site Admin
管理者
登録日: 22
投稿数: 110
Quote by: cleverOne 上記ですが、phpMyAdmin でcp_sessionテーブルの内容が表示された状態を表しています。 まず Firefox でサイトへログインし汎用お問い合せフォームへアクセスしたところ、2レコードが追加されました。続いて、GoogleChromeから同様にアクセスしたところ、同じように2レコードが追加されました。 cpitimeが同じレコードにvalidationの値の有無が確認できますが、これはこれでオッケーなのか疑問に感じております。
おっ!!これは原因に近づいている気がします!! それぞれでアクセスしたときにできるページのソースでcsidの値(hidden)はどうなっていますか? そのcsidと一致するcp_sessionテーブルのvalidationが空白のものになってたら、ここが原因です。 なぜそうなるのか少し調べてみます。
wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします

状態: オフライン

ひろろん

Site Admin
管理者
登録日: 22
投稿数: 110
手元のGeeklog1.6.0日本語sr2の環境でテストしてみました。 firefoxでformmailページへアクセスしてみると、ページのソースには
PHP Formatted Code
    <input type="hidden" name="csid" value="4ad2d8a7f258">
 
このようにcsidが記述されていて、そのときのcp_sessionテーブルには1件だけデータが作成されてます。
PHP Formatted Code
session_id      cptime  validation      counter
4ad2d8a7f258    1255332007      MFWUDW  0
 
やはり、ここで2件データができるのが原因のようです。 う~ん、なんでそうなるんだろう、、、謎だ。
wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします

状態: オフライン

cleverOne

Forum User
Chatty
登録日: 14
投稿数: 54
ひろろん さん、情報をありがとうございます。 2つ前の下の内容について調べてみました。
おっ!!これは原因に近づいている気がします!! それぞれでアクセスしたときにできるページのソースでcsidの値(hidden)はどうなっていますか? そのcsidと一致するcp_sessionテーブルのvalidationが空白のものになってたら、ここが原因です。
↓早速、調べてみました。 ↓Firefoxブラウザで汎用お問い合せフォームにアクセスした際の、該当部分のソースの一部です。
PHP Formatted Code

<img src="http://cleverone.net/captcha/captcha.php?csid=4ad31d2f22c4&amp;.png" id="captcha" border="0" alt="画像認証" title="画像認証"><br /><a href="javascript:new_captcha();">再表示</a>
<br /><input type="text" name="captcha" size="25" maxlength="40" value="">
<input type="hidden" name="csid" value="4ad31d2f22c4">
<br>テキストを入力してください。大文字と小文字に注意してください。
 
同時に cp_sessionテーブルのレコードの内容を記します。
PHP Formatted Code

 session_id   cptime   validation  counter
4ad31d2f22c4  1255349551  E59CZ1   0
4ad31d2fada2  1255349551        0
 
ソースの value の値は、validationが発行されているレコードに該当します。ひろろん さんの期待とは逆にソースのvalueと一致するレコードのvalidationフィールドには値(E59CZ1)が入っている状態でした。 私自身は、cptimeが同じなのに別のsession_idが発行されることが不思議かなーーと。私一人しかアクセスしていないのに・・・。(たぶん) ひろろん さんが記されたように、2件のデータ(レコード)ができることに原因があるのでしょうかね。 よろしくお願いいたします。

状態: オフライン

ひろろん

Site Admin
管理者
登録日: 22
投稿数: 110
Quote by: cleverOne↓早速、調べてみました。 ↓Firefoxブラウザで汎用お問い合せフォームにアクセスした際の、該当部分のソースの一部です。
PHP Formatted Code

<img src="http://cleverone.net/captcha/captcha.php?csid=4ad31d2f22c4&amp;.png" id="captcha" border="0" alt="画像認証" title="画像認証"><br><a href="javascript:new_captcha();">再表示</a>
<br><input type="text" name="captcha" size="25" maxlength="40" value="">
<input type="hidden" name="csid" value="4ad31d2f22c4">
<br>テキストを入力してください。大文字と小文字に注意してください。
 
う~ん、同じ時間で2つ作られているのが不思議です。 ソースの中にここ以外でもcsidという文字列は検索してもでてきませんか?
wkyInstaller - 各種オープンソースの自動インストーラー Windows専用(.NET2.0以上)/フリーソフト(カンパウェア) http://hiroron.com/ ひろろん [PR]汎用CMS Geeklog でサイト構築/プラグイン制作 いたします

ページナビゲーション

時刻はすべて JST , 現在の時刻は 12:21 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック