OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

入力フォーム内のタグ開始記号(<>)の置き換えについて

  • すぐに回答を!
  • 質問No.164612
  • 閲覧数161
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 33% (2/6)

初めて質問させていただきます、初心者プログラマーです。
web上で使用する、質問用入力フォームを作成しているのですが、
セキュリティの問題上、入力フォーム内にタグが打ち込まれたとき
それを無効化するために、タグ開始と終わりのカッコがそのまま
スルーしないよう、アンパーサンドlt;とアンパーサンドgt;に
置き換える処理を行いたいと思うのですが、どのように記述したら
よいのかがわかりません。この処理はフォームの入力欄全てに対して
有効にしたいのですが、どのように記述したらよいのでしょうか…
どうかご教授お願い致します。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

<や>を&lt;や&gt;に変えるには、replaceメソッドを使います。
HTMLのサンプルを載せますので、参考にしてみて下さい。
(IE&NN動作確認済み。そのままコピペできます。)

<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
var names = new Array('t1', 't2', 'ta');

function check()
{
with (document) {
for (var i in names) {
f[names[i]].value = f[names[i]].value.replace(/</g,"&lt;");
f[names[i]].value = f[names[i]].value.replace(/>/g,"&gt;");
}
}
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<FORM name="f">

<INPUT type="text" name="t1" size="50"><BR>
<INPUT type="text" name="t2" size="50"><BR>
<TEXTAREA name="ta" cols="50" rows="8"></TEXTAREA><BR>
<INPUT type="button" name="b" value="check" onClick="check()"><BR>
</FORM>
</BODY>
</HTML>

解析も勉強のうちですので、頑張って解析してくださいね。
下記のサイトも勉強には欠かせません。
補足コメント
Rammy

お礼率 33% (2/6)

ご回答ありがとうございます!早速試して、実行できました。
早急に解決しなければならない問題だったので、とても助かりました。
本当にありがとうございます。

ただ、後ひとつだけ質問してもよろしいですか?
今現在、入力フォームのsubmitボタンでonClick時処理としてすでに
以下のallcheck()を呼び出しています。

function allcheck(){
if(check_roman(document.form1.mail1.value)==false){
return false;
}
if(check_roman(document.form1.mail2.value)==false){
return false;
}
if(bytecheck(document.form1.text.value)==false){
return false;
}
}

//allcheck内で呼び出しているスクリプト
function check_roman(strTarget){
var i,transTarget;
var checkStr=new String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.1234567890");
transTarget=strTarget.replace(/ /g,"");
for(i=0;i<transTarget.length;i++){
if(checkStr.indexOf(transTarget.charAt(i),0)==-1){
alert("メールアドレスは半角英数字で");
return false;
}
}
return true;
}

//allcheck内で呼び出しているスクリプト
function bytecheck(){
txt = document.form1.text.value;
n = txt.length;
if (n > 2000){
alert("問合せ内容は2000文字以内で");
return false;
}
return true;
}

このallcheckスクリプトの中に、教えていただいたcheckスクリプトの
呼出を加えるとすると、どのように記述したらよいのでしょうか・・・。
何度も申し訳ありませんが、ご教授いただけると幸いです。
どうか、よろしくお願いいたします
投稿日時 - 2001-11-07 16:24:27
お礼コメント
Rammy

お礼率 33% (2/6)

補足内に書いたallcheckの一番下に、check();の一行を記述して、
無事にすべて解決しました。
よく考えずに質問ばかりしてすみませんでした。
今後とも精進し、プログラムを自分の手でバリバリ一から書けるように
がんばります。
ご回答いただき本当にありがとうございました。
投稿日時 - 2001-11-07 18:03:08
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1

置き換えに関しては、下記のようにすればできます。 function replaceValue(){  ver strValue=document.***.***.value;  ↑ここは、入力された値が入るように変えてください。  res1=strValue.indexOf("<",0); //文字列中から<を検索  res2=strValue.inde ...続きを読む
置き換えに関しては、下記のようにすればできます。

function replaceValue(){
 ver strValue=document.***.***.value;
 ↑ここは、入力された値が入るように変えてください。
 res1=strValue.indexOf("<",0); //文字列中から<を検索
 res2=strValue.indexOf(">",0); //文字列中から>を検索
 if(res1 != -1){ //該当がなければ-1が返るので
  strMsg=strValue.replace("<","&lt;"); //<を<に置き換え
 }
 if(res2 != -1){ //該当がなければ-1が返るので
  strMsg=strValue.replace(">","&gt;"); //<を<に置き換え
 }
}

# サンプル中の"&lt;"と"&gt;"は大文字で書かれていますが、実際は小文字です。

後は、この関数をどう呼ぶかを考えてみてください。
例えば、全部入力が終わった後にボタンを押して、ならそのボタンのonClickに設定すればいいし、入力後であれば、その入力フォームのonBlurまたはonChangeに設定すればOKです。
(ただし、onBlurまたはonChangeに関しては、ブラウザによって動作が異なる可能性があります)
お礼コメント
Rammy

お礼率 33% (2/6)

ご回答ありがとうございます!
とても詳しく解説してくださり、本当にありがとうございました。
おかげで、非常に参考になりました。
今後とも精進していこうと思います。

本当にありがとうございました!
投稿日時 - 2001-11-07 18:05:53


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