Я пытаюсь отправить получение или сообщение через параметр командной строки. Это - тест сценарий в командной строке, прежде чем я протестирую через браузер (сервер имеет проблемы). Я пытался искать онлайн, и я предполагаю, что, вероятно, использовал неправильную терминологию, потому что я ничего не получил. Я знаю, что это возможно, потому что я видел, что кто-то сделал это. Я просто не помню, как это было сделано.
Спасибо!:)
Используете ли вы стандартный модуль CGI?
Например, с помощью следующей программы (обратите внимание на -debug
в аргументах используйте CGI
)
#! /usr/bin/perl
use warnings;
use strict;
use CGI qw/ :standard -debug /;
print "Content-type: text/plain\n\n",
map { $_ . " => " . param($_) . "\n" }
param;
вы его скармливаете параметры в командной строке:
$ ./prog.cgi foo=bar baz=quux Content-type: text/plain foo => bar baz => quux
Вы также можете сделать это через стандартный ввод:
$ ./prog.cgi (offline mode: enter name=value pairs on standard input; press ^D or ^Z when done) foo=bar baz=quux ^D Content-type: text/plain foo => bar baz => quux
Чтобы протестировать программу CGI из командной строки, вы подделываете среду, которую сервер создает для программы. CGI.pm имеет специальный автономный режим, но часто мне легче не использовать его из-за дополнительных настроек, которые мне нужно сделать для всего остального, чего обычно ожидают мои программы.
В зависимости от реализации вашего сценария, это включает в себя установку многих переменных среды, которые вы можете сделать из сценария-оболочки, который выдает себя за сервер:
#!/bin/bash
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=GET
perl program.cgi
Если вы делаете это для запроса POST, среда немного отличается, и вам нужно предоставить данные POST на стандартный ввод:
#!/bin/bash
export CONTENT_LENGTH=$(perl -e "print -s q/post_data/");
export HTTP_COOKIE=...
export HTTP_HOST=test.example.com
export HTTP_REFERER=...
export HTTP_USER_AGENT=...
export PATH_INFO=...
export QUERY_STRING=$(cat query_string);
export REQUEST_METHOD=POST
perl program.cgi < post_data
Вы можете сделать это настолько необычным, насколько вам нужно, и каждый раз, когда вы хотите протестировать программу, вы изменяете данные в файлах query_string или post_data. Если вы не хотите делать это в сценарии оболочки, так же легко создать сценарий Perl-оболочки.
Есть одна вещь, которую я нахожу странной: Вы вызываете ob _ end _ flush ()
в начале функции. Это фактически очищает выходной буфер, но также выводит все сначала клиенту (я предполагаю, включая Content-Headers, заданные CodeIgniter). Измените вызов на ob _ end _ clean ()
, он очистит буфер и отбросит его. Это даст вам чистый старт для создания собственных заголовков.
Другой наконечник:
Вместо того, чтобы читать файл как поток и передавать его поблочно, вы могли бы дать эту функцию попробовать:
// ...
if (file_exists("dir-with-files/$filename")) {
readfile($file);
}
Это заботится почти обо всем.
-121--4268455-Вот статья , в которой приведен пример выбора целой недели с помощью указателя даты.
$(function()
{
$('.date-pick').datePicker({selectWeek:true,closeOnSelect:false});
});
-121--1421865- Да, это можно сделать из командной строки, минуя ваш сервер. Эта страница объясняет все: Отладка Perl CGI (sitewizard.com) (особенно пункт 6 на этой странице). Здесь я цитирую самую важную часть:
Чтобы проверить сценарий в автономном режиме с помощью метод GET, просто установите QUERY_STRING переменная среды соответственно. При использовании Windows можно использовать следующую команду: строка в окне DOS перед запуском сценарий в том же окне:
set QUERY_STRING=recipient=John@Doe.com&Fullname=M+Name
To тестирования сценария в автономном режиме с помощью метод POST, поместите строку ниже в текстовый файл с именем testinput.txt.
recipient = John@Doe.com & Fullname = M + Name
Затем перенаправить этот файл в качестве входных данных в сценарий. В системах Unix, а также в командной строке MSDOS Windows можно Выполните следующие пути:
perl -w scriptname.pl < testinput.txt
Ваш сценарий получит следующее ввод, как если бы он был отправлен форма на сайте. Проверьте ошибку сообщения, которые передают носики, если таковые имеются, помочь вам отследить проблему в сценарий.
LWP поставляется с готовыми сценариями, которые можно использовать из командной строки. Проверьте наличие скриптов GET
и POST
в вашей системе.
В Windows вы можете использовать VBScript для написания утилиты командной строки, которая вызывает библиотеку MS XML:
Dim XMLHttp : Set XMLHttp = CreateObject("Microsoft.XMLHTTP")
On Error Resume Next
strIPAddress = WScript.Arguments(0)
strMACAddress = WScript.Arguments(1)
strSubnetMask = WScript.Arguments(2)
On Error Goto 0
WScript.Echo "Attempting to wake host " & strIPAddress & " on NIC " & strMACAddress &
"using netmask " & strSubnetMask
strGetUrl = http://wolService/WolService/WolService.asmx/WakeBroadcast?hostIP=" &
strIPAddress & "&macAddress=" & strMACAddress & "&subnetMask=" & strSubnetMask
XMLHttp.Open "GET", strGetUrl, False
XMLHttp.Send ""
WScript.Echo XMLHttp.ResponseText
Изменить: этот скрипт отправляет HTTP-запросы и может использоваться из командной строки. Меня смутил вопрос «Как я могу отправить данные POST и GET в сценарий Perl CGI через командную строку» и подумал, что речь идет об отправке данных POST и GET в сценарий Perl CGI через командную строку из неуказанной клиентской ОС.