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

Hilfe mit einem GB: ich brauche mit nem selbstgeproggten GB

Leser: 1


<< |< 1 2 3 4 ... 6 >| >> 58 Einträge, 6 Seiten
Gast Gast
 2003-08-26 18:35
#1786 #1786
Hallo Leute,
ich habe eben ein sehr kleines Gastebuch geproggt mit CGI, und er mahct net genau das was er soll.
Hapern tuts beim Versuch, es in die Datei mit den Einträgen zu schreiben:
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
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
69
70
71
72
73
74
75
76
open (DATEI2,  ">/homepages/18/d23090695/htdocs/eintrag.html") || die "Datei nicht gefunden!";
print DATEI2 @NeueZeilen;
close(DATEI2);

@NeueZeilen enthält ein Konstrukt der Eingaben, das dürft so auch stimmen. Aber er tut halt beim schreiben einfach nur...NICHTS! Die Datei bleibt leer.

Am besten ich geb den ganzen Quelltext des Scripts her:
#! /usr/bin/perl

use CGI;
my $cgi = new CGI;

use CGI::Carp qw(fatalsToBrowser);



my @NeuerEintrag;

push(@NeuerEintrag, "<;!-- Eintrag [".$cgi->param($username)."] -->;\n");

push(@NeuerEintrag, "<table border=\"0\" width=\"40%\"><tr>\n");

push(@NeuerEintrag, "<th>Name:</th><td>".$cgi->param($Username)."</td></tr>\n");

push(@NeuerEintrag, "<tr><td colspan=\"2\">".$cgi->param($Usertext)."</td>\n");

push(@NeuerEintrag, "</tr></table>\n");



open(DATEI, "</absoluterpfad/eintrag.html") || die "Datei nicht gefunden!";
@Zeilen = <DATEI>;

close(DATEI);



my @NeueZeilen;

my $Zeile;

foreach $Zeile (@Zeilen) {

if(/^<;!-- NEU -->;/) {

foreach(@NeuerEintrag) {

push(@NeueZeilen,$_);

}

push(@NeueZeilen,"<;!-- NEU -->;\n");

}

else {

push(@NeueZeilen,$Zeile);

}

}



open(DATEI2, ">/absoluterpfad/eintrag.html") || die "Datei nicht gefunden!";

print DATEI2 @NeueZeilen;

close(DATEI2);



print "Content type: text/html\n\n";

print "<html><head></head><body>Erfolgreich</body></html>";




Also das "ERFOLGREICH" krieg ich zu sehen, die "eintrag.html" bleibt so leer wie vorher



BITTE UM SCHNELLE ANTWORT,
MFG,
MW2000

<edit by strat>perl-tags hinzugefuegt</edit>\n\n

<!--EDIT|Strat|1061909046-->
Strat
 2003-08-26 18:52
#1787 #1787
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Eigentlich muesste es funktionieren... schreibst du vielleicht in eine andere Datei als du nachher liest? absoluterpfad/eintrag.html <=> /homepages/18/d23090695/htdocs/eintrag.html

gib vielleicht mal den Inhalt von @NeueZeilen und @Zeilen am bildschirm aus

Code (perl): (dl )
1
2
3
foreach(@NeuerEintrag) {
  push(@NeueZeilen,$_);
}

kannst du auch knapper folgendermaszen schreiben:
Code (perl): (dl )
push(@NeueZeilen, @NeuerEintrag);


Nebenbei: was passiert, wenn jemand <;!-- NEU -->; oder so als usernamen oder text angibt?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
MW2000
 2003-08-26 19:04
#1788 #1788
User since
2003-08-26
43 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich schreibe in die selbe datei die ich nacher lese

was passsiert wenn man <!-- NEU --> angibt??? weis noch net, ich will doch erstmal das zum laufen bringen
Rächtschraibfehla sin Gratis
JW
 2003-08-26 19:09
#1789 #1789
User since
2003-08-04
467 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Formal sieht es gut aus.
Was hast du für Rechte für Datei und Vezeichnis gesetzt, und was sagt das Logfile deines http-Servers.
MW2000
 2003-08-26 19:10
#1790 #1790
User since
2003-08-26
43 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nochmal komplett:

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
69
#! /usr/bin/perl

use CGI;
my $cgi = new CGI;

use CGI::Carp qw(fatalsToBrowser);



my @NeuerEintrag;

push(@NeuerEintrag, "<!-- Eintrag [".$cgi->param($username)."] -->\n");

push(@NeuerEintrag, "<table border=\"0\" width=\"40%\"><tr>\n");

push(@NeuerEintrag, "<th>Name:</th><td>".$cgi->param($Username)."</td></tr>\n");

push(@NeuerEintrag, "<tr><td colspan=\"2\">".$cgi->param($Usertext)."</td>\n");

push(@NeuerEintrag, "</tr></table>\n");



