2016-10-13 3 views
0

예를 들어 설명하기가 어렵습니다. 나는 이런 식으로 뭔가가있는 경우 : 있도록CGI 버튼을 누른 다음 리디렉션하는 방법을 확인하려면 어떻게합니까?

print submit(value => Exit), "\n"; 

는 어떻게이 사람이 브라우저가 종료 버튼을 누를 때, 그것은 "CYA 나중에"예를 들어라는 페이지로 리디렉션 할 수 있을까요.

+0

여부를 특별히 다만 어쩌면 "CYA 나중에" – user2947725

+0

https를 말한다 라인을 인쇄, 리디렉션 : //metacpan.org/pod/distribution/CGI/lib/CGI.pod#HTML-Generation-functions-should-no-longer-be-used – Quentin

답변

0

제출 버튼에 name을 지정하십시오. 양식을 제출하는 데 사용되는 경우 params에 표시됩니다.

+0

예를 들어 줄 수 있습니까? 나는 조금 새로운이. – user2947725

+0

@ user2947725 -'('name => "foo", value => "exit") "\ n"; 그리고 if (params ("name")) – Quentin

1

CGI.pm의 HTML 생성 기능을 사용하고 있습니다. 이것들은 deprecated for some time이었습니다 (그리고 결코 좋은 생각이 아닙니다). templating engine instead을 사용하는 것이 좋습니다.

당신이 요구하는 변경 사항은 매우 간단합니다. 두 곳에서 코드를 변경해야합니다. 첫째, 생성 된 HTML에 이름을 추가 할 수 있도록 제출 단추를 생성하는 코드를 변경해야합니다.

# Don't do this. Use a template. 
# NB: Note the '-' I've added to the option names. 
print submit(-value => 'Exit', -name => 'Exit'), "\n"; 

그런 다음이 새 매개 변수를 처리하기 위해 들어오는 매개 변수를 처리하는 코드를 변경해야합니다. A) 리디렉션 헤더 Content-Type 헤더를 포함하지 않는 경우 프로그램이 너무 (반환 계획 할 수있는 다른 헤더 대신 인쇄해야)와 b) 프로그램이 종료해야

if (param('Exit')) { 
    print redirect('http://somewhere_else.com/'); 
    exit; 
} 

주 리디렉션 헤더를 인쇄 한 직후에 다른 출력을 인쇄해서는 안됩니다.

업데이트 : HTML 생성 기능을 피하는 이유 중 하나는 사용하기가 너무 복잡하다는 것입니다. 그것은이 출력을 생성으로

print submit(value => Exit) 

이 실제로 잘못 : 좋은 예는 이들의 사용량입니다

<input type="submit" name="value" value="Exit" /> 

나는 당신이 의미했다 의심 무엇 :

print CGI->new->submit(-value => 'Exit') 

이 있습니다 어떤 :

<input type="submit" name=".submit" value="Exit" /> 

명시 적 이름을 지정하지 않았으므로이 함수는 하나를 합성합니다 (.submit). 생산

print submit(-value => 'Exit', -name => 'Exit') 

이 : 내 예에서 I는 입력을 명시 적으로 이름을 준 이상

<input type="submit" name="Exit" value="Exit" /> 
관련 문제