webForumDet fria alternativet

Vad är det för fel?

6 svar · 368 visningar · startad av Asterix

AsterixMedlem sedan dec. 1999483 inlägg
#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

------------------
/Emil Hesslow

RobbanMedlem 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å).

------------------
Robban < robban@lipogram.com >

AsterixMedlem 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.

------------------
/Emil Hesslow

RödalacketMedlem 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

RobbanMedlem 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.

------------------
Robban < robban@lipogram.com >

AsterixMedlem 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.

------------------
/Emil Hesslow

Patrik NylinMedlem sedan dec. 1999242 inlägg
#7

Det funkade bra.

------------------
/Patrik

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