LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Forum

d3forumの返信の題名をハッキングする

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/10/30 3:41 | 最終変更
babe  3rd Class   投稿数: 3
こんにちわ
「クレクレ君いらっしゃい!」カテゴリ設置ありがとうございます。
早速甘えて質問させて頂きます。

d3forumにてトピックに返信が多い場合、題名が「Re:Re:Re:Re:Re:
~」と「Re:」が延々に続くことがあります。
返信の場合は「Re:」をリピートさせずに1回で済ませたいのですが、どのようにハッキングしたら良いのか分かりません。
main/reply.phpの49行目辺りを触ればいいのかなとは予測はしているのですが、どなたかご教授頂ければ有難いです。
ちなみに0.86のバージョンを利用しています。


49行目
$subject4html = substr( $reference_subject4html , 0 , 3 ) == 'Re:' ? $reference_subject4html : 'Re: ' . $reference_subject4html ;

この掲示板では子投稿に返信しても「Re:」が1回しか表示されませんね...

宜しくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/10/30 14:07 | 最終変更
babe  3rd Class   投稿数: 3
49行目を削除して自己解決できました。

Quick replyのテンプレートも書き直す必要があるのですが、ちょっと複雑そうなのでコメントアウトして隠すつもりです。

お騒がせしました。
また何かありましたら、こちらでご相談させて頂ければ幸いです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014/11/1 13:58
heiji  Ensign 居住地: ☆☆☆  投稿数: 251
babeさん、こんにちは。

検証環境を作っていないので当てずっぽうですが。

> 49行目を削除して自己解決できました。

この修正だと、最初の返信も「Re:」がつかなくなったりしませんか?

> 49行目
> $subject4html = substr( $reference_subject4html , 0 , 3 ) == 'Re:' ? $reference_subject4html : 'Re: ' . $reference_subject4html ;

このラインが、まさに「返信の場合は「Re:」をリピートさせずに1回で済ませたい」を実現しているコードだと思いますが、うまく動かないということは、このラインにバグがあるのかもしれません。

で、
http://php.net/manual/ja/language.operators.precedence.php
とかをみると、代入演算子 より 比較演算子 のほうが優先順位が高いので、括弧を増やして、

($subject4html = substr( $reference_subject4html , 0 , 3 )) == 'Re:' ? $reference_subject4html : 'Re: ' . $reference_subject4html ;

とするとよかったりしませんか?

それでもだめなら、もうひとつ括弧を増やして、

(($subject4html = substr( $reference_subject4html , 0 , 3 )) == 'Re:') ? $reference_subject4html : 'Re: ' . $reference_subject4html ;

とか。

それでもだめなら、更にもうひとつ括弧を増やして、

(($subject4html = substr( $reference_subject4html , 0 , 3 )) == 'Re:') ? $reference_subject4html : ('Re: ' . $reference_subject4html) ;

とか。

よろしければお試しください。

投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014/11/12 20:27
heiji  Ensign 居住地: ☆☆☆  投稿数: 251
私のローカルに環境作って試した見た限りでは事象が再現しません(=子投稿に返信しても「Re:」が1回しか表示されません)が、
 環境:Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3

($subject4html = substr( $reference_subject4html , 0 , 3 )) == 'Re:' ? $reference_subject4html : 'Re: ' . $reference_subject4html ;

とするとよかったりしませんか?

↑ あっ、間違えてる
Perlのバージョンによって、上記のように誤解釈されてしまうのかな?と思った次第です。

$subject4html = ((substr( $reference_subject4html , 0 , 3 ) == 'Re:') ? $reference_subject4html : ('Re: ' . $reference_subject4html)) ;

って直すと直りませんか?が言いたかったことです。orz
投票数:0 平均点:0.00
  条件検索へ

Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities