2012-08-09 6 views
0

내 unversity의 웹 사이트에는 코스 목록에 액세스 할 수있는 검색 양식이 있습니다. 여러 기준 (교수, 학기 등)을 선택한 다음 "코스 섹션 가져 오기"를 누르면 지정된 기준과 일치하는 모든 코스가 표시됩니다. 모든 과정을 듣고 싶습니다. 그래서 직접 매개 변수로 해당 단추를 호출하는 방법을 알고 싶습니다. HTML과 자바 스크립트에 대한 지식은 아주 적지 만, 조금 진전이 있다고 생각합니다. 버튼을 누를 때방법 서명을 얻는 방법

<form action="/pban1/bwskfcls.P_GetCrse" method="POST" onsubmit="return checkSubmit()"> 
<br> 
<input type="hidden" name="term_in" value="201209"> 
<input type="hidden" name="sel_subj" value="dummy"> 
<input type="hidden" name="sel_day" value="dummy"> 
<input type="hidden" name="sel_schd" value="dummy"> 
<input type="hidden" name="sel_insm" value="dummy"> 
<input type="hidden" name="sel_camp" value="dummy"> 
<input type="hidden" name="sel_levl" value="dummy"> 
<input type="hidden" name="sel_sess" value="dummy"> 
<input type="hidden" name="sel_instr" value="dummy"> 
<input type="hidden" name="sel_ptrm" value="dummy"> 
<input type="hidden" name="sel_attr" value="dummy"> 
<table class="dataentrytable" summary="Table is used to present the course search criteria" .. </table> 
<br> 
<input type="submit" value="Get Course Sections"> 
<input type="reset" value="Reset"> 
</form> 

나는 (내가 아주 쉽게 잘못 될 수 있음)을 이해하는 방법, 그것은 함수 checkSubmit()을 (사소한 코드가있는)를 제출 호출 여기에 관련 (내가 생각하는) 소스입니다 "/pban1/bwskfcls.P_GetCrse"에 대한 "POST"요청. 어쨌든 그것은 또한 URL에 일부 매개 변수를 전달합니다 (JavaScript? PHP? 단서입니까?).

내가 다음과 같은 오류가있는 페이지가 열립니다 주소 표시 줄 https://banweb.mcgill.ca/pban1/bwskfcls.P_GetCrse에서 호출 된 URL을 배치하려고하면 :

mod_plsql: /pban1/bwskfcls.P_GetCrse HTTP-404 bwskfcls.P_GetCrse: MANY PROCEDURES MATCH NAME, BUT NONE MATCHES SIGNATURE (parameter names) 

그래서 내가 올바른 매개 변수를 전달 아니에요 이해 해요입니다. 어떤 매개 변수를 전달해야하며 어떻게해야합니까?

다른 출처가 필요하면 기꺼이 게시하십시오. 모든 입력 또는 설명이 만족 스럽습니다. 시행 착오와 많은 알지 못하는 용어로만이 시점을 알았습니다.

는 편집 : 여기 checksubmit에 대한 코드를()의

<script language="JavaScript" type="text/javascript"> 
<!-- Hide JavaScript from older browsers 
var submitcount=0; 
function checkSubmit() { 
if (submitcount == 0) 
    { 
    submitcount++; 
    return true; 
    } 
else 
    { 
alert("Your changes have already been submitted."); 
    return false; 
    } 
} 
// End script hiding --> 
</script> 
+0

사소 해 보일 수도 있지만 checkSubmit 코드를 게시 할 수 있습니까? – jbabey

+0

@jbabey 문제 없습니다. – Lanaru

답변

0

나는 그것을 알아 냈다. 대답을 주셔서 감사합니다, 그들은 도움이되었지만 필요한 정확한 서명을 알아 내기 위해 더 많은 조사를해야했습니다.

크롬에서 개발자 도구를 열고 (Ctrl + Shift + I) 네트워크 탭으로 전환했습니다. 거기서 모든 네트워크 활동을 모니터 할 수있었습니다. 나는 "코스 섹션 가져 오기"버튼을 눌렀습니다. Lo와 보라, 나는 POST 요청 팝업을 봤다!

클릭하면 모든 매개 변수가 요청에서 "양식 데이터"헤더 아래에 전달됩니다. 나는 그들을 p1 : v1 & p2 : v2 ... 형식으로 다시 작성하고 완성 된 URL을 브라우저에서 열었습니다. 성공! CURL은 필요하지 않습니다.

0

귀하의 예제의 형태는 스크립트에 <input type="hidden" ../> 필드에 주어진 모든 매개 변수를 전달합니다. 귀하의 예제 코드에서는 JavaScript가 관련되어 있지 않지만 (CheckSubmit()), JavaScript는 입력 필드의 값을 설정하는 데 사용됩니다.

가장 좋은 기회는 모든 항목을 제출하고 검색 기준과 일치하는 항목을 수정하는 것입니다.

수동으로 요청을 실행하려면 linux/unix 콘솔에서 curl과 같은 도구를 사용할 수 있습니다.

+0

일반적으로 작동하는 방식은 "숨김"유형의 입력 요소가 POST 요청과 함께 매개 변수로 전달되는 요소입니까? – Lanaru

+1

@Lanaru '

'태그로 묶인 모든' '필드가 매개 변수로 전달됩니다. ''은 UI에서 볼 수없는 것입니다 (그러므로 숨겨져 있습니다). 또한 '또는 ''과 같은 다른 문자가있을 수 있습니다. – Sirko

0

서버로 가짜 호출을하려면 POST 호출로 페이지를 열어야합니다. 브라우저에서이 작업을 수행 할 수 없습니다. 올바른 값 더미를 교체 서버 측 코드 또는

CURL -X POST -d 'term_in=201209&sel_subj=dummy&sel_day=dummy&sel_schd=dummy......' https://banweb.mcgill.ca/pban1/bwskfcls.P_GetCrse 

같은 CURL 요청을 사용하여 값의 나머지 ...를 교체 할 수 있습니다. 사이트에서 쿠키를 확인하지 않는다고 가정합니다. 이 경우 브라우저에서 쿠키를 CURL 호출에 추가해야합니다. CURL 문서에서이를 수행하는 방법을 확인하십시오.

또한 컬 라이브러리가있는 서버 코드에서 수행 할 수도 있습니다.

1

form이 제출되면 양식의 모든 필드가 서버에 제출됩니다. 폼에는 많은 숨겨진 필드가 있으며 이러한 숨겨진 필드는 모두 POST 요청의 매개 변수로 서버에 전달됩니다.

/pban1/bwskfcls.P_GetCrse?term_in=201209&sel_subj=dummy... 

그들 (모양) 서버와 같은

뭔가 매개 변수가있는 저장 프로 시저를 호출 (아마도 값으로 dummy이 매개 변수를 제거 후).

오류는 이미 일부 매개 변수 세트에 대해 정의 된 절차가 아니라 모두가 같은

MANY PROCEDURES MATCH NAME, BUT NONE MATCHES SIGNATURE (parameter names)

그래서 보이는 말한다. 따라서 facultyterm을 입력으로 사용하는 저장 프로 시저가있을 수 있지만 faculty 만 입력하면됩니다.

관련 문제