18. februar 1999 - 18:02
#6
Her er banditten.
Fejlen sker når man vil oprette eller redigere.
#!/usr/bin/perl
# Set Variables
$newsfilereal = "/WEBSERVERS/WWW.site.DK/public_html/polystan/news.txt";
$cgiurl= "newsadmin.pl";
### PC: ###
# @time = localtime; # will give you a date. Here's how to get all the info:
# $time[0] # is the seconds
# $time[1] # is the minutes
# $time[2] # is the hours
# $time[3] # is the monthday beginning with 1
# $time[4] # is the monthnumber beginning with 0
# $time[5] # is the year (add 1900)
# $time[6] # is the week day with 0 for Sunday
# $time[7] # is the day of the year
# $time[8] # is a flag indicating whether or not it's daylight savings time
# $Dato = sprintf "%02d-%02d-%d", $time[3], $time[4] + 1, $time[5] + 1900;
$Dato = "";
# Done
##############################################################################
# Get the input
sub ReadParse {
local (*in) = @_ if @_;
local ($i, $key, $val);
if ( $ENV{'REQUEST_METHOD'} eq "GET" ) {
$in = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
} else {
# Added for command line debugging
# Supply name/value form data as a command line argument
# Format: name1=value1\&name2=value2\&...
# (need to escape & for shell)
# Find the first argument that's not a switch (-)
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g;
}
@in = split(/&/,$in);
foreach $i (0 .. $#in) {
# Convert plus's to spaces
$in[$i] =~ s/\+/ /g;
# Split into key and value.
($key, $val) = split(/=/,$in[$i],2);
# splits on the first =.
# Convert %XX from hex numbers to alphanumeric
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
# Associate key and value. \0 # is the multiple separator
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
$FORM{$key} = $val;
}
return length($in);
}
sub Header {
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print " <TITLE>NewsAdmin</TITLE>\n";
print "</HEAD>\n";
print "<BODY BGCOLOR=\"#ffffff\" TEXT=\"#000000\">\n";
}
sub Footer {
print "<P><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}\">NewsAdmin</A>\n";
print "</BODY>\n";
print "</HTML>\n";
}
sub ShowList {
# Open News file
open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;
print "<A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=opret\">Opret</A>\n";
print "<TABLE>\n";
foreach $i (0 .. $#LINES) {
@Nyhed = split(/=#=/, $LINES[$i]);
$Overskrift = $Nyhed[0];
$DatoStr = $Nyhed[1];
if ($DatoStr eq "") {
$DatoStr = $Dato
}
$Tekst = $Nyhed[2];
print " <TR>\n";
print " <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"news.pl?Action=$i\">Vis</A></FONT></TD>\n";
print " <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=edit&id=$i\">Edit</A></FONT></TD>\n";
print " <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><A HREF=\"$cgiurl?brugernavn=$FORM{'brugernavn'}&adgangskode=$FORM{'adgangskode'}&Action=slet&id=$i\">Slet</A></FONT></TD>\n";
print " <TD ALIGN=\"right\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$DatoStr</FONT></TD>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$Overskrift</FONT></TD>\n";
# print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">$Tekst</FONT></TD>\n";
print " </TR>\n";
}
print "</TABLE>\n";
}
sub OpretEdit {
print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
print " <INPUT TYPE=\"hidden\" NAME=\"brugernavn\" VALUE=\"$FORM{'brugernavn'}\">\n";
print " <INPUT TYPE=\"hidden\" NAME=\"adgangskode\" VALUE=\"$FORM{'adgangskode'}\">\n";
if ($Action eq "opret") {
print " <INPUT TYPE=\"hidden\" NAME=\"Action\" VALUE=\"opret2\">\n";
}
if ($Action eq "edit") {
print " <INPUT TYPE=\"hidden\" NAME=\"Action\" VALUE=\"edit2\">\n";
print " <INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$FORM{'id'}\">\n";
open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n";
@LINES=<FILE>;
@Nyhed = split(/=#=/, $LINES[$FORM{'id'}]);
$Overskrift = $Nyhed[0];
$Dato = $Nyhed[1];
$Tekst = $Nyhed[2];
$Tekst =~ s/<BR>/\n/g;
}
print "<TABLE>\n";
print " <TR>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Dato</FONT></TD>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"text\" NAME=\"Dato\" VALUE=\"$Dato\"></FONT></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Overskrift</FONT></TD>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"text\" NAME=\"Overskrift\" VALUE=\"$Overskrift\"></FONT></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TD VALIGN=\"top\"><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\">Tekst</FONT></TD>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><TEXTAREA NAME=\"Tekst\" ROWS=\"8\" WRAP>$Tekst</TEXTAREA></FONT></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TD> </TD>\n";
print " <TD><FONT FACE=\"Verdana,Arial,Helvetica\" SIZE=\"2\"><INPUT TYPE=\"submit\" VALUE=\"Udfør\"></FONT></TD>\n";
print " </TR>\n";
print "</TABLE>\n";
}
sub Opret2 {
open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n";
@LINES=<FILE>;
close(FILE);
open (News,">$newsfilereal") || die "Can't Open $guestbookreal: $!\n";
$Overskrift = $FORM{'Overskrift'};
$Dato = $FORM{'Dato'};
$Tekst = $FORM{'Tekst'};
for ($Tekst) {
s/^\s+//;
s/\s+$//;
}
$Tekst =~ s/\n/<BR>/g;
print News "$Overskrift=#=$Dato=#=$Tekst\n";
print News "@LINES";
close (News);
}
sub Edit2 {
open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n";
@LINES=<FILE>;
close(FILE);
open (News,">$newsfilereal") || die "Can't Open $guestbookreal: $!\n";
$Overskrift = $FORM{'Overskrift'};
$Dato = $FORM{'Dato'};
$Tekst = $FORM{'Tekst'};
$Tekst =~ s/\n/<BR>/g;
foreach $i (0 .. $#LINES) {
if ($i != $FORM{'id'}) {
print News "$LINES[$i]";
}
else {
print News "$Overskrift=#=$Dato=#=$Tekst\n";
}
}
close (News);
}
sub Slet {
open (FILE,"$newsfilereal") || die "Can't Open $newsfilereal: $!\n";
@LINES=<FILE>;
close(FILE);
open (News,">$newsfilereal") || die "Can't Open $guestbookreal: $!\n";
foreach $i (0 .. $#LINES) {
if ($i ne $FORM{'id'}) {
print News "$LINES[$i]";
}
}
close (News);
}
## Begin prog ##
&ReadParse;
$Action = $FORM{'Action'};
#if ($FORM{'brugernavn'} != "admin") {
# if $FORM{'adgangskode'} != "unicorn") {
# &Header;
# print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
# print "<TABLE>\n";
# print " <TR>\n";
# print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Brugernavn</font></TD>\n";
# print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"text\" NAME=\"brugernavn\"></font></TD>\n";
# print " </TR>\n";
# print " <TR>\n";
# print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Adgangskode</font></TD>\n";
# print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"password\" NAME=\"adgangskode\"></font></TD>\n";
# print " </TR>\n";
# print " <TR>\n";
# print " <TD> </TD>\n";
# print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"submit\" VALUE=\"Log ind\"></font></TD>\n";
# print " </TR>\n";
# print "</TABLE>\n";
# print "</FORM>\n";
# &Footer;
# exit;
# }
#}
if ($Action eq "") {
&Header;
&ShowList;
&Footer;
}
if ($Action eq "opret") {
&Header;
&OpretEdit;
&ShowList;
&Footer;
}
if ($Action eq "opret2") {
&Header;
&Opret2;
&ShowList;
&Footer;
}
if ($Action eq "slet") {
&Header;
&Slet;
&ShowList;
&Footer;
}
if ($Action eq "edit") {
&Header;
&OpretEdit;
&Footer;
}
if ($Action eq "edit2") {
&Edit2;
&Header;
&ShowList;
&Footer;
}
18. februar 1999 - 18:28
#7
Ok, det er enten fordi du ikke har oprettet news.txt eller fordi du har stien forkert - husk unix er følsom overfor store/små bogstaver.
En anden ting kunne være rettigheder, webserveren kører sikkert som bruger www eller lign. og når du uploader har du et andet brugernavn, scripts som køres af webserveren har derfor ikke som standard rettigheder til de filer du opretter du kan chmod 777 dem el. lign. (tjek evt. med dit webhotel hvordan der konfiguration er).
19. februar 1999 - 11:03
#8
Du har nok ret. Jeg undersøger det og vender tilbage...
Kan du se hvad der er galt her:
if ($FORM{'brugernavn'} != "admin") {
if $FORM{'adgangskode'} != "unicorn") {
&Header;
print "<FORM METHOD=\"get\" ACTION=\"$cgiurl\">\n";
print "<TABLE>\n";
print " <TR>\n";
print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Brugernavn</font></TD>\n";
print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"text\" NAME=\"brugernavn\"></font></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TD><font face=\"Helvetica,Arial\" size=\"1\">Adgangskode</font></TD>\n";
print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"password\" NAME=\"adgangskode\"></font></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TD> </TD>\n";
print " <TD><font face=\"Helvetica,Arial\" size=\"1\"><INPUT TYPE=\"submit\" VALUE=\"Log ind\"></font></TD>\n";
print " </TR>\n";
print "</TABLE>\n";
print "</FORM>\n";
&Footer;
exit;
}
}