webForumDet fria alternativet

Vad är fel.????

9 svar · 193 visningar · startad av Kent

KentMedlem sedan juli 2000355 inlägg
#1

Vad är fel med den här koden,

$number++;
open(FILE, ">/data1/$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);

open(FILE, ">/data2/$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);
exit;
}
FlashXMedlem sedan nov. 19991 033 inlägg
#2

Med just den koden är felet det avslutande }
Blir enklare att analyserar felet om hela blocket finns med.

Även om du stängt första filhandtaget så kan det vara idé att döpa dem med olika namn. Exempelvis FILE2 för andra öppningen så hållar man isär dem lite enklare i koden.

Sedan har du en exit; direkt efter stängningen. Ska det inte printas ut något till webbläsaren? Det verkar ju som att du först läst in något från ett formulär och då blir det naturligt att ett resultat visar sig efter programkörningen.

[Redigerat av FlashX den 02 jan 2001]

KentMedlem sedan juli 2000355 inlägg
#3

Så här ser hela koden ut,utan QueryStringen,

if ($FORM{'in'} eq "jepp") {
$number++;
open(FILE, ">$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);

open(FILE, ">$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);

print "Data är nu skapat.\n";

exit;
}
FlashXMedlem sedan nov. 19991 033 inlägg
#4

Några fel finns inte i den koden (vad jag kan se) under förutsättning att du har med print "Content-type: text/html\n\n"; någon gång tidigare.

Kolla gärna så att filen verkligen kan öppnas (existerar) genom att lägga till or die "Kan inte öppna $number.txt: $!\n" efter filöppningen.

open(FILE, ">$number.txt") or die "Kan inte öppna $number.txt: $!\n";

Om filöppningen misslyckas så står det i så fall i loggen...

[Redigerat av FlashX den 03 jan 2001]

KentMedlem sedan juli 2000355 inlägg
#5

Yes nu funkar det.!!!
Hade tydligen glömt, print "Content-type: text/html\n\n";.
Tack för hjälpen FlashX.!!!

FlashXMedlem sedan nov. 19991 033 inlägg
#6

Det är lätt att glömma bort den där obetydliga raden ibland ;)

KentMedlem sedan juli 2000355 inlägg
#7

Upptäckte ett fel, koden skapar bara 1.txt hela tiden, inte ex, 2.txt 3.txt 4.txt osv, vad är fel.?
Tacksam för hjälp.!

FlashXMedlem sedan nov. 19991 033 inlägg
#8

Det beror troligen på att $number inte har något värde.
Var hämtas informationen om hur många textfiler som skapats?

Har du alla txt-filer i en mapp så kan du räkna dessa eller så kan du låta skriptet skriva till en fil varje gång en textfil skapas. Alltså en vanlig räknare.

Räkna textfiler i en mapp kan du t.ex göra så här.

$txtDir = "MappenMedFilerna";

$number = 0;
if (-d "$txtDir") {
opendir(TEXTFILER, "$txtDir") or die "Kan inte öppna mappen: $!\n";
@txtfiler = grep { /\.txt$/i } readdir TEXTFILER;
closedir(TEXTFILER);
$number = @txtfiler;
}

Ligger skriptet i samma mapp som filerna så anges sökvägen som "."

[red.]
Om du skapar filer så kanske du eventuellt behöver ge dem skrivrättigheter också.
I så fall kan du lägga till raden
chmod (0777, "$number.txt");
efter filstängningen.

[Redigerat av FlashX den 04 jan 2001]

KentMedlem sedan juli 2000355 inlägg
#9

Den skriver fortfarande bara ut 1.txt
Koden ser nu ut som följer,

$txtDir = "MappenMedFilerna";
$number = 0;
if (-d "$txtDir") {
opendir(TEXTFILER, "$txtDir") or die "Kan inte öppna mappen: $!\n";
@txtfiler = grep { /\.txt$/i } readdir TEXTFILER;
closedir(TEXTFILER);
$number = @txtfiler;
chmod (0777, "$number.txt");
}

if ($FORM{'in'} eq "jepp") {
$number++;
open(FILE, ">data1/$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);
open(FILE, ">data2/$number.txt");
print FILE "$FORM{'namn'}::$FORM{'email'}\n";
close(FILE);

print "Data är nu skapat.\n";

exit;
}

både cgi filen och de båda mapparna ligger i cgi-bin katalogen.

[Redigerat av Kent den 04 jan 2001]

KentMedlem sedan juli 2000355 inlägg
#10

Det funkar nu,
hade glömt ange vilken mapp ($txtDir = "MappenMedFilerna";) filerna skulle skapas i.

206 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
202 ms — hämta tråd, inlägg och bilagor (db)