open(DATEI, "</homepages/18/d23090695/htdocs/eintrag.html") || die "Datei nicht gefunden!";
@Zeilen = <DATEI>;

close(DATEI);



my @NeueZeilen;

my $Zeile;

foreach $Zeile (@Zeilen) {

if(/^<!-- NEU -->/) {

foreach(@NeuerEintrag) {

push(@NeueZeilen,$_);

}

push(@NeueZeilen,"<!-- NEU -->\n");

}

else {

push(@NeueZeilen,$Zeile);

}

}



open(DATEI2, ">/homepages/18/d23090695/htdocs/eintrag.html") || die "Datei nicht gefunden!";

print DATEI2 @NeueZeilen;

close(DATEI2);



print "Content type: text/html\n\n";

print "<html><head></head><body>Erfolgreich</body></html>";
Rächtschraibfehla sin Gratis
JW
 2003-08-26 19:14
#1791 #1791
User since
2003-08-04
467 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Formal sieht es gut aus.
Was hast du für Rechte für Datei und Vezeichnis gesetzt, und was sagt das Logfile deines http-Servers.
Dubu
 2003-08-27 00:49
#1792 #1792
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
1.) Warum benutzt du kein 'use strict' und kein 'use warnings'?
2.) Woher kommen die Variablen $username, $Username und $Usertext?
3.) "Datei nicht gefunden" ist eine schlechte Fehlermeldung, da es noch mehr Ursachen geben kann, warum eine Datei nicht zum Lesen/Schreiben geoeffnet werden kann.
4.) Bitte benutze Einrueckungen, um deinen Code zu formatieren.
5.) Benutze einfache Anfuehrungszeichen oder andere Quotes (q{}), wenn in einem String keine Variablen vorkommen. Dann brauchst du die doppelten Anfuehrungszeichen auch nicht zu quoten und es wird uebersichtlicher.
6.) Wenn du schon CGI.pm benutzt, dann lass es auch den CGI- und den HTML-Header erzeugen.
7.) Wenn deine eintrag.html leer ist, wird auch nie etwas eingetragen. Da muss zumindest eine Zeile mit "<!-- NEU -->" hinein, denn so hast du es programmiert.
MW2000
 2003-08-27 01:25
#1793 #1793
User since
2003-08-26
43 Artikel
BenutzerIn
[Homepage] [default_avatar]
1.) "use strict" geht net wenn mich net alles täuscht und das mit warnings kenn ich net
2.) die Variablen kommen aus einem Formular in einer anderen Datei
3.) das soll mich ja erstma net stören
4.) Einrückungen brauch ich erstma net, wills ja nur ma zum laufen bringen
5.) übersichtlich brauch ichs noch net, siehe 4.)
6.) weis net was mit dem gemeint ist
7.) es ist net leer, es steht ein html-konstrukt und ein <!-- NEU --> drinnen

und was jetzt?
Rächtschraibfehla sin Gratis
MW2000
 2003-08-27 01:29
#1794 #1794
User since
2003-08-26
43 Artikel
BenutzerIn
[Homepage] [default_avatar]
achja, wenn ich strict verwenden will bekomm ich das:

Global symbol "$Username" requires explicit package name at /homepages/18/d23090695/htdocs/cgi-bin/guestbook.cgi line 18.
Global symbol "$Usertext" requires explicit package name at /homepages/18/d23090695/htdocs/cgi-bin/guestbook.cgi line 20.
Global symbol "@Zeilen" requires explicit package name at /homepages/18/d23090695/htdocs/cgi-bin/guestbook.cgi line 27.
Global symbol "@Zeilen" requires explicit package name at /homepages/18/d23090695/htdocs/cgi-bin/guestbook.cgi line 37.
Execution of /homepages/18/d23090695/htdocs/cgi-bin/guestbook.cgi aborted due to compilation errors.
Rächtschraibfehla sin Gratis
Dubu
 2003-08-27 01:47
#1795 #1795
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=MW2000,26.08.2003, 23:25]1.) "use strict" geht net wenn mich net alles täuscht und das mit warnings kenn ich net
[/quote]
Geht nicht gibt's nicht.
strict zwingt dich (unter anderem) deine Variablen zu deklarieren. Dann kommt es auch nicht so schnell vor, dass man einmal $username und einmal $Username benutzt.

Quote
2.) die Variablen kommen aus einem Formular in einer anderen Datei

Ich sehe nicht, wo da eine andere Datei eingebunden wird.

Quote
3.) das soll mich ja erstma net stören
4.) Einrückungen brauch ich erstma net, wills ja nur ma zum laufen bringen
5.) übersichtlich brauch ichs noch net, siehe 4.)

Dann will ich's auch nicht debuggen.

*kopfschuettel*
<< |< 1 2 3 4 ... 6 >| >> 58 Einträge, 6 Seiten



View all threads created 2003-08-26 18:35.