※ ChatGPTを利用し、要約された質問です(原文:既存プログラムを改造したら動かなくなってしまったのですが、その原因は)
既存プログラムを改造したら動かなくなった!変更案の問題は?
このQ&Aのポイント
既存のプログラムを変更したら、動作しなくなってしまった原因を調査します。PHP4で外注で作られたPHPの一部を流用しようとした際に起きた問題です。個人的な好みでタグ混在型を避けたいため、変更案を簡素化しましたが、IE6で生テキストが展開されてしまいます。元プログラムとの違いを明確にします。
変更案の問題点を特定します。変更案では、途中の「<?php」を極力除去し、inputタグを出力しています。しかし、この変更により、IE6では正しく展開されず、生テキストとして表示されてしまいます。変更案のコードを詳しく検証し、適切な修正案を提案します。
変更案がUE6で正しく展開されない原因を解明します。変更案では、inputタグのname属性やvalue属性の出力方法に問題があります。print()関数が正しく使用されておらず、値が出力されていません。また、HTMLエスケープ処理も正しく行われていません。適切なコード修正を行い、変更案を正しく動作するように修正します。
既存プログラムを改造したら動かなくなってしまったのですが、その原因は
PHP4で外注で作ったPHPの一部を流用しようとしているのですが、
個人的好みで、タグ混在型を極力さけたいので以下の変更案のように
簡素化してみました。
しかし、実行してみると、IE6に下記の生テキストが展開されてしまいます。
Var1" VALUE=""><input type="text" name="1
元プログラムの方ですと、下記のように正しく展開されるのですけど。
<input type="text" name="Var1" value="">
変更案の何がいけないのでしょうか。
■元プログラム
<?php
define("MyTeisu", "Var1");
// HTMLエスケープして表示
function HtmlEsc ( $data ) {
echo( htmlspecialchars( nl2br( $data ) ) );
}
$KM=MyTeisu;
if($mode=="1"){
HtmlEsc( number_format($g_FORM[ $KM ][ "VALUE" ]) );
?>
<input type="hidden" name="<?php print($KM); ?>" VALUE="<?php HtmlEsc( $g_FORM[ $KM ][ "VALUE" ] ); ?>">
<?php
} else {
?>
<input type="text" name="<?php print($KM); ?>" VALUE="<?php HtmlEsc( $g_FORM[ $KM ][ "VALUE" ] ); ?>">
<?php
}
?>
■変更案→途中の「<?php」を極力除去
$KM=MyTeisu;
if($mode=="1"){
HtmlEsc( number_format($g_FORM[ $KM ][ "VALUE" ]) );
echo "<input type=\"hidden\" name=\"" . print($KM) . "\" value=\"" . HtmlEsc( $g_FORM[ $KM ][ "VALUE" ] ) . "\">";
} else {
echo "<input type=\"text\" name=\"" . print($KM) . "\" value=\"" . HtmlEsc( $g_FORM[ $KM ][ "VALUE" ] ) . "\">";
}
お礼
ビンゴでした・・・ そういわれると、確かにそうですね、 しかるべくしてそうなった、必然的結果だと よ~くわかりました・・ 今まで悩んでいたのはうそのようです。 ありがとうございました。