2015-10-01 2 views
1

У меня мало скриптов Perl, которые выполняются, даже если мы передаем URL-адрес в адресной строке браузера. Я просто хочу остановить это поведение. То, что я хочу, - это когда пользователь нажимает кнопку или ссылку, на которую прикреплены скрипты, и только они должны получить выполнение.Как заставить скрипты Perl выполняться только тогда, когда пользователь нажимает на ссылку/кнопку и т. Д.

www.example.com/cgi-bin/abc.cgi --- Should not work. 

<button on-click="/cgi-bin/abc.cgi"> Execute me </button> -- it should work 

Как это сделать?

+5

Вы в основном хотите, чтобы сервер приложений решал, нужно ли вызывать или нет сценарий. Удачи с этим. –

+3

Это пахнет подозрительно, как проблема X-Y (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). На что вы на самом деле пытаетесь выполнить, блокируя пользователей вручную вводить URL-адрес? –

+1

Итак, что должно произойти, когда URL-адрес вводится в адресной строке? –

ответ

4

Вы можете сделать это, есть два способа сделать это. Один, когда нажатие кнопок вы можете отправить форму с помощью метода POST, а код должен быть только выполнить, когда сценарий вызывается с помощью метода POST, например:

HTML:

<form method="POST" action="/cgi-bin/abc.cgi"><input type="submit" name="submit_button" value="Execute me"><form> 

Perl код:

if($ENV{REQUEST_METHOD} eq 'POST') { 
    ## execute special code 
} 

Два, вы можете проверить наличие параметра в строке запроса:

HTML:

<input type="button" value="Execute me" onClick="window.location.href='/cgi-bin/abc.cgi?doExecute=1';"> 

Perl:

use CGI; 

my $cgi = new CGI; 

if(defined $cgi->param('doExecute') && $cgi->param('doExecute')) { 
    ## execute special code 
} 

Я надеюсь, что это помогает.

+4

Обратите внимание, что второе предложение легко лишается пользователей, введя параметр в адресную строку вместе с URL-адресом. –

+1

Вы также можете просто указать атрибут 'name' для'

+0

Можно комбинировать (1) и (2). Затем прочитайте несколько программ, которые эмулируют POST из CLI. –

Смежные вопросы

 Смежные вопросы