2011-08-28 2 views
0

우리는 다양한 클래스에 대한 정보를 추가하고 편집 할 수있는 스케줄링 시스템의 일부로 사용되는 아래 코드 (부분 코드)를 가지고 있습니다. "이전 날짜로부터 복사"기능을 시작하면 "날짜가 유효하지 않습니다"라는 메시지가 다시 보내집니다.이 날짜는 코드 하단의 cfelse 조건의 일부입니다 (초기 cfif는 첫 번째는 아래). 이것은 모든 브라우저에서 발생하지는 않습니다. 일부 Windows 버전의 Firefox에서 작동합니다.cfif isdate (URL.day) 문제 - 항상 cfelse를 호출합니까?

<cfif isdate(URL.day)> 
    do a bunch of stuff... 

...

<cfoutput> 
    <p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1" onchange="parent.F7cms.content.iframe('scheduleManagerDay#URL.day#-tab1','components/custom/scheduleManager.cfm?day=#URL.day#&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><cfloop query="pastDays"><option value="#day_id#">#dateFormat(day_date,"DDDD, MMMM D, YYYY")#</option></cfloop></select></p> 
    </cfoutput> 

...

본질적
<cfelse> 
    <cfoutput><h2>The date is invalid.</h2></cfoutput> 
</cfif> 

은으로 cfelse, 아래의 기능이 사용되는 경우 도시되고, "날짜가 잘못" . 이 함수는 한 날짜에서 다른 날짜로 정보를 복사하는 데 사용되며 실제로 날짜가 완벽하게 유효하다고 판단합니다. 불쾌한 cfif가 있다고 생각합니다. 문제의 범위를 좁히는 데 관련이 있다고 생각하는 코드를 많이 넣었습니다. 어떤 조언을 부탁드립니다.

: 여기
<cfoutput> 
<p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1"  onchange="parent.F7cms.content.iframe('scheduleManagerDay#URL.day#-tab1','components/custom/scheduleManager.cfm?day=#URL.day#&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><cfloop query="pastDays"><option value="#day_id#">#dateFormat(day_date,"DDDD, MMMM D, YYYY")#</option></cfloop></select></p> 
</cfoutput> 

가 오류로 이어지는 클릭 한 것을 위의 코드에서 생성 된 HTML이다 : 또한

, "날짜가 유효하지 않습니다"에 이르게하는 과정을 시작하는 코드는 다음입니다

<p><strong>Copy Schedule from:</strong> <select name="scheduleCopy" size="1" onchange="parent.F7cms.content.iframe('scheduleManagerDay2011-09-5-tab1','components/custom/scheduleManager.cfm?day=2011-09-5&copy_day=' + this.value);"><option value="">-- SELECT DAY --</option><option value="266">Sunday, September 4, 2011</option><option value="265">Saturday, September 3, 2011</option><option value="264">Friday, September 2, 2011</option><option value="263">Thursday, September 1, 2011</option><option value="262">Wednesday, August 31, 2011</option><option value="261">Tuesday, August 30, 2011</option><option value="260">Monday, August 29, 2011</option><option value="259">Sunday, August 28, 2011</option><option value="258">Saturday, August 27, 2011</option><option value="257">Friday, August 26, 2011</option><option value="256">Thursday, August 25, 2011</option><option value="255">Wednesday, August 24, 2011</option><option value="254">Tuesday, August 23, 2011</option><option value="253">Monday, August 22, 2011</option></select></p> 

어떤 아이디어라도 도움이 될 것입니다. 광산에 회신 의견을 바탕으로

+1

질문과 관련이 없지만 SQL 주입 공격으로부터 보호하기 위해 쿼리에 cfqueryparam을 사용하는 것을 고려하십시오. –

+0

URL.day의 값은 무엇입니까? –

+0

URL.day의 출력이 2011-09-5 인 것으로 보입니다 © _day = 260 – Nietzsche

답변

2

:

URL.day의 출력이 보인다에있을 2011년 9월 5일 © _day = 260

당신이 잘 (예기치 않은 결과를 얻고있는 이유는 명백하다 : 예기치 못한 경우 ... 코드가 정상적으로 작동합니다!) ... "2011-09-5 © _day = 260"은 날짜로 파싱 할 수 없으므로 isDate() 유효성 검사가 실패합니다.

이 코드를 호출하는 코드로 돌아가서 왜이 마비 데이터를 URL에 전달하는지 알아야합니다. 저에게 앰퍼샌드를 벗어나는 어떤 시도가 & copy_day 인 것 같습니다. & 복사본을 복사로 보았습니다 : & 복사본으로 복사하고 저작권 기호로 변환합니다.

전화 코드를 보는 것이 도움이 될 수 있습니다. 하지만, 다른 사람들이 말하는 것처럼, 단지 친밀한 비트!

+0

감사합니다. & copy_day를 & copy_day로 변경하는 것만 큼 쉬웠습니다. – Nietzsche

+0

아담의 대답을 수락 된 대답으로 표시하십시오. –

관련 문제