Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12782[/thread]

Rückgabewert von Web-Server

Leser: 2


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2008-11-19 16:12
#116400 #116400
Hallo zusammen,

ich habe folgendes Skript für einen Web-Server:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/perl

use HTTP::Daemon;
use HTTP::Status;
use strict;

my $My_IP = 'localhost';
my $Name = "HTTP Server";

my $d = HTTP::Daemon->new(
        LocalHost => $My_IP,
        LocalPort => 3003,
);
die "$Name: Socket konnte nicht erstellt werden - Grund: $!\n" unless $d;

print " $Name läuft auf : <", $d->url, ">\n";
while (my $c = $d->accept) {
        while (my $r = $c->get_request) {
                if ($r->method eq 'GET') {
                        my $rs = new HTTP::Response(RC_OK);
                        $rs->content("<HTML>");
                        $rs->add_content("<HEAD> <TITLE> Anzeige </TITLE>  </HEAD>");
                        $rs->add_content("<BODY>");
                        $rs->add_content("Nr: <input name=Nummer size 30> ID: <input name=Zuordnung size 30>  ");
                        $rs->add_content("<input type=submit value=Zuweisen>  <input type=submit value=Löschen> </form> <hr>");
                        $rs->add_content("</BODY> </HTML>");
                        $c->send_response($rs);
                }
                else {
                        $c->send_error(RC_FORBIDDEN)
                }
        }
        $c->close;
        undef($c);
}


Jetzt würde ich gerne die Rückgaben über die Buttons "Zuweisen" und "Löschen" wieder zurück in mein Skript bekommen um diese dort weiter zu verarbeiten. Ist dies möglich? Nach Möglichkeit ohne CGI.

Gruß Stefan
GwenDragon
 2008-11-19 17:10
#116405 #116405
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Quote
$c->get_request
$c->get_request( $headers_only )

This method reads data from the client and turns it into an HTTP::Request object which is returned.
CPAN:HTTP::Daemon
$c->get_request liefert ein Objekt in der Form CPAN:HTTP::Request zurück.
Du prüfst, ob die Methode POST stattfand.
Und dann liest du die Daten aus.

Schau bitte mal unter CPAN:HTTP::Request nach.

//EDIT:
Füg doch mal nach Zeile 28 folgendes zum Debuggen ein bei einem POST Request ein, dann siehst du was geliefert wird. ;)
Code: (dl )
1
2
3
4
elsif ($r->method eq 'POST') {
#print STDERR $r->as_string;
print STDERR $r->content;
}

Das was $r->content beim POST leifert kannst du dann parsen.
nepos
 2008-11-20 09:09
#116428 #116428
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Und bitte erzeug auch mal gültiges HTML. Das, was da in deinem Code-Brocken steht ist ziemlich kaputt (das öffnende <form ... > fehlt z.B.).
Gast Gast
 2008-11-24 09:42
#116563 #116563
Danke schon mal, werds versuchen.

Stefan
Gast Gast
 2008-11-24 11:32
#116564 #116564
Hallo,

könnt ihr mir das vielleicht als Beispiel geben? Programmiere noch nicht so lange mit Perl und bekomme es leider nicht eingebunden.

Stefan
GwenDragon
 2008-11-24 18:04
#116573 #116573
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Statt:
Code: (dl )
1
2
3
4
5
6
21: $rs->content("<HTML>");
22: $rs->add_content("<HEAD> <TITLE> Anzeige </TITLE> </HEAD>");
23: $rs->add_content("<BODY>");
24: $rs->add_content("Nr: <input name=Nummer size 30> ID: <input name=Zuordnung size 30> ");
25: $rs->add_content("<input type=submit value=Zuweisen> <input type=submit value=Löschen> </form> <hr>");
26: $rs->add_content("</BODY> </HTML>");

besser sowas:
Code: (dl )
1
2
3
4
5
6
7
06: use CGI;
21:
22: $rs->content(CGI::start_html(-title=>' Anzeige '));
23: $rs->add_content(CGI::start_form);
24: $rs->add_content("Nr: " . CGI::textfield(-name=>'Nummer', -size=>30) . "ID: " . CGI::textfield(-name=>'Zuordnung', -size=>30);
25: $rs->add_content(CGI::submit(-value=>'Zuweisen') . CGI::submit(-value=>'Löschen') );
26: $rs->add_content(CGI::end_form . CGI::hr . CGI::end_html);
Gast Gast
 2008-11-24 21:22
#116579 #116579
Hallo,

habe das mal ausprobiert. Danach erhalte ich die Meldungen, dass bei "strict" CGI::start_form, CGI::hr und CGI::end_html nicht erlaubt sind.

Kommentiere ich strict aus, so stehen diese Anweisungen jedoch als Text auf der html-Seite. Außerdem würde ich gerne strict verwenden.

Was habe ich diesmal falsch gemacht?
renee
 2008-11-25 00:01
#116580 #116580
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig mal etwas Code...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-11-25 09:13
#116581 #116581
mach mal hinter die Funktionsaufrufe bei CGI::xxx ein "()". es könnte sein, dass strict das sonst für "barwords" hält und sowas sagt wie "barwords not allowed"
Gast Gast
 2008-11-25 11:14
#116583 #116583
Wunderbar,

soweit erhalte ich jetzt mal eine Rückgabe. Danke

Bin mal gespannt welche neuen Schwierigkeiten auf mich warten.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2008-11-19 16:12.