vote.inc.phpなど:同一ページで連続投稿すると更新に失敗する

メッセージ

# voteを複数置いたページで、二つ目以降の#voteに投票した直後に、投票を連続して行おうとすると、投票結果が反映されなかったり、予期しない場所に票が追加されることがあります。

register_global=onの環境で発生します。

$post["vote_no"]が、plugin_vote_conevrt()でカウンタとして使用しているglobalな$vote_noを書き換えてしまうのが原因です。

多分、同一ページに複数設置できる仕掛けのプラグイン(article,comment,*1insert,memoなど)にも同様の問題が起こる可能性が…

$vote_noはplugin_vote_conevrt()内でしか使用しない変数なので、static*2*3 宣言して外部の影響を受けないようにしてみました。



*1 comment.inc.phpはファイルの先頭で$ comment_noをグローバル宣言…
*2 staticってPHPの古いのに実装されているんだろうか…
*3 staticはPHP3でも実装されていますよ。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2002-12-19 (木) 20:17:43
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.209 sec.

SourceForge