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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-11-17 09:07:34

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Perl i tablica $_POST

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

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 "GET") {
 $buffer = $ENV{'QUERY_STRING'};
}

@pairs=split(/&/,$buffer);

Teraz prosiłbym o info, sznurki, wskazówki jak przerobić to na POST?
Kod

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...


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#2  2011-11-17 09:22:18

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Offline

 

#3  2011-11-17 09:38:23

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Perl i tablica $_POST

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2011-11-17 09:44:36

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Perl i tablica $_POST

@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:

Kod:

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 ;]


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#5  2011-11-17 10:04:46

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Perl i tablica $_POST

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2011-11-17 16:29:43

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Perl i tablica $_POST

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

 

#7  2011-11-17 19:19:40

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Perl i tablica $_POST

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 ;)"


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#8  2011-11-17 22:12:04

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Perl i tablica $_POST

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.

Kod:

#!/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

 

#9  2011-11-17 23:09:14

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: Perl i tablica $_POST

Dzięki Minio - postaram się to przeanalizować na weekendzie i obczaić jak to działa i dlaczego tak a nie inaczej ;)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)