Vad är det för fel?

Programmering

6 svar · 396 visningar · startad av Asterix

Medlem sedan dec. 1999483 inlägg
Trådstart#1

Vad är det för fel på följande kod

#!/usr/bin/perl

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/</\<\;/g;
	$value =~ s/>/\<\;/g;

	$FORM{$name} = $value;
}

$data = $FORM{'name'} + ".txt";

open(DATA, $data);
@lines = <DATA>;
close(DATA);

($name, $value, $color) = split(/;/, $lines{1});

if ($value eq $FORM{'name'}) {
	print <<endhtml;
		<html>
		<head>

		<frameset frameborder="0" border="0" rows="36,*" cols="100%">
		<frame name="xlankarmeny" src="http://www.settlers.org/cgi-bin/xlinks/script.cgi?name=$name&color=$color" scrolling="no">
		<frame name="xlankarmain" src="http://www.webforum.nu/wf/index.html" scrolling="auto">
		</frameset>
		<noframes>
		</noframes>

		</head>
		</html>
	endhtml
} else {
	print <<endhtml;
		<html>
		<body>
		<font face="verdana" size="2"><b><center>
		Fel lösenord<b><br>
		Klicka <a href="http://www.settlers.org/staff/emil/index.html">här</a> för att försöka igen.
		</body>
		</html>
	endhtml
}
#!/usr/bin/perl

$buffer=$ENV{'QUERY_STRING'};
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/</\<\;/g;
	$value =~ s/>/\<\;/g;

	$FORM{$name} = $value;
}

$data = $FORM{'name'} + ".txt";
$color = $FORM{'color'};

open(DATA, $data);
@lines = <DATA>;
close(DATA);

print <<endhtml;
	<html>
	<body bgcolor="#FFFFFF" background="pics/$color/bg.gif" topmargin="0" leftmargin="0">
	<table cellpadding="0" cellspacing="0" border="0" width="100%">
	<tr>
	<td rowspan="2" width="50%" valign="top"><a target="xlankarmain" href="http://www.settlers.org/staff/emil/xlinks"><img src="pics/$color/logo.gif" border="0"></a></td>
	<td width="45%" align="right" valign="top" height="8"></td><td width="5%"></td>
	</tr>
	<tr>
	<td align=\"right\">
	<form name="menu">
	<select name="links" onChange="parent.xlankarmain.location.href=menu.links.options[menu.links.selectedIndex].value">
	<option>Links</option>
	<option>----------------------------------------</option>
endhtml

$nr = 0
foreach $line (@lines) {
	$nr++;
	chomp($line);
	($value, $name) = split(/;/, $line);
	if ($nr <> 1) {
		print "<option value=\"$value\">$name</option>";
	}
}

print <<endhtml;
	</select>
	</form>
	</td>
	</tr>
	</table>
	</body>
	</html>
endhtml
Medlem sedan dec. 19992 555 inlägg
#2

Någonting jag observerar vid en mycket snabb överblick är att du försöker plocka ut ett värde ur en array med $lines{1} vilket är felaktigt. Det rätta att använda är $lines[1] (hakparanteser vid arrayer, klamrar vid tabeller).

Om inte det räcker får du gärna vara lite mer specifik med hur felet yttrar sig (går troligen snabbare att hitta felet då).

Medlem sedan dec. 1999483 inlägg
#3

Det står 500 HTTP - internal server error eller något liknande när frame.cgi laddas. Kolla på denna sidan. Skriv in Demo som namn och demo som lösenord.

Medlem sedan feb. 20002 612 inlägg
#4

Så här stog det när jag loggade in:
Fel lösenord
Klicka här för att försöka igen.

, , , 0, name=Demo&password=demo&submit=++++OK++++
demo

Medlem sedan dec. 19992 555 inlägg
#5

Samma för mig. Gick inte att logga in. Felet "internal server error" kan vara vad som helst f.ö. så det säger inte speciellt mycket (möjligt att serverloggen säger mer). :)

En not. När du öppnar externa filer bör du alltid kolla om det lyckas eller inte. Öppnar du en fil som inte finns (inte går att skapa) och sedan försöker läsa/skriva till den så vet du inte vad som händer.

Medlem sedan dec. 1999483 inlägg
#6

Jag har fixat det nu! Testa med Demo som namn och demo som lösenord så får ni se.

Medlem sedan dec. 1999242 inlägg
#7

Det funkade bra.

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)