PDA

Bekijk Volledige Versie : cgi en html probleempje



Danny
18/02/03, 22:45
Hallo allemaal,

Ik zit met het volgende probleempje:
Ik heb een cgi scriptje voor een gastenboek. Dit werkt allemaal prima
maar het enigste wat ik niet aan het werken krijgen is het gebruik van
mijn CSS, en mijn achtergrond-image wil maar niet verschijnen. Ik
krijg alleen maar een witte achtergrond.

Kan iemand mij vertellen waar ik dit moet zoeken... ik heb al vanalles
geprobeerd maar het wil maar niet lukken :-(
Alvast bedankt

Mvg

Danny



Ik heb het volgende cgi-script:
=======================

#!/usr/bin/perl

$GMToffset=3;
$aantalgetoond=10;
$imagedir='http://www.13245.nl/Gimages/';
$password='1234567890';

####################

use CGI;
$query=new CGI;
$imagepre='<IMG src="'.$imagedir;
print "Content-Type: text/html\n\n";

# bepaal aantal berichten
open (BESTAND, "gastenboek.txt");
foreach $r (<BESTAND>) {
chomp $r;
push @regels, $r;
}
close (BESTAND);
$aantal=(($#regels+1)/5);

if ( $query->param('action') eq "lees" ) {
open (GASTENBOEK,
"../../html/Assets/Gastenboek_html/Gastenboek_lezen.htm");

foreach $regel (<GASTENBOEK>) {
if ( $regel =~ /<!--bericht-->/ ) {
$beginregel=$regel;
for ($i=5*($aantal-$query->param('nummer'));
($i>5*($aantal-$query->param('nummer')-$aantalgetoond)) && ($i>=0) ;
$i-=5) {
$regel=$beginregel;
if ( $regels[$i+1] ne "" ) {
$naam=($i/5+1).' <A
href="mailto:'.$regels[$i+1].'">'.$regels[$i].'</A>';
} else {
$naam=($i/5+1)." ".$regels[$i];
}
$regel =~ s/!naam!/$naam/;
$regel =~ s/!tijd!/$regels[$i+2]/;
$regels[i+3] =~ s/javascript\://gi;

$url="";
if ( $regels[$i+3] ne "" ) {
$ht='http://';
$u=$ht.$regels[$i+3];
$u=~s/$ht$ht/$ht/;
$url='<A href="'.$u.'"
target="_blank">'.$u.'</A>';
}
$regel =~ s/!url!/$url/;

$bericht=$regels[$i+4];
$bericht =~ s/\:\-\)|\:\)/$imagepre\/smile\.gif\">/g;
$bericht =~ s/\:\-\(|\:\(/$imagepre\/sad\.gif\">/g;
$bericht =~ s/\;\-\)|\;\)/$imagepre\/wink\.gif\">/g;
$bericht =~ s/\;\-\(|\;\(/$imagepre\/cry\.gif\">/g;
$bericht =~ s/\:\-\||\:\|/$imagepre\/bored\.gif\">/g;
$bericht =~ s/\:\-d|\:d/$imagepre\/laugh\.gif\">/gi;
$bericht =~ s/\:\-p|\:p/$imagepre\/tongue\.gif\">/gi;
$bericht =~ s/\:\-s|\:s/$imagepre\/sick\.gif\">/gi;
$regel =~ s/!bericht!/$bericht/;
$nr=$aantal-$i/5;
$regel =~ s/!nummer!/$nr/;
print $regel;
}
} elsif ($regel =~ /<!--nieuwoud-->/ ) {
if ( $query->param('nummer') != 1 ) {
$nieuwer=$query->param('nummer')-$aantalgetoond;
($nieuwer==1)&&($nieuwer=1);
$data = '<A
href="gastenboek.cgi?action=lees&nummer='.$nieuwer.'">'.$imagepre.'/nieuwer.gif
"border="0"></A>';
}
$data .= '&nbsp;&nbsp;&nbsp;';
if ( $query->param('nummer')+$aantalgetoond <= $aantal ) {
$data .= '<A
href="gastenboek.cgi?action=lees&nummer='.($query->param('nummer')+$aantalgetoond).'">'.$imagepre.'/ouder.gif"
border="0"></A>';
}
$regel =~ s/<!--nieuwoud-->/$data/;
print $regel;
} else {
print $regel;
}
}
} elsif ( $query->param('action') eq 'schrijf' ) {
# bepaal tijd
($datum,$maand,$jaar,$uur,$minuut,$gmt)=split(/-/,`date
+%d-%m-%Y-%H-%M-%g`);
chomp $gmt;
$uur=$uur-$gmt+$GMToffset;
if ( length($uur)<2 ) {
$uur='0'.$uur;
}
if ( length($minuut)<2 ) {
$minuut='0'.$minuut;
}
$tijd=join("-",($datum,$maand,$jaar))."
".join(":",($uur,$minuut));

# vervang enters door <BR> ,scherm HTML af, zet de smilies erin
$bericht = $query->param('bericht');
$bericht =~ s/</\&lt\;/g;
$bericht =~ s/\r//g;
$bericht =~ s/(\n)/<BR>/g;

# schrijf bericht weg
open (BESTAND, ">>gastenboek.txt");
print BESTAND $query->param('naam')."\n";
print BESTAND $query->param('email')."\n";
print BESTAND "$tijd\n";
print BESTAND $query->param('url')."\n";
print BESTAND "$bericht\n";
close (BESTAND);

# ga terug naar het gastenboek
print '<HTML><BODY
onLoad="window.location='."\'".'gastenboek.cgi?action=lees&nummer=1'."\'".'"></BODY></HTML>';
} elsif ($query->param('action') eq 'delete') {
if ( $query->param('password') eq $password ) {
for ($i=1 ; $i<=$aantal ; $i++) {
if ( $i != $query->param('nummer') ) {
for(1..5) {
unshift (@dummy, pop @regels);
}
} else {
for(1..5) {
pop @regels;
}
}
}
open(BESTAND, ">gastenboek.txt");
foreach (@dummy) {
print BESTAND "$_\n";
}
close(BESTAND);
print '<HTML><BODY
onLoad="window.location='."\'".'gastenboek.cgi?action=lees&nummer=1'."\'".'"></BODY></HTML>';
} else {
print '<HTML><BODY><H1>Access Denied</H1><HR>Click <A
href="javascript:history.back()">here</A> to go back.</BODY></HTML>';
}
}


en dit is mijn HTML:
===============

<html>
<head>
<title>Gastenboek Bericht Lezen</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<link rel="stylesheet"
href=""../../html/Assets/Gastenboek_html/Jscript.css" type="text/css">

<STYLE type=text/css>
A {
COLOR: yellow; TEXT-DECORATION: none
}
A:hover
{
COLOR: red
}
</STYLE>
<link rel="stylesheet" href="Jscript.css" type="text/css">
</head>

<BODY BGCOLOR="********" TEXT="#FF0000" LINK="#00FF00" VLINK="********"
ALINK="********" background="bg_label4.gif" >
<p><a name="top">
<!-- header: top -->
</a>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="1%">&nbsp;</td>
<td width="7%" align="left" valign="top">&nbsp;</td>
<td width="92%" align="right" valign="top" class="arial12Wit">
<span class="style02">[ </span><a href="../Info_html/Email.htm"
class="arial12Wit">Gastenboek Lezen</a><span class="style02">
]</span> <span class="style02">[ </span><a
href="../Info_html/Colofon.htm" class="arial12Wit">Bericht
Toevoegen</a><span class="style02">
]</span> </td>
</tr>
</table>
<!-- TABLE VOOR GASTENBOEK -->
<P><TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>

<TD class="disco2">Gastenboek</TD>
</TR>
</TABLE><TABLE width="100%" cellspacing="0" cellpadding="0">
<TR>
<TD class="content"><P>Dit gastenboek is er alleen maar om het
script te testen. Schrijf allemaal even een berichtje, dan kan ik zien
of het allemaal goed werkt.
<!--bericht--><P><TABLE width="100%"
border="0"><TR><TD><B>!naam!</B></TD><TD
align="right">!tijd!</TD></TR><TR><TD colspan="2">!url!</TD><TR><TD
colspan="2">!bericht!</TD></TR><TR><TD colspan="2"><A
href="javascript:del(!nummer!)">Delete</A></TD></TR></TABLE><p></P><HR>
<CENTER><!--nieuwoud--></CENTER>
</TABLE><p></P>
<!-- EIND TABLE VOOR GASTENBOEK -->
<p>&nbsp;</p>
</body>
</html>

Rene Pijlman
18/02/03, 22:55
Danny:
>Ik heb een cgi scriptje voor een gastenboek. Dit werkt allemaal prima
>maar het enigste wat ik niet aan het werken krijgen is het gebruik van
>mijn CSS, en mijn achtergrond-image wil maar niet verschijnen. Ik
>krijg alleen maar een witte achtergrond.

Ik zou denken dat dat aan de gegenereerde HTML/CSS ligt en dat
heeft eigenlijk weinig met CGI te maken. Je kunt denk ik beter
de gegenereerde webpagina even in niwo voorleggen aan de
ontwerpers.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Jan Ehrhardt
18/02/03, 23:05
Danny in nl.internet.www.server-side (Tue, 18 Feb 2003 22:37:35 +0100):

><html>
><head>
><title>Gastenboek Bericht Lezen</title>
><meta http-equiv="Content-Type" content="text/html;
>charset=iso-8859-1">
><link rel="stylesheet"
>href=""../../html/Assets/Gastenboek_html/Jscript.css" type="text/css">
^^

Die dubbele "" moet in ieder geval weg. En probeer het eens met een
absoluut pad naar je CSS-bestand.

Jan
--
Dropdown and pushup menu's - http://cgi.monitor.nl/cms.html

Danny
19/02/03, 00:05
On Tue, 18 Feb 2003 22:56:43 +0100, Jan Ehrhardt
<monitor@monitor.nl.X> wrote:


>Die dubbele "" moet in ieder geval weg. En probeer het eens met een
>absoluut pad naar je CSS-bestand.
>
ik heb het CSS bestand in dezelfde map gezet als het cgi-script en in
de map waar het html-bestand staat, het pad is nu dus:

<link rel="stylesheet" href="Jscript.css" type="text/css">

maar in de logfile van de server krijg ik steeds deze melding:
Premature end of script headers:
/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/Jscript.css

Premature end of script headers:
/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/bg_label4.gif


in ieder geval bedankt voor je reactie

Mvg

Danny

Rene Pijlman
19/02/03, 00:45
Danny:
>ik heb het CSS bestand in dezelfde map gezet als het cgi-script en in
>de map waar het html-bestand staat, het pad is nu dus:
>
><link rel="stylesheet" href="Jscript.css" type="text/css">
>
>maar in de logfile van de server krijg ik steeds deze melding:
>Premature end of script headers:
>/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/Jscript.css
>
>Premature end of script headers:
>/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/bg_label4.gif

Dat klinkt alsof de webserver geconfigureerd is om _alle_
bestanden in deze directory als CGI-bestand te executeren,
i.p.v. alleen .pl, .cgi e.d. Dat lijkt me een misconfiguratie,
maar bovendien zou ik HTML, CSS, GIF e.d. zowieso niet in de
CGI-directory plaatsen. Gewoon, uit netheid.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Danny
19/02/03, 01:15
>Rene:
>Dat klinkt alsof de webserver geconfigureerd is om _alle_
>bestanden in deze directory als CGI-bestand te executeren,
>i.p.v. alleen .pl, .cgi e.d. Dat lijkt me een misconfiguratie,
>maar bovendien zou ik HTML, CSS, GIF e.d. zowieso niet in de
>CGI-directory plaatsen. Gewoon, uit netheid.

Dat klopt, maar ik heb dit gedaan om uit te sluiten dat het misgaat in
het Pad. Als ik alles aan het werken heb zet ik alles zeker netjes in
de map waar het thuishoort.

Danny

Rene Pijlman
19/02/03, 08:45
Danny:
>Dat klopt, maar ik heb dit gedaan om uit te sluiten dat het misgaat in
>het Pad. Als ik alles aan het werken heb zet ik alles zeker netjes in
>de map waar het thuishoort.

Tsja, maar aan de foutmeldingen te zien is deze tijdelijke
constructie misschien wel de oorzaak van het probleem.

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Danny
20/02/03, 14:45
>Rene:
>Tsja, maar aan de foutmeldingen te zien is deze tijdelijke
>constructie misschien wel de oorzaak van het probleem.

Kun jij me misschien vertellen wat het absolute pad is, en hoe ik dit
moet aangeven?

Mijn CGI-script staat:
/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/

Mijn CSS-file staat:
/home/virtual/site31/fst/var/www/html/

Want als het scipt de HTML pagina aanroept dan staat hij nog steeds te
kijken in "/home/virtual/site31/fst/var/www/cgi-bin/gastenboek/" voor
de CSS-file volgens mij, maar hoe geef ik dan aan dat hij in de andere
directory moet zijn?

Mvg

Danny