Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.




złodziej wirków ]:->
Nie wiem czy ktoś z was kojarzy taki wynalazek jak DirectAdmin ale ostatnio płodziłem pewnego plugina do niego. Jednym ze skryptów jest prosty skrypcik perlowski. No i tu się zaczyna problem (perla jako tako nie znam - tyle co mi trzeba było do przetworzenia requestu i napisania pluginu ;]). Jeden skrypt zapodaje z formularza dane do skryptu perlowego. No i jak formularz prześlę metodą GET to perl to łapie. Ale może zdarzyć się sytuacja że GET będzie tasiemcowaty. Jak zmusić perla do przełknięcia tablicy $_POST ? Fragment skryptu perlowskiego który dobiera sie do $_GET
#!/usr/bin/perl
use LWP::Simple;
local ($buffer, @pairs, @login, $user_conf_file, $pair, $domain, $state);
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs=split(/&/,$buffer);Teraz prosiłbym o info, sznurki, wskazówki jak przerobić to na POST?
Kod
#!/usr/bin/perl
use LWP::Simple;
local ($buffer, @pairs, @login, $user_conf_file, $pair, $domain, $state);
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
$buffer = $ENV{'QUERY_STRING'};
}
print $buffer;wywala mi na ekran wszystko mówiący napis POST podczas gdy na GET jest wyświetlane wszsytko co zostało do skryptu przekazane...
Offline



inż.
myślę że pomoże:
http://www.scs.leeds.ac.uk/Perl/Cgi/textareas.html
Offline







Podobno człowiek...;)








A ja bym radził sprawdzić, co potrafi WWW::Mechanize i/lub Web::Scraper, są trudniejsze od LWP:Simple, ale ma 25x większe możliwości, bazuje na nich np moduł Finance::Bank::Mbank (daje rade z logowaniem - formularz javascript, i sprawdzeniem stanu konta).
Biblioteka mBank.pm ma aż 5.6 kb (z komentarzami) - i działa z takim bajzlem. :D
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2011-11-17 09:39:14)
Offline




złodziej wirków ]:->
@jacekalex - cały skrypt perlowski ma aż 22 linijki. Zadaniem skryptu jest pobranie z tablicy POST/GET loginu, nazw domen i wpisanie nazw domen do pliku. Równie dobrze mogę to zacząć pisać w C/C++, Pyhtonie czy w Javie tylko pytanie po jakiego grzyba z armatą na wróbla? Cały UserLevel pluginu to 4 pliki o łącznej długości 76 linijek. Z czego 90% to linijki w stylu:
echo "<table cellspacing='1' cellpadding='3' class='list'><tr><td class='listtitle'><a class='listtitle'><b>${PLUGIN_NAME}</b></a></td>"
echo "<table cellspacing='1' cellpadding='3' class='list'>";
echo "<fieldset style=\"border-color: blue; padding:8xp;text-align:justify; background-color:lightblue\">";Czyli wypluwanie kodu HTML ;]
@milyges - gracie zapoznam się i potestuję może coś mi z tego wyjdzie ;]
Offline







Podobno człowiek...;)








W takim razie - zainteresuj się modułami CGI -tam dość łatwo wsadzisz dane POST, bo LWP::Simple działa raczej od drugiej strony.
Tu masz fajny działający przykład:
Strona: http://anders.com/projects/sysadmin/djbdnsRecordBuilder/
Skrypt: http://anders.com/projects/sysadmin/djbdnsRecordBui … ildRecord.txt
I chyba (Twojego skryptu nie widziałem), wystarczy 10 linijek, a nie 22 :D
Tu masz prosty przykład POST:
http://www.tutorialspoint.com/perl/perl_cgi.htm
A tu fajne przykłady, które chyba już czytałeś.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2011-11-17 10:22:00)
Offline




Użyszkodnik
winnetou: mi umknęła chyba najistotniejsza kwestia, czyli w jakiej relacji jest ten skrypt do żądania HTTP.
Ten skrypt ma za zadanie wysłać żądanie HTTP gdzieś tam, czy cokolwiek może wysłać do tego skryptu żądanie, a on ma go przetworzyć i wysłać odpowiedź?
W tym pierwszym wypadku użyj LWP::UserAgent. W tym drugim — CGI. Jeżeli chcesz przykładów użycia, to możesz zajrzeć do źródła moich skryptów: getlyrics.pl (LWP::UA) i Jab2GG (CGI).
Na marginesie, niemal na pewno nie masz na myśli local.
Offline




złodziej wirków ]:->
Minio - skrypt odbiera post z formularza, ma go przetworzyć a następnie wynik wypluć na ekran/konsole.
Co do "local" to skrypt powstał po ślepieniu się i próbie zrozumienie jednego z pluginów które już ktoś napisał.
Dobra co ja się będę rozpisywał jak ktoś ma ochotę pogrzebać w moich wypocinach to plugin jest dostępny na "Stronie developera ;)"
Offline




Użyszkodnik
winnetou: jeżeli dobrze zrozumiałem, to chodzi Tobie o coś takiego.
Czytanie i modyfikowanie plików konfiguracyjnych oraz dodatkowy kod HTML/CSS już sobie dopiszesz.
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(-no_xhtml -nosticky);
use utf8;
my $query = new CGI;
print $query->header(-type => 'text/html',
-charset => 'UTF-8'
);
if ($query->param('do_this')) {
my $login = $query->param('hidden_name');
print "<h1>$login</h1>\n";
foreach my $name ($query->param) {
next if ($name =~ m/do_this|hidden_name/);
print $name . " -- " . $query->param($name) . '<br>' ."\n";
}
}
print $query->start_multipart_form(-name => 'connect') . "\n";
print $query->hidden(-name => 'hidden_name', -default => ['jakis login']) . "\n";
foreach my $domena ('domena1', 'domena2', 'domena3') { # tutaj powinieneś działać na tablicy domen danego użytkownika
print $query->checkbox(-name => $domena, -checked => 0, -label => $domena) . "\n";
}
print $query->submit(-name => 'do_this', -value => 'Wyślij') . "\n";
print $query->end_form . "\n";Offline




złodziej wirków ]:->
Dzięki Minio - postaram się to przeanalizować na weekendzie i obczaić jak to działa i dlaczego tak a nie inaczej ;)
Offline