Schrift
[thread]717[/thread]

Auselesen



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
haijp
 2006-04-28 13:21
#7452 #7452
User since
2006-04-11
14 Artikel
BenutzerIn
[default_avatar]
hi leute hab hier mal ein kleines Porgram was eine Linksammlung ausgibt.

Code: (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/perl

use strict;
use warnings;

use CGI qw( :all );
use CGI::Carp qw(fatalsToBrowser);
my$cgi = new CGI;

#File einlesen und in ein Array speichern.

my $pfad = '/SAN/content/cgi-bin/links';
open(DATEI, '<', $pfad);
my @inhalt=<DATEI>;
close(DATEI);

#Ausgabe Header usw.

my $Autor = "Andre Hornig";
$cgi->default_dtd('-//W3C//DTD HTML 4.01 Transitional//EN');
print $cgi->header(),
$cgi->start_html('Linkit'),
$cgi->h1('Linkit'),
$cgi->p('Eine kleine Favoritenliste'),
$cgi->p({-style => 'color:red'}, "Verfasst von: ", $cgi->i($Autor)),
$cgi->hr({-noshade => undef, -size => '1'}),
$cgi->end_html();

#Verarbeitung des Files mit Ausgabe

my $link;
my $i = 0;

foreach my $zeile (@inhalt) {

if ($i == 0 ) {

$link = $zeile;

$i = $i + 1
}

else {

print $cgi->p('',$cgi->a({-href => $link},$zeile));
$i = 0;
}
}

#Ausgabe der Seite

print <<"EOF";

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kommentarseite</title>
</head>
<body bgcolor="#99ccff">
<h1>Neuen Link eintragen</h1>
<form action="http://192.168.220.128/cgi-bin/comments.pl" method="post">
<p>Link:<br><input type="text" name="AnwenderName" size="40" maxlength="40"></p>
<p>Beschreibung:<br><textarea rows="5" cols="50" name="Kommentartext"></textarea></p>
<p><input type="submit" value="Absenden"></p>
</form>
</body>
</html>
EOF


Ganz grob das Prog liest die Werte aus nem File ein gibt Sie aus und man soll jetzt noch die möglichkeit haben direkt neue Links also werte hinzuzufügen. Frage ist wie verarbeite ich die Eingabe und speicher Sie dann wieder in das File zu den vorhandenen?
renee
 2006-04-28 13:41
#7453 #7453
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mit
Code: (dl )
1
2
3
open(my $fh,">>",$linkfile) or die $!;
print $fh $url,"\n",$linktext,"\n";
close $fh or die $!;


Du solltest auch in Deinem CGI-Skript die Fehlerbehandlung machen und rücke bitte etwas ordentlicher ein. So wie es ist, lässt es sich teilweise nur schwer lesen.
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/
haijp
 2006-04-28 14:31
#7454 #7454
User since
2006-04-11
14 Artikel
BenutzerIn
[default_avatar]
Thx schonmal nur die Frage war auch noch wie ich überhaupt die sachen die ich auf der seite eingeben dann auslesen kann also ich schätze ja mal muss dann die beiden werte wie du es sagst in 2 neue $ speichern und dann einfach ins file printen.

oder steh ich atm nur aufem schlauch ^^

also er verweisst ja atm auf comments.pl

Code: (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
#!/usr/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);

read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
my @Formularfelder = split(/&/, $Daten);
my ($Feld, $Name, $Wert);
my %Formular;
foreach $Feld (@Formularfelder) {
 (my $Name, my $Wert) = split(/=/, $Feld);
 $Wert =~ tr/+/ /;
 $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $Wert =~ s/</&lt;/g;
 $Wert =~ s/>/&gt;/g;
 $Formular{$Name} = $Wert;
}


print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Feedback</title></head>\n";
print "<body><h1>Feedback Ihrer Eingabe vom Programm <i>comments.pl</i></h1>\n";
print "<p><b>Link:</b> $Formular{links}</p>\n";
print "<p><b>Beschreibung:</b> $Formular{beschreibung}</p>\n";
print "</body></html>\n";


so gibt der mir einfach nur die werte auf einer anderen seite halt nochmal aus, muss es ja gar net soll nur die werte auslesen und in file hinzufügen aber ich back das prog atm nicht so das ich es umgeschrieben kriege -.- weil ich oben schon gar nicht verstehe wie oder wo der die werte abspeichert.

hatte es mal mit dem zusatz hier so probiert

Code: (dl )
1
2
3
4
5
my $pfad = '/SAN/content/cgi-bin/links';
open(DATEI, '>>', $pfad);
print "$Formular\n";
print "$Formular\n";
close(DATEI);


weil es bei der hltm ausgabe ja auch der $Formular ist klappt aber net :|

ach und sry für meinen schreibstyle atm :D\n\n

<!--EDIT|haijp|1146220692-->
renee
 2006-04-28 14:38
#7455 #7455
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Deine comments.pl müsste dann ungefähr so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = CGI->new();
print $cgi->header();

my $linkfile = '/path/to/file.links';

my $url = $cgi->param('AnwenderName');
my $text = $cgi->param('Kommentartext');

$text =~ s/\r?\n/<br>/sg;

open(my $fh,">>",$linkfile) or die $!;
print $fh $url,"\n",$text,"\n";
close $fh or die $!;

print $cgi->b('Link wurde eingetragen');
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/
renee
 2006-04-28 14:41
#7456 #7456
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=haijp,28.04.2006, 12:31][...]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);

read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
my @Formularfelder = split(/&/, $Daten);
my ($Feld, $Name, $Wert);
my %Formular;
foreach $Feld (@Formularfelder) {
(my $Name, my $Wert) = split(/=/, $Feld);
$Wert =~ tr/+/ /;
$Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Wert =~ s/</&lt;/g;
$Wert =~ s/>/&gt;/g;
$Formular{$Name} = $Wert;
}

[...][/quote]
Bitte tu mir einen Gefallen und vergiss' diesen Teil wieder. Dafür gibt es CPAN:CGI.pm:
Code: (dl )
1
2
my $cgi = CGI->new();
my %Formular = $cgi->Vars();


Das ist viel übersichtlicher und viel sicherer!
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/
renee
 2006-04-28 14:44
#7457 #7457
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=haijp,28.04.2006, 12:31][...]
hatte es mal mit dem zusatz hier so probiert

Code: (dl )
1
2
3
4
5
my $pfad = '/SAN/content/cgi-bin/links';
open(DATEI, '>>', $pfad);
print "$Formular\n";
print "$Formular\n";
close(DATEI);


weil es bei der hltm ausgabe ja auch der $Formular ist klappt aber net :|

ach und sry für meinen schreibstyle atm :D[/quote]
Dann schau nochmal, was Du in dem Skript machst. Du gibst ja nicht nur $Formular aus, sondern $Formular{links} und $Formular{beschreibung}... Das musst Du bei der Datei dann natürlich auch machen...
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/
haijp
 2006-04-28 15:10
#7458 #7458
User since
2006-04-11
14 Artikel
BenutzerIn
[default_avatar]
jo danke bin noch nicht lange mit der sprache beschäftigt deswegen ;) aber dafür gibts ja hier immer hammer nette und gute hilfe besonders von dir hast glaube ich auf jeden meiner posts geantwortete 11 thx nochmal dafür.

Code: (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
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = CGI->new();
print $cgi->header();

my $pfad = '/SAN/content/cgi-bin/links';


my $url = $cgi->param('links');
my $text = $cgi->param('beschreibung');

$text =~ s/\r?\n/<br>/sg;

open(DATEI,'>>',$pfad) or die $!;
print DATEI "$url\n";
print DATEI "$text\n";
close (DATEI) or die $!;

print $cgi->b('Link wurde eingetragen');


und so klappts auch musste nur noch die rechte auf den file "links" umstellen :)

und weil ich ja doof bin hab ich direkt next question xD wenn ich das jetzt alles im selben prog haben will ohne das das hauptprogramm auf "comments.pl" zugreift muss ich dann einfach die
Code: (dl )
<form action="http://192.168.220.128/cgi-bin/comments.pl" method="post">
zeile umändern oder weglassen und den code asu commets.pl einfach unten anhängen?

und kannst du mir pls noch die zeile aus deinem beitrag hier erklären?
Code: (dl )
$text =~ s/\r?\n/<br>/sg;
\n\n

<!--EDIT|haijp|1146222934-->
nepos
 2006-04-28 16:06
#7459 #7459
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
$text =~ s/\r?\n/<br>/sg;

ersetzt alle Zeilenumbrueche in den HTML-Zeilenumbruch. Quasi sowas, wie in PHP nl2br macht.
renee
 2006-04-28 17:07
#7460 #7460
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du alles im selben Skript haben willst, musst Du noch eine Art "Schalter" einbauen, damit Du erkennen kannst, was gemacht werden soll. Bei der action musst Du dann natürlich das eine Skript hinschreiben.

Und bau in das form noch ein hidden-Feld ein:
Code: (dl )
<input type="hidden" name="action" value="1" />


Dann muss das im Skript so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = CGI->new();
my %params = $cgi->Vars();

print $cgi->header();

if($params{action} == 1){
# trage Link in die Datei ein
}
else{
# zeige die Links an
}
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/
haijp
 2006-04-28 18:05
#7461 #7461
User since
2006-04-11
14 Artikel
BenutzerIn
[default_avatar]
hmmm versteh nicht ganz wo ich was einbauen soll sry :(
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-04-28 13:21.