2014-05-22 2 views
1

다음 코드에서 잘못된 점을 알고 있습니까?웹 사이트 양식의 cgi/변수

printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10); 
printf("<TITLE>VASTAUS</TITLE>\n"); 
printf("<H3>The Result is!!!</H3>\n"); 

data = getenv("QUERY_STRING"); 
sscanf(data, "v=%lf&energiaLuokka=%c[^&]&kaupunki=%s[^&]&vuosi=%s[^&]&kuukausi=%s[^&]&pva=%s", &v, &energiaLuokka, kaupunki, vuosi, kuukausi, pva); 
printf("Kuutio: %lf luokka: %c kaupunki: %s vuosi: %s kuukausi: %s paiva: %s", v, energiaLuokka, kaupunki, vuosi, kuukausi, pva); 
픽업하기 위해 CGI와 웹 사이트의 양식을 통해 주어진 변수를 생각하지만, 현재는 단지 2 첫 번째 값 .. 결과 출력 집어됩니다

: Kuutio: 54.000000 luokka: D kaupunki: vuosi: kuukausi: paiva:

당신이 kaupunki "떠나 볼 수 있듯이, vuosi , kuukausi 및 paiva "변수는 완전히 비어 있습니다. 코드를 잘하지만 문제는 html로 ...에있는 경우

는 또한 궁금하지만이어야 havent 한 그것을

<BR> 
<fieldset><legend>Rakennuksen paikkakunta</legend> 
<label class="labelcenter" for="kaupunki">Paikkakunta</label> 
<select name="kaupunki" id="kaupunki"> 
<option value="0">Valitse</option> 
<option value="Espoo">Espoo</option> 
<option value="Forssa">Forssa</option> 
</select> 
</fieldset> 
<BR> 
시간에 대한

감사를 해결하기 위해 아무것도 발견!

+0

나는'sscanf()'에있는 변수들에 대해'&'를 놓쳤다 고 생각합니다. –

+0

결과가 동일하게 남아 있습니다. 누락 된 값은 문자열이므로 필요하지 않아야합니다./ – user3619664

+0

CGI 모듈을 사용하여 시도하십시오. http://perldoc.perl.org/CGI.html –

답변

0

형식 문자열에있는 [^&]은 모두 존재하지 않아야합니다. 이들은 부자연스럽고 불필요하며 파싱을 실패하게 만듭니다.

그러나 질문해야하는데 왜 sscanf()을 사용하여 쿼리 문자열을 전혀 구문 분석하지 않습니까? 쿼리 문자열 매개 변수가 다른 순서로 나타나면 브라우저가 중단됩니다 (브라우저가 양식의 매개 변수 순서를 보존해야한다는 것을 지정하는 사양에는 아무 것도 없습니다). 또한 백분율 인코딩을 디코딩하지 않아도됩니다.

내 작업을 제대로 수행하는 CGI 라이브러리를 사용하는 것이 좋습니다.

+0

안녕하세요, 왜 제가 거의 전적으로 프로그래밍에서 새로운 (초보자) 그리고 심지어 sscanf()가 exSample 코드에 있었기 때문에 우리가이 프로젝트를 시작했을 때 우리 학교 선생님이 우리에게 주었기 때문에 찾을 수있는 CGI 라이브러리 eventhought didnt에 대해서 들었습니다.하지만 언급 해 주셔서 감사합니다 .. 어쩌면 내가 그것을 줄 것이다. :) – user3619664