chr(9), chr(10), chr(13), chr(32), chr(34)
ASCII 코드에 관한 모든 표: [url][/url]
chr(13)은 캐리지 리턴입니다.
Chr(10)은 개행 문자입니다.
chr(32)는 공백 문자입니다.
9/34는 탭인데 결정되지 않았나요?
다음은 몇 가지 예입니다.
특수 공백 문자
ASP 프로그래밍에서는 일부 데이터의 시작과 끝에서 공백을 제거하기 위해 종종 Trim(rtrim,ltrim) 함수를 사용합니다. 저자는 최근 다음 코드를 사용하여 ASP 채팅방을 작성했습니다.
<% 희미한 이름, 제목
name=trim(request.form("이름"))
비밀번호=trim(request.form("비밀번호"))
이름=""또는 비밀번호=""인 경우 response.redirect "error.asp?error=name&name=null"
myDSN="DSN=테스트;uid=테스트;pwd=테스트"
cn=server.createobject("adodb.connection")을 설정하십시오.
cn.myDSN 열기
sql="테스트(이름,제목) 값에 삽입('"&name&"','"&password&"')"
cn.execute(sql)
cn.닫기%>
작성자는 시작과 끝의 공백을 제거하기 위해 트림 기능을 사용했습니다. 정상적인 상황에서는 이 프로그램이 정상적으로 실행되었지만 나중에 작성자는 누군가 공백을 사용하여 입력할 수 있다는 것을 발견했습니다. 이는 사용자 이름이 완전히 공백임을 의미합니다. 작성자가 스스로 공백을 사용하려고 했으나 통과하지 못했습니다(즉, 프로그램에서 감지했습니다). 중간에 공백이 있어도 시작과 끝의 공백이 제거되었습니다. 필요한 경우 사용할 수 있습니다. 중간에 공백을 없애는 기능을 이용하여 작성자는 sql 데이터베이스에 기록된 사용자 정보를 사용하고 있는 것으로 보아 시스템이 이를 보지 못하도록 다른 방법을 사용한 것으로 의심되어 sql 데이터베이스를 확인하러 갑니다. 사용자 정보(작성자는 줄 바꿈이 있는 사용자를 보기 위해 이 방법을 사용했습니다)를 기록하지만 데이터베이스의 사용자 정보에도 공백이 있는 것을 볼 수 있습니다. 이것은 이 사용자가 내 사용자 이름을 우회하는 방법을 사용했다는 의미입니까? 그리고 비밀번호 모니터링? ? ? 프로그램에서 정말 허점을 찾을 수 없어서 이 사용자에게 조언을 구할 수 밖에 없었습니다. 다행히 이 사용자는 "Alt+255"로 판명되었으니 Alt 키를 누른 다음 "를 누르십시오. 작은 키보드의 Center". 2", "5", "5"는 특별한 "공백" 문자를 생성합니다(저자는 이 개념에 대해 명확하지 않습니다. 이것은 일부 컴파일러에서 사용되는 제어 문자입니다. 편집기에서 word2000을 볼 수 있으며, 다른 제어 문자가 있어야 합니다.) 이 공백 문자는 스페이스바를 눌러 생성되는 기존 문자와는 다릅니다. 해당 asc 코드는 255이며 전통적인 공백 유형의 공백 문자는 다음과 같습니다. 32. 트림 기능은 asc코드가 32인 코드만 인식해서 제거할 수 있어서 공백이 있는 사용자가 있어요! 이러한 상황에 대응하여 저자는 "공백" 문자를 제거하기 위해 다음 두 가지 기능을 설계했습니다.
함수 xuankong(str)
희미한 결과
희미한 j
j=길이(str)
결과=""
나 어두워
i = 1에서 j까지
mid(str,i,1) 케이스 선택
케이스 "<"
결과=결과+"<"
케이스 ">"
결과=결과+">"
케이스 문자(34)
결과=결과+"""
사례 "&"
result=result+"&" '위 코드는 일부 HTML 태그를 변환합니다.
case chr(255) '특수 공백 방지
결과=결과
case chr(13) '캐리지 리턴 방지
결과=결과+""
case chr(10) '개행 문자 방지
결과=결과+""
다른 경우
결과=결과+중간(str,i,1)
선택 종료
다음
쉬안쿵=결과
함수 종료
그런 다음 ASP 프로그램에서 다음과 같이 이 기능을 사용합니다.
name=xuankong(trim(request.form("이름")))
문자 0-z asc 코드의 값이 48-122 범위에 있으므로 다음 방법을 사용하여 모니터링할 수 있습니다.
희미한 J
j=len(trim(request.form("이름")))
i= 1에서 j까지
if asc(mid(name,i,1))>122 또는 asc(mid(name,i,1))<48 then response..redirect"error.asp?
오류=특수"
다음
이러한 "공간"은 아직까지 프로그램을 손상시킬 수 있는 문제가 발견되지 않았지만 문제를 일으킬 수 있으므로 예방하는 것이 좋습니다. 그러나 이런 공간도 활용하면 장점이 있습니다. 인터넷 비밀번호, 헤헤... 많은 사람들이 볼 수 없을 것 같아 아쉽네요! 본 것들은 다 공간인 줄 알았는데 그게 아니더군요... 작성자가 php, jsp에 익숙하지 않아서 이 두 가지에 이런 문제가 있는지는 모르겠습니다.
뉴에구오 2006-1-12 01:55 AM
공백을 읽는 방법
공백을 읽는 방법
웹 페이지의 파일에서 가져온 콘텐츠를 동적으로 표시해야 하는 경우가 많습니다. 채팅방이나 포럼과 같은 프로그램을 작성하는 경우 각 발표자의 콘텐츠를 먼저 텍스트 파일에 저장한 다음 웹 페이지에 표시해야 합니다. 그러나 사용자가 콘텐츠를 입력할 수 있도록 웹 페이지에서 사용하는 컨트롤은 텍스트 상자입니다. 그러면 텍스트 상자의 내용이 웹 페이지에 표시될 때 공백, 줄바꿈 등의 문자가 표시되지 않습니다. 즉, 단락이 없음을 의미합니다. 웹 페이지에 단락을 표시하려면 이러한 문자를 표시할 텍스트를 입력하는 공백과 줄바꿈에 HTML 태그를 삽입해야 합니다. 아래 예를 참조하세요.
웹 페이지에 채팅방 화면이 있는 경우 텍스트 상자에 내용을 입력한 후 "제출"을 클릭하면 텍스트 상자 이름이 Text1로 지정됩니다. 텍스트 줄바꿈과 공백을 표시하는 기능을 매우 영리하게 실현하세요.
<%
...
...
str=request.querystring("text1")
str=바꾸기(str, Chr(32), " ")
'공백을 기호로 대체
str=바꾸기(str, vbCrLf, "<br>")
'캐리지 리턴 및 줄 바꿈 문자를 <br> 플래그로 바꿉니다.
응답.문자열 쓰기
...
...
%>
위 코드를 전달한 후 텍스트의 캐리지 리턴 및 줄 바꿈 문자를 브라우저가 인식하는 <br> 줄 바꿈 표시로 변경하고 공백을 공백 표시로 바꿉니다. 그 중 Chr(32)는 공백을 나타내고, vbCrLf는 캐리지 리턴과 라인 피드를 나타냅니다.
뉴에구오 2006-1-12 01:55 AM
chr(13)은 캐리지 리턴입니다.
(
예: 모든 캐리지 리턴을 <br/>로 대체
#Replace(foo, Chr(13), "<br />", "ALL")#
)
Chr(10)은 개행 문자입니다.
ASCII 코드에 관한 모든 표: [url][/url]
<cf스크립트>
/**
* 기사 단락 서식 기능의 향상된 버전
* TAB을 대체하고 다중 시스템을 지원하려면 )를 사용하십시오.
* Nathan Dintenfas의 재작성 및 다중 OS 지원.
*
* @param string 형식을 지정할 문자열입니다. (필수)
* @return 문자열을 반환합니다.
* @author 벤 포르타([email][email protected][/email])
* @version 3, 2002년 6월 26일
*/
함수 Paragrap1hFormat2(str) {
//먼저 Windows 스타일을 Unix 스타일로 만듭니다.
str = 교체(str,chr(13)&chr(10),chr(10),"ALL");
//이제 Macintosh 스타일을 Unix 스타일로 만듭니다.
str = 대체(str,chr(13),chr(10),"ALL");
//이제 탭 수정
str = 대체(str,chr(9)," ","ALL");
//이제 HTML 형식의 텍스트를 반환합니다.
return replacement(str,chr(10),"<br />","ALL");
}
</cf스크립트>