---------------- 1. 입력 최대값의 설정 ----------------
【적용 항목】
· 형식 입력값(input type=text, textarea)를 받는 항목
데이타베이스상 문제 없어도 서버 리소스가 고갈하거나 브라우저가 응답 없이
되거나, SQL발행시에 오류가 될 가능성이 있기 때문.
【체크예】
Function checkLength(targetString, maxLength)
If LenB(targetString) > maxLength Then
checkLength = False
Else
checkLength = True
End If
End Function
【사용예】
<%
Dim name
Dim msg
If Not checkLength(Request.Form("name"), 20) Then
' ng case.
msg = "name의 길이를 20문자(전각10문자)이내에 설정해 주십시오"
Else
' ok case.
End If
%>
<%
Function hlen(rstr) ' Byte단위 길이체크
dim j
dim tlen
j = 0
tlen = 0
If Not IsNull(rstr) Then
On Error Resume Next
for j = 1 to len(rstr)
if asc(mid(rstr, j, 1)) <= 0 then
tlen = tlen + 2
else
tlen = tlen + 1
end If
If Err.Number <> 0 Then
Exit For
End If
next
If Err.Number <> 0 Then
tlen =lenb(rstr)
End If
On Error Goto 0
End If
hlen= tlen
End Function
%>
- javascript
function textarea_limite(aro_name,ari_max) {
var ls_str = aro_name.value;
var li_str_len = ls_str.length;
var li_max = ari_max;
var i = 0;
var li_byte = 0;
var li_len = 0;
var ls_one_char = "";
var ls_str2 = "";
for(i=0; i< li_str_len; i++) {
ls_one_char = ls_str.charAt(i);
if (escape(ls_one_char).length > 4) li_byte += 2;
else li_byte++;
if (li_byte <= li_max) li_len = i + 1;
}
if(li_byte > li_max) {
alert("内容は、全角"+parseInt(parseInt(li_max)/2)+"文字以内で入力してください。");
ls_str2 = ls_str.substr(0, li_len);
aro_name.value = ls_str2;
}
aro_name.focus();
}
---------------- 2. HTML표시 ----------------
【적용 개소】
· POST/GET/COOKIE의 값을 표시하는 항목
ex: 확인 형식, 「∼씨, 어서오십시오」의 표시등
· 데이타베이스부터 취득한 값을 표시하는 항목
ex: 일람표시/상세 표시, 기타
※ HTML표시를 동적에 하는 항목에서는 전부 행할 것.
【함수의 예】
' 인코드 실시 // 원칙, HTML표시시에 인코드를 행하는 것
Function htmlEncode(originalString)
Dim displayString
' 「<」「>」「&」「"」이 인코드 된다
displayString = Server.HTMLEncode(originalString)
' 기타의 치환 for example:
' 「'」의 인코드
displayString = Replace(displayString, "'", "'")
' 개행 변환(필요에 따라)
displayString = Replace(displayString, vbCrLf, "<br/>")
htmlEncode = displayString
End Function
【사용예】
<%
Dim name
name = Request.Form("name")
%>
Name: <%= htmlEncode(name) %>
-JavaScript
function HtmlEncode(text){
if (text != null) {
text = text.replace(/&/g, '&').replace(/'/g, '"').replace(/</g, '<').replace(/>/g, '>');
}
return text;
}
---------------- 3. SQL입력값 ----------------
【적용 항목】
· 문자열을 SQL로 처리할 때 (DML/QUERY양방)
※ 모든 SQL
【함수의 예】
Function mssqlEscapeString(originalString)
Dim valueString
valueString = Replace(originalString, "'", "''")
mssqlEscapeString = valueString
End Function
【사용예】
<%
Dim key, value
key = Request.Form("key")
value = Request.Form("value")
Dim sql
sql = "INSERT INTO table (key, value) VALUES ('" & mssqlEscapeString(key) & "', '" & mssqlEscapeString(value) & "')"
' other process the following...
%>
---------------- 4. 반각 카다카나의 변환 ----------------
【적용 개소】
· 형식 입력치(input type=text, textarea)를 받는 항소
반각 카다카나는 전각 카다카나로 변환
【변환 함수의 예】
Function han2zen(originalString)
Dim bobj
Set bobj = Server.CreateObject("basp21")
han2zen = bobj.HAN2ZEN(originalString)
Set bobj = Nothing
End Function
【사용예】
<%
Dim name
name = han2zen(Request.Form("name"))
' other process the following...
%>
---------------- 5. 형식치의 encoding ----------------
【적용 항목】
·<input type="hidden">에 값을 유지하는 개소등
※ 유저 입력을 hidden에 유지하는 경우에는 필수
【인코드/디코더 함수의 예】
' 인코드 실시
Function formEncode(originalString)
Dim bobj
Set bobj = Server.CreateObject("basp21")
formEncode = bobj.Base64(originalString, 4)
Set bobj = Nothing
End Function
' 디코더 실시
Function formDecode(encodeString)
Dim bobj
Set bobj = Server.CreateObject("basp21")
formDecode = bobj.Base64(encodeString, 5)
Set bobj = Nothing
End Function
【사용예】
· 입력쪽
<%
Dim name
name = Request.Form("name")
%>
<form>
<input type="hidden" value="<%= formEncode(name) %>">
</form>
· 처리쪽
<%
Dim name
name = formDecode(Request.Form("name"))
' other process the following...
%>
---------------- 5. 전각 카타가나체크 ----------------
Asp 함수
<%
Function Fn_Chk_Japan_Zen(tmpstr)
' Const cCode = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッヮヵヶー 0123456789・"
' Dim ChkString
' Dim ChkCharString
' Dim IsChkString
' ChkString = cCode
' IsChkString = true
' For jk= 1 To Len(tmpstr)
' ChkCharString = Mid(tmpstr,jk, 1 )
'Response.write "nChar [" & nChar & "] InStr(Str,nChar) [" & InStr(Str,nChar) & "<BR>"
' If InStr(ChkString,ChkCharString) = 0 Then
' IsChkString = False
' Exit For
' End If
'Next
'Fn_Chk_Japan_Zen = IsChkString
Fn_Chk_Japan_Zen = Fn_RegExp_Chk_Japan_Zen("[^ァ-ヶ0-9ー・ ]", tmpstr)
End Function
Function Fn_RegExp_Chk_Japan_Zen(Pattern, Str)
Dim RegExp
SET RegExp = New RegExp
RegExp.Pattern = Pattern
RegExp.IgnoreCase = True
'RegExpTest = RegExp.Test(Str)
SET Matches = RegExp.Execute(str)
If 0 < Matches.count Then
Fn_RegExp_Chk_Japan_Zen = false
Else
Fn_RegExp_Chk_Japan_Zen = true
End If
SET RegExp = Nothing
End Function
%>
JavaScript
<script type="text/javascript">
<!--
function Fn_ZenK_Check(objItemObject,strTitle){
if (!Fn_Japan_Zen_Check(objItemObject) ){
window.alert("「" + strTitle + "」を全角カタカナで入力して下さい!");
}
}
function Fn_Japan_Zen_Check(objItemObject){
if (objItemObject.value.match(/[^ァ-ヶ0-9ー・ ]+/)){
return false;
}
return true;
}
//-->
</script>
'Development > ASP' 카테고리의 다른 글
ASP File Download (0) | 2009.06.13 |
---|---|
ASP로 데이터베이스 처리 (ADO) (0) | 2009.06.13 |
페이지 로딩시간 초로 확인하는 방법 (0) | 2009.06.13 |
ServerVariables (0) | 2009.06.13 |
ASP Sending e-mail with CDO (0) | 2009.06.13 |