PDA

View Full Version : Vad är det för fel?


Asterix
2000-03-24, 17:11
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

Robban
2000-03-24, 20:07
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 >

Asterix
2000-03-24, 20:28
Det står 500 HTTP - internal server error eller något liknande när frame.cgi laddas. Kolla på denna sidan (http://www.settlers.org/staff/emil/xlinks). Skriv in Demo som namn och demo som lösenord.

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

Rödalacket
2000-03-24, 22:08
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

Robban
2000-03-25, 08:14
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 >

Asterix
2000-03-25, 13:33
Jag har fixat det nu! Testa med Demo som namn och demo som lösenord så får ni se.

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

Patrik Nylin
2000-03-25, 13:40
Det funkade bra.


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