BugTrack/2236
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* If you compare two numerical strings, they are compared...
- 元タイトル: recent プラグインを利用した時の挙動について
- ページ: [[BugTrack2]]
- 投稿者: 名無しさん
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-05-17 (木) 19:58:23
- バージョン: -1.4.7
#contents
** 概要 [#uc5f0b49]
"1", "01", "001" のように、数値の羅列に見えるページ名で...
これはPHPの文字列の比較に関する仕様を考慮できていないのが...
*** 関連 [#cfe674d3]
-[[BugTrack/608]]
--[[BugTrack2/59]]
** メッセージ [#w6f191fc]
メニューバーでrecent プラグインを利用した時、今見ているペ...
この現象が発生するのは、整数のみで構成されたページ名で以...
-- 1、01、001、など、頭の0を省けば同じ数字になってしまう...
最新の20件
2007-05-17
001 <= 例えばこれを表示しているとき
020
20
01 <= これと
1 <= これもリンクされなくなってしまう
00
0
この例で、「1」というページを今見ているとすると、「01」と...
~
[[BugTrack2/235]] の修正をする前の環境(1.4.7_notb)で試...
--------
- すいません、原因はPHP マニュアルの「[[ここ>http://...
整数値を文字列と比較する際、文字列が 数値に変換されます。
数値形式の文字列を比較する場合、それは整数として比較され...
後半部分が、今回recent プラグインで該当しているようです。
// $Id: recent.inc.php,v 1.24 2006/09/30 02:18:23 henohe...
(中略)
function plugin_recent_convert()
{
(中略)
if($page == $vars['page']) {
// No need to link to the page you just read, or notif...
$items .= ' <li>' . $s_page . '</li>' . "\n";
} else {
$r_page = rawurlencode($page);
$passage = $show_passage ? ' ' . get_passage($time) : ...
$items .= ' <li><a href="' . $script . '?' . $r_page ....
' title="' . $s_page . $passage . '">' . $s_page . '<...
}
(以降、省略)
上で、$page がリストに載っているページ名、$vars['page'] ...
if で比較する時に、「1」も「01」も「1」であると解釈される...
もしこれを回避するのならば、if 文の条件をpreg_match で書...
- 比較演算子を==ではなく===にしたらどうでしょうか。 -- [[...
- お知らせありがとうございます。ご指摘の通りで、[[ぃぉぃ...
"If you compare two numerical strings, they are compared...
-- [[cvs:plugin/recent.inc.php]] (1.25)
- %%上のバージョン%%(1.26)で、正しくリンクする事を確認し...
前述の比較演算子「===」、自分も試そうとしてたはずなんです...
その結果は最初のコメントを見ればわかるように、やや的外れ...
ひとまずステータスを「完了」にします。他で同様のものを見...
ありがとうございました。 -- &new{2007-05-17 (木) 23:38:0...
~
- 2007-05-18 00:00 時点のCVS 版ファイルで、「$page, $_pag...
lib/file.php(92): if ($autoalias && $page == $aliasp...
lib/file.php(285): if (PKWK_READONLY || $limit == 0 |...
lib/file.php(422): if ($page != $whatsnew && ! check_...
lib/file.php(723): $links[$page] = ($page == $vars['p...
lib/html.php(85): $is_page = (is_pagename($_page) &&...
lib/html.php(184): if ($_page == $whatsnew || check_n...
lib/html.php(201): if (isset($vars['refer']) && $vars...
lib/link.php(70): $_obj->name == $page || $_obj->nam...
lib/link.php(117): if ($_page != $page)
lib/link.php(152): if ($page == $whatsnew) continue;
lib/link.php(158): $_obj->name == $page || $_obj->nam...
lib/link.php(208): if ($ref_page != $page) $ref .= $l...
lib/link.php(235): if ($ref_page != $page) {
lib/make_link.php(21): return $clone->convert($string...
lib/make_link.php(782): if ($page == '') return '<a h...
lib/make_link.php(785): $r_refer = ($refer == '') ? '...
lib/make_link.php(787): if (! isset($related[$page]) ...
plugin/attach.inc.php(98): if ($refer != '' && is_pa...
plugin/attach.inc.php(127): if ($page == '' || ! is_p...
plugin/attach.inc.php(326): $msg = $_attach_messages[...
plugin/attach.inc.php(327): $body = ($refer == '' || ...
plugin/attach.inc.php(810): $page_pattern = ($page ==...
plugin/attach.inc.php(833): if ($page != '') {
plugin/backup.inc.php(25): if ($page == '') return a...
plugin/calendar.inc.php(34): if ($page == '') {
plugin/calendar_viewer.inc.php(310): if ($vars['page'...
plugin/edit.inc.php(96): if ($page == NULL) $page = '';
plugin/include.inc.php(111): if ($page == $menubar) {
plugin/lastmod.inc.php(15): if ($page == ''){
plugin/lookup.inc.php(51): if ($page == '') return F...
plugin/map.inc.php(23): if ($refer == '' || ! is_page...
plugin/menu.inc.php(50): } else if ($vars['page'] == ...
plugin/navi.inc.php(103): if ($page == $current) break;
plugin/navi.inc.php(130): if ($_page != '') {
plugin/navi.inc.php(157): if ($page != $home)
plugin/newpage.inc.php(42): if ($vars['page'] == '') {
plugin/pcomment.inc.php(263): if ($refer != '') pkwk_...
plugin/popular.inc.php(47): $page == $whatsnew || che...
plugin/popular.inc.php(80): if ($page == $vars['page'...
plugin/random.inc.php(50): if ($page != '') $vars['re...
plugin/related.inc.php(22): if ($_page == '') $_page ...
plugin/related.inc.php(29): if ($page == $whatsnew ||
plugin/rename.inc.php(42): if ($refer == '') {
plugin/rename.inc.php(48): } else if ($refer == $what...
plugin/rename.inc.php(51): } else if ($page == '' || ...
plugin/rename.inc.php(83): if ($page != '') $body = ...
plugin/rename.inc.php(139): if ($page == '') $page = ...
plugin/rename.inc.php(384): if ($page == '') $page = ...
plugin/rename.inc.php(397): if ($name == $page) conti...
plugin/rename.inc.php(409): if ($_page == $whatsnew) ...
plugin/rename.inc.php(411): $selected = ($_page == $p...
plugin/template.inc.php(60): } else if ($page != '' &...
plugin/template.inc.php(65): $s_page = ($page == '')...
plugin/topicpath.inc.php(34): if ($page == '' || $pag...
skin/tdiary.skin.php(693): if ($_page != '') {
skin/tdiary.skin.php(699): if ($page != '') {
多分、変更しなくても問題のない、空文字列('')との比較も...
--- $defaultpage や、$whatsnew 、$menubar との比較は、$de...
念のために変更しておいたほうがいいと思います。(一応、下...
--- $page と$vars['page'] の比較などの、ページ名同士の比...
popular プラグインは、recent プラグインの仲間なので、同じ...
rename プラグインでは、例えばページ名を「1」から「001」の...
変更前と変更後のページ名が同じだと判断されて、変更後のペ...
変更すべきか、などの優先順位をこちらで付けられない((処理...
ステータスを「完了」ではなく、調査開始という意味で「着手...
- まとめ & 追記ありがとうございます。ステータスなどはいつ...
-- [[cvs:plugin/rename.inc.php]] (1.31)
- こちらの件、遅くなりましたが一通り反映しました。確かに...
-- [[cvs:lib/file.php]] (1.88)
-- [[cvs:lib/link.php]] (1.17)
-- [[cvs:lib/make_link.php]] (1.36)
-- [[cvs:plugin/edit.inc.php]] (1.46)
-- [[cvs:plugin/include.inc.php]] (1.22)
-- [[cvs:plugin/menu.inc.php]] (1.9)
-- [[cvs:plugin/navi.inc.php]] (1.23)
-- [[cvs:plugin/popular.inc.php]] (1.19)
-- [[cvs:plugin/rename.inc.php]] (1.36)
- 確認しました。$whatsnew に関しては、[[is_cantedit() の...
-- lib/link.php (1.17)
// Copyright (C) 2003-2006, 2007 PukiWiki Developers Team
--- 2006と2007の間を区切っているのが意図的なのかな?、と...
--lib/make_link.php (1.36)
// 2003-2005, 2007 PukiWiki Developers Team
--- [[cvs:lib/make_link.php]] を見ていると、Rev. 1.31-1.3...
-- plugin/comment.inc.php (1.38)
// 2002-2005, 2007 PukiWiki Developers Team
--- [[cvs:plugin/comment.inc.php]] を見ていると、Rev. 1.3...
-- 地味なうえに本筋と関係ない指摘ばかりですが、確認お願い...
-- Copyrightのコメントありがとうございます (^^; その様子...
--- [[cvs:plugin/comment.inc.php]] (1.39)
--- [[cvs:lib/link.php]] (1.18)
--- [[cvs:lib/make_link.php]] (1.37)
-- 修正確認しました。「ViewCVSが自由に閲覧~」はできてい...
#comment
** MD5 hash 関係 [#k5620409]
- [[ChangeLog>http://pukiwiki.sourceforge.jp/ChangeL...
-- [[cvs:plugin/article.inc.php]] (1.27)
-- [[cvs:plugin/comment.inc.php]] (1.38)
-- [[cvs:plugin/edit.inc.php]] (1.45)
-- [[cvs:plugin/insert.inc.php]] (1.15)
-- [[cvs:plugin/memo.inc.php]] (1.16)
-- [[cvs:plugin/paint.inc.php]] (1.19)
-- [[cvs:plugin/pcomment.inc.php]] (1.45)
-- [[cvs:plugin/vote.inc.php]] (1.26)
- ピックアップありがとうございます。これらは、MD5 hash に...
- 気がついた分だけですが、修正漏れをいくつか列挙しておき...
++plugin/attach.inc.php (1.89) の620行目と672行目、パスワ...
++plugin/pcomment.inc.php (1.46) の232行目、リプライ用のM...
- 仰る通りかと思います :) -- [[henoheno]] &new{2009-04-18...
-- [[cvs:plugin/attach.inc.php]] (1.90)
-- [[cvs:plugin/pcomment.inc.php]] (1.47)
- あれ? この件は根拠が成り立たなくはないですか? なぜなら...
-- では、実験。'1e0' と'001' を''=='' で比較したらどうな...
#comment
** 返り値としてFALSE だけでなく、FALSE として評価される 0...
*** readdir 関数 [#ad519e69]
- ([[BugTrack2/10]] へ移動しました)
終了行:
* If you compare two numerical strings, they are compared...
- 元タイトル: recent プラグインを利用した時の挙動について
- ページ: [[BugTrack2]]
- 投稿者: 名無しさん
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-05-17 (木) 19:58:23
- バージョン: -1.4.7
#contents
** 概要 [#uc5f0b49]
"1", "01", "001" のように、数値の羅列に見えるページ名で...
これはPHPの文字列の比較に関する仕様を考慮できていないのが...
*** 関連 [#cfe674d3]
-[[BugTrack/608]]
--[[BugTrack2/59]]
** メッセージ [#w6f191fc]
メニューバーでrecent プラグインを利用した時、今見ているペ...
この現象が発生するのは、整数のみで構成されたページ名で以...
-- 1、01、001、など、頭の0を省けば同じ数字になってしまう...
最新の20件
2007-05-17
001 <= 例えばこれを表示しているとき
020
20
01 <= これと
1 <= これもリンクされなくなってしまう
00
0
この例で、「1」というページを今見ているとすると、「01」と...
~
[[BugTrack2/235]] の修正をする前の環境(1.4.7_notb)で試...
--------
- すいません、原因はPHP マニュアルの「[[ここ>http://...
整数値を文字列と比較する際、文字列が 数値に変換されます。
数値形式の文字列を比較する場合、それは整数として比較され...
後半部分が、今回recent プラグインで該当しているようです。
// $Id: recent.inc.php,v 1.24 2006/09/30 02:18:23 henohe...
(中略)
function plugin_recent_convert()
{
(中略)
if($page == $vars['page']) {
// No need to link to the page you just read, or notif...
$items .= ' <li>' . $s_page . '</li>' . "\n";
} else {
$r_page = rawurlencode($page);
$passage = $show_passage ? ' ' . get_passage($time) : ...
$items .= ' <li><a href="' . $script . '?' . $r_page ....
' title="' . $s_page . $passage . '">' . $s_page . '<...
}
(以降、省略)
上で、$page がリストに載っているページ名、$vars['page'] ...
if で比較する時に、「1」も「01」も「1」であると解釈される...
もしこれを回避するのならば、if 文の条件をpreg_match で書...
- 比較演算子を==ではなく===にしたらどうでしょうか。 -- [[...
- お知らせありがとうございます。ご指摘の通りで、[[ぃぉぃ...
"If you compare two numerical strings, they are compared...
-- [[cvs:plugin/recent.inc.php]] (1.25)
- %%上のバージョン%%(1.26)で、正しくリンクする事を確認し...
前述の比較演算子「===」、自分も試そうとしてたはずなんです...
その結果は最初のコメントを見ればわかるように、やや的外れ...
ひとまずステータスを「完了」にします。他で同様のものを見...
ありがとうございました。 -- &new{2007-05-17 (木) 23:38:0...
~
- 2007-05-18 00:00 時点のCVS 版ファイルで、「$page, $_pag...
lib/file.php(92): if ($autoalias && $page == $aliasp...
lib/file.php(285): if (PKWK_READONLY || $limit == 0 |...
lib/file.php(422): if ($page != $whatsnew && ! check_...
lib/file.php(723): $links[$page] = ($page == $vars['p...
lib/html.php(85): $is_page = (is_pagename($_page) &&...
lib/html.php(184): if ($_page == $whatsnew || check_n...
lib/html.php(201): if (isset($vars['refer']) && $vars...
lib/link.php(70): $_obj->name == $page || $_obj->nam...
lib/link.php(117): if ($_page != $page)
lib/link.php(152): if ($page == $whatsnew) continue;
lib/link.php(158): $_obj->name == $page || $_obj->nam...
lib/link.php(208): if ($ref_page != $page) $ref .= $l...
lib/link.php(235): if ($ref_page != $page) {
lib/make_link.php(21): return $clone->convert($string...
lib/make_link.php(782): if ($page == '') return '<a h...
lib/make_link.php(785): $r_refer = ($refer == '') ? '...
lib/make_link.php(787): if (! isset($related[$page]) ...
plugin/attach.inc.php(98): if ($refer != '' && is_pa...
plugin/attach.inc.php(127): if ($page == '' || ! is_p...
plugin/attach.inc.php(326): $msg = $_attach_messages[...
plugin/attach.inc.php(327): $body = ($refer == '' || ...
plugin/attach.inc.php(810): $page_pattern = ($page ==...
plugin/attach.inc.php(833): if ($page != '') {
plugin/backup.inc.php(25): if ($page == '') return a...
plugin/calendar.inc.php(34): if ($page == '') {
plugin/calendar_viewer.inc.php(310): if ($vars['page'...
plugin/edit.inc.php(96): if ($page == NULL) $page = '';
plugin/include.inc.php(111): if ($page == $menubar) {
plugin/lastmod.inc.php(15): if ($page == ''){
plugin/lookup.inc.php(51): if ($page == '') return F...
plugin/map.inc.php(23): if ($refer == '' || ! is_page...
plugin/menu.inc.php(50): } else if ($vars['page'] == ...
plugin/navi.inc.php(103): if ($page == $current) break;
plugin/navi.inc.php(130): if ($_page != '') {
plugin/navi.inc.php(157): if ($page != $home)
plugin/newpage.inc.php(42): if ($vars['page'] == '') {
plugin/pcomment.inc.php(263): if ($refer != '') pkwk_...
plugin/popular.inc.php(47): $page == $whatsnew || che...
plugin/popular.inc.php(80): if ($page == $vars['page'...
plugin/random.inc.php(50): if ($page != '') $vars['re...
plugin/related.inc.php(22): if ($_page == '') $_page ...
plugin/related.inc.php(29): if ($page == $whatsnew ||
plugin/rename.inc.php(42): if ($refer == '') {
plugin/rename.inc.php(48): } else if ($refer == $what...
plugin/rename.inc.php(51): } else if ($page == '' || ...
plugin/rename.inc.php(83): if ($page != '') $body = ...
plugin/rename.inc.php(139): if ($page == '') $page = ...
plugin/rename.inc.php(384): if ($page == '') $page = ...
plugin/rename.inc.php(397): if ($name == $page) conti...
plugin/rename.inc.php(409): if ($_page == $whatsnew) ...
plugin/rename.inc.php(411): $selected = ($_page == $p...
plugin/template.inc.php(60): } else if ($page != '' &...
plugin/template.inc.php(65): $s_page = ($page == '')...
plugin/topicpath.inc.php(34): if ($page == '' || $pag...
skin/tdiary.skin.php(693): if ($_page != '') {
skin/tdiary.skin.php(699): if ($page != '') {
多分、変更しなくても問題のない、空文字列('')との比較も...
--- $defaultpage や、$whatsnew 、$menubar との比較は、$de...
念のために変更しておいたほうがいいと思います。(一応、下...
--- $page と$vars['page'] の比較などの、ページ名同士の比...
popular プラグインは、recent プラグインの仲間なので、同じ...
rename プラグインでは、例えばページ名を「1」から「001」の...
変更前と変更後のページ名が同じだと判断されて、変更後のペ...
変更すべきか、などの優先順位をこちらで付けられない((処理...
ステータスを「完了」ではなく、調査開始という意味で「着手...
- まとめ & 追記ありがとうございます。ステータスなどはいつ...
-- [[cvs:plugin/rename.inc.php]] (1.31)
- こちらの件、遅くなりましたが一通り反映しました。確かに...
-- [[cvs:lib/file.php]] (1.88)
-- [[cvs:lib/link.php]] (1.17)
-- [[cvs:lib/make_link.php]] (1.36)
-- [[cvs:plugin/edit.inc.php]] (1.46)
-- [[cvs:plugin/include.inc.php]] (1.22)
-- [[cvs:plugin/menu.inc.php]] (1.9)
-- [[cvs:plugin/navi.inc.php]] (1.23)
-- [[cvs:plugin/popular.inc.php]] (1.19)
-- [[cvs:plugin/rename.inc.php]] (1.36)
- 確認しました。$whatsnew に関しては、[[is_cantedit() の...
-- lib/link.php (1.17)
// Copyright (C) 2003-2006, 2007 PukiWiki Developers Team
--- 2006と2007の間を区切っているのが意図的なのかな?、と...
--lib/make_link.php (1.36)
// 2003-2005, 2007 PukiWiki Developers Team
--- [[cvs:lib/make_link.php]] を見ていると、Rev. 1.31-1.3...
-- plugin/comment.inc.php (1.38)
// 2002-2005, 2007 PukiWiki Developers Team
--- [[cvs:plugin/comment.inc.php]] を見ていると、Rev. 1.3...
-- 地味なうえに本筋と関係ない指摘ばかりですが、確認お願い...
-- Copyrightのコメントありがとうございます (^^; その様子...
--- [[cvs:plugin/comment.inc.php]] (1.39)
--- [[cvs:lib/link.php]] (1.18)
--- [[cvs:lib/make_link.php]] (1.37)
-- 修正確認しました。「ViewCVSが自由に閲覧~」はできてい...
#comment
** MD5 hash 関係 [#k5620409]
- [[ChangeLog>http://pukiwiki.sourceforge.jp/ChangeL...
-- [[cvs:plugin/article.inc.php]] (1.27)
-- [[cvs:plugin/comment.inc.php]] (1.38)
-- [[cvs:plugin/edit.inc.php]] (1.45)
-- [[cvs:plugin/insert.inc.php]] (1.15)
-- [[cvs:plugin/memo.inc.php]] (1.16)
-- [[cvs:plugin/paint.inc.php]] (1.19)
-- [[cvs:plugin/pcomment.inc.php]] (1.45)
-- [[cvs:plugin/vote.inc.php]] (1.26)
- ピックアップありがとうございます。これらは、MD5 hash に...
- 気がついた分だけですが、修正漏れをいくつか列挙しておき...
++plugin/attach.inc.php (1.89) の620行目と672行目、パスワ...
++plugin/pcomment.inc.php (1.46) の232行目、リプライ用のM...
- 仰る通りかと思います :) -- [[henoheno]] &new{2009-04-18...
-- [[cvs:plugin/attach.inc.php]] (1.90)
-- [[cvs:plugin/pcomment.inc.php]] (1.47)
- あれ? この件は根拠が成り立たなくはないですか? なぜなら...
-- では、実験。'1e0' と'001' を''=='' で比較したらどうな...
#comment
** 返り値としてFALSE だけでなく、FALSE として評価される 0...
*** readdir 関数 [#ad519e69]
- ([[BugTrack2/10]] へ移動しました)
ページ名: