トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BBS-サポート掲示板/874

ページの作成や編集にはユーザ登録が必要です。

 編集内容が反映されない - TAKE^2 (2009年01月27日 23時23分00秒)

いつもお世話になっております。

さてhttp://k.hatena.ne.jp/keywordblog/FSWiki?date=20081218にも自分と同じ現象を体験されている方がいらっしゃるのですが3.6.3に上げた直後にはページの編集ができたのですが、後に少しいじったあとからページの編集ができなくなりました。

編集画面は出るのですが、入力したものが反映されないといった感じです。

参照先のURLの方と同様で、Wiki.pmの1378行目の$self->do_hook("save_before");をコメントすれば動作はします。

ですが、どこが原因か分からないので苦慮しています。

みなさま、何か思い当たることはないでしょうか…

  • 禁止ワードを設定してたりはしないですよね? - 名無しさん (2009年01月28日 00時45分39秒)
  • 私も編集画面の入力エリアが更新後白くなり焦りました。 - 名無しさん (2009年01月28日 09時47分39秒)
  • 多分、最初の名無しさんと同じところを疑っているのだと思うのですが、管理者ログイン後の「管理メニュー」からリンク「スパム対策」で開くページで何か設定していませんか? save_before フックで呼ばれる処理は SpamFilter(plugin/core/SpamFilter.pm)のみのようなのですが...。 - 菜梨 (2009年01月28日 11時11分42秒)
  • 禁止ワードは設定していません。一応、SpamFilterのみが呼ばれるというところまでは突き止めていたのですが…。禁止ワードを設定していないのになぜ?といった感じなのです。 - TAKE^2 (2009年01月28日 17時57分30秒)
  • SpamFilter.pmを見たところ、3.6.3からブラウザがUserAgentを返さないと保存を拒否するようになっていました。心当たりはありませんか? - 名無しさん (2009年01月29日 04時23分04秒)
  • FireFoxを使用しており特別なアドオン(UserAgentSwitcherとか)を使用していないので大丈夫だと思っています。また、自分以外の方も書き込みができないようなのでUserAgentでの拒否には該当しないかな?と思っています。 - TAKE^2 (2009年01月29日 12時08分58秒)
  • SpamFilter.pm までたどりついているなら、原因追求まであと一息ではないでしょうか。plugin/core/SpamFilter.pm の hook() 内の $wiki->redirect($cgi->param("page")); が実行されると、ページ保存されずに元のページ表示に移ってしまいますので、いくつかある $wiki->redirect($cgi->param("page")); をひとつずつコメントアウトしてみれば、原因箇所を絞り込めると思います。 - 菜梨 (2009年01月29日 12時16分15秒)
  • ちょっと調べてみました。どうやらRULE_NO_USERAGENTのチェックがうまくいっていないようです。$ENV{'HTTP_USER_AGENT'}が取れていないのでしょうか?FireFoxのLiveHTTPheadersを見る限りではUser-Agentを送っているのですが… ひとまず管理者設定から「ヘッダにUSER-AGENTが含まれていない場合 」のチェックをオフにすることで対応はできましたが、原因は未だによく分かりません… - TAKE^2 (2009年01月30日 02時02分52秒)
  • 私のサイトでも、「ヘッダにUSER-AGENTが含まれていない場合」をオンにしてみたところ、編集内容が保存できなくなりました。log/access.log には、USER-AGENT の記録が残るので、$ENV{'HTTP_USER_AGENT'} が空文字列ということはないと思います。そこで、plugin/core/SpamFilter.pm を次のように変更するとよさそうです(ただし、$ENV{'HTTP_USER_AGENT'}が空文字列の場合の実機動作確認はできていません)。save_before フック で呼ばれる plugin::core::SpamFilter::hook() は、ルールチェック関数 plugin::core::SpamFilter::RULE_NO_USERAGENT() の戻り値が真にならないと編集内容が保存されない仕組みのようです(ううむ、関数名 RULE_NO_USERAGENT と戻り値の論理が反転してますね...)。これに対し、FSWiki 3.6.3(.1) オリジナルの RULE_NO_USERAGENT() では、戻り値として真が返る余地が無いように見えます。 - 菜梨 (2009年01月30日 06時35分56秒)
--- SpamFilter.pm.orig  Sun Dec 14 23:10:42 2008
+++ SpamFilter.pm       Fri Jan 30 04:10:49 2009
@@ -89,7 +89,7 @@
 # USER-AGENTなしの場合に保存を拒否するルール
 #==============================================================================
 sub RULE_NO_USERAGENT {
-       return unless($ENV{'HTTP_USER_AGENT'} eq '');
+       return       ($ENV{'HTTP_USER_AGENT'} ne '');
 }

 1;
  • あー確かに逆転してますね。これですっきりしました。菜梨さんありがとうございました。 - TAKE^2 (2009年01月30日 12時10分59秒)
  • バグトラックに登録しては。 - 名無しさん (2009年02月01日 00時51分01秒)
  • SVNに上記の修正をコミットしました。次のバージョンでは修正されます。 - たけぞう (2009年02月01日 10時41分48秒)
お名前: コメント:

最終更新時間:2009年02月01日 10時41分48秒