Ticket #4030

プロフィール編集の「その他」欄に長文を書くとボタンが消える
오픈 날짜: 2004-03-04 20:13 마지막 업데이트: 2004-06-21 15:29

Reporter:
소유자:
(None)
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

プロフィール編集の「その他」欄に長文を書くと
IE などのブラウザーでは、
「アカウント編集で変更ボタンが消える」の症状が
 Xoops2.0.6でも起きる

Xoops公式サイトフォーラムより
http://jp.xoops.org/modules/newbb/viewtopic.php?
topic_id=2704&forum=12

[quote]
Lennonさんは書きました:
初めまして、Lennonというものです。

早速本題ですが

プロフィールの編集で「その他」のところに日本語で長文(150文
字程)書き込んだところ、「パスワード欄」から「変更を保存」が
消えてしまいました。

どうやら「その他」欄にパスワードから下のHTML構文が入り込ん
でしまって変更や修正が出来なくなってしまいました。
[/quote]
------------------------------------
テスト再現性あり、下記文字を 「その他」の欄にいれたとき
Lennonさん指摘の例
[quote]
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
[/quote]
----------------------
原因
[quote]GIJOEさんは書きました:
結局、str_strimwidth 関数の使い方の問題なんじゃないでしょ
うか。

まったくの予想ですが、この関数って、substr的な目的で使うの
ではないような気がします。
具体的には、改行が混ざると、とたんに返す文字数が期待通りに
なりません。
[quote]

----------------------
変更案
include/functions.php 570行目付近

[quote]Ryujiさんは書きました:
で、修正ですが、ほんとはこういう動作をして欲しいのだろうな
ぁということで…
[code]
function xoops_substr($str, $start, $length,
$trimmarker = '...')
{
if( strlen( $str ) <= $length ) return $str;
if (XOOPS_USE_MULTIBYTES == 1 && function_exists
('mb_internal_encoding') && @mb_internal_encoding
(_CHARSET)) {
return mb_strcut( $str , $start , $length -
strlen( $trimmarker ) ) . $trimmarker ;
}
return substr($str, $start, $length - strlen
($trimmarker)).$trimmarker;
}
[/code]

元のxoops_substr()だと、マルチバイト環境じゃないとtrimす
る必要なくても$trimmarker('...')ついちゃうんですね。本家
のアカウント編集して確認しました。
[/quote]

Ticket History (1/1 Histories)

2004-06-21 15:29 Updated by: toshimitsu
  • Ticket Close date is changed to 2004-06-21 15:29
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login