30. maj 2002 - 09:25
Der er
43 kommentarer og 1 løsning
Brug af CSS i et cgi-script ?
Måske et dumt spørgsmål, men kan man kalde sit stylesheet i et cgi-script ? Jeg har dette lille script, som finder de 5 nyeste links frem fra min database, men det bliver vist med normalsize bogstaver og farver. #!/usr/bin/perl eval { ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); require "admin/links.cfg"; require "$db_lib_path/db_utils.pl"; require "$db_lib_path/links.def"; }; if ($@) { print "Content-type: text/plain\n\n"; print $@; exit; } &main; sub main { my @data = `tail -$max_new $db_links_name`; my $i = 0; print "Content-type: text/html\n\n"; print qq|<body bgcolor="#EEEEEE" link="#0000FF" vlink="#0000FF" alink="#0000FF" topmargin="0" leftmargin="0">|; print qq|<table width="150" cellspacing="0" >|; foreach (@data) { chomp; split /\|/; print qq|<tr width="100%"><td width="150" onmouseover="this.style.backgroundColor='#EEEBCB'" onmouseout="this.style.backgroundColor='white'" bgColor="#ffffff"><a style ="text-decoration: none" href="$_[$db_url]" target="_blank">$_[$db_title]</a></td></tr>|; } print "</table></body>"; } Jeg ville gerne have at mit stylesheet som blev brugt istedet !
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Så skal du bare printe dit stylesheet ud i din <head>...</head> --- hmm hvor blev den af? Eller skrive det HTML ud der skal til at inkludere den fra en .css fil.
Kan man da sætte en <head> ind i et cgi-script ?
Ja, du skal jo print "<head>"; print "<style>"; print "p {font-size: 3000px}"; print "</style>"; print "</head>"; et passende sted i dit script.
Gider du give et skrevet eksempel på hvad du mener ?
Undskyld, jeg var for langsom
Men jeg kan ikke desideret kalde mit stylesheet fra "styles/style.css/ ? jeg er nødt til at definere alle relevante punkter igen med en "print " `?
Det kan du sagtens - men det var bare et lille eksempel. Du printer bare hvad du ellers ville have skrevet i HTML
Det vil sige at jeg ændre mit script som sådan her :
#!/usr/bin/perl
eval {
($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1");
($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1");
require "admin/links.cfg";
require "$db_lib_path/db_utils.pl";
require "$db_lib_path/links.def";
};
if ($@) {
print "Content-type: text/plain\n\n";
print $@;
exit;
}
&main;
sub main {
my @data = `tail -$max_new $db_links_name`;
my $i = 0;
print "<head>
print "<LINK href="
http://www.rejsebeskrivelser.dk/build01/styles/styles.css" type=text/css rel=stylesheet>";
print "</head>
print "Content-type: text/html\n\n";
print qq|<body bgcolor="#EEEEEE" link="#0000FF" vlink="#0000FF" alink="#0000FF" topmargin="0" leftmargin="0">|;
print qq|<table width="150" cellspacing="0" >|;
foreach (@data) {
chomp;
split /\|/;
print qq|<tr width="100%"><td width="150" onmouseover="this.style.backgroundColor='#EEEBCB'" onmouseout="this.style.backgroundColor='white'" bgColor="#ffffff"><a style ="text-decoration: none" href="$_[$db_url]" target="_blank">$_[$db_title]</a></td></tr>|;
}
print "</table></body>";
}
Desværre får jeg bare en fejl ud af det !
Der mangler vist noget i href="$_[$db_url" Men når du siger der "en fejl" kan du så ikke forstå at vi ikke kan bruge det til noget som helst. Du *SKAL* skrive hvad fejlen er.
Naturligvis :-). Jeg har vist ikke fået søvnen helt ud af øjet endnu ! Internal server error. Og href="$_[$db_url" er helt som den skal være. Scriptet køre nemligt fint, sålænge jeg ikke piller ved det. Det er ligeså snart jeg forsøger at knytte den forbistrede ccs på, at jeg får en internal server error. Jeg uploader naturligvis i binærd og cmod filen til 755
Du har ret. Står også i scriptet. Klippe klister har snuppet enden.
Jeg må være dummer end loven tillader. Men jeg sætter dit forslag ind her :
sub main {
my @data = `tail -$max_new $db_links_name`;
my $i = 0;
print "Content-type: text/html\n\n";
print "<head>";
print "<LINK href=\"
http://www.rejsebeskrivelser.dk/build01/styles/styles.css\" type=text/css rel=stylesheet>";
print "</head>";
print qq|<body bgcolor="#EEEEEE" link="#0000FF" vlink="#0000FF" alink="#0000FF" topmargin="0" leftmargin="0">|;
print qq|<table width="150">|;
foreach (@data) {
Uploader i binærd og cmoder til 755 - men får alligevel følgende fejl
Warning: Failed opening '
http://www.rejsebeskrivelser.dk/cgi-bin/topx.cgi' for inclusion (include_path='') in /home/webhotel/rejsebeskrivelser.dk/htdocs/index4.php on line 211
det her vel ikke noget med dette at gøre...... Du har en include, men der kan du ikke
skrive "
http://..." for der skal du skrive et filnavn på serveren.
Fejlmeddelsen skal nok ses i lyset af at jeg bruger en php include til at hente filen med. Kalder jeg scriptet direkte, får jeg en internal server error. Prøver lige at kikke i min error.log
"Du har en include, men der kan du ikke
skrive "
http://..." Jamen, sålænge jeg ikke ændre på scriptet, virker det jo perfekt.
Hvis du vil have en "
http://" ind i dit php (!!) script - du forstår at forvirre mig *g* - skal
du nok bruge file("
http://...." ) - men ikke include.
Ok, så kan man bruge http::// i en include i PHP. Men der er stadig syntaksfejl i dit Perl script.
Og ifølge min errorlog er fejlen : Premature end of script headers: /home/webhotel/rejsebeskrivelser.dk/htdocs/cgi-bin/topx.cgi Ikke at det siger mig ret meget :-(
Det siger at der er en syntaksfejl :)
Vi skal vist se heeele scriptet igen...
#!/usr/bin/perl eval { ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); require "admin/links.cfg"; require "$db_lib_path/db_utils.pl"; require "$db_lib_path/links.def"; }; if ($@) { print "Content-type: text/plain\n\n"; print $@; exit; } &main; sub main { my @data = `tail -$max_new $db_links_name`; my $i = 0; print "Content-type: text/html\n\n"; print qq|<body bgcolor="#EEEEEE" link="#0000FF" vlink="#0000FF" alink="#0000FF" topmargin="0" leftmargin="0">|; print qq|<table width="150">|; foreach (@data) { chomp; split /\|/; print qq|<tr width="100%"><td width="150" onmouseover="this.style.backgroundColor='#EEEBCB'" onmouseout="this.style.backgroundColor='white'" bgColor="#ffffff"><a style ="text-decoration: none" href="$_[$db_url]" target="_blank">$_[$db_title]</a></td></tr>|; } print "</table></body>"; }
Der røg ] i href="$_[$db_url" igen
ja, og når den er tilbage er der ingen syntaksfejl
Men når jeg nu ved at tekststørrelsen skal være 70% af normal og at det skal være i Ariel. Kan jeg så ikke bare sætte det ind her i stedet ? "><a style ="text-decoration: none" font face="Arial" font-size: 70% href="$_[$db_url" target="_blank">$_[$db_title]</a>
Det skal jo være korrekt, for i princippet kan du da <a style ="text-decoration: none; font-family: Arial; font-size: 70%" href="$_[$db_url]" target="_blank">$_[$db_title]</a> Husk nu den ]
Øh, du kan vel afprøve dine Perl scripts lokalt, så du har en chance for at se hvor syntaksfejlen er ?
Utroligt, men jeg får stadigvæk fejl. Er det ikke korrekt at cgi filer skal uploades binærd ?
næh, det er ikke nødvendigt med Perl-scripts - gør heller ingen skade. Hvis du får syntaksfejl, så kør dem lokalt først.
BinærT - ikke binærD ...:)
Ved jeg desværre ikke hvordan man gør.
Ok. 03 i dansk stave og gramma :-)
Man skal bare have Perl på sin maskine (
www.activestate.com ). Men jeg kan ikke
hjælpe dig med mindre du viser scriptet. Det er fortsat temmlig overflødigt
bare at få at vide at der er "fejl"
http://www.rejsebeskrivelser.dk/cgi-bin/topx.cgi Her ligger scriptet, hvis du vil se det afviklet. Her er det uden ændringer, og som du kan se køre det perfekt.
Ligeså snart jeg laver et eller andet, får jeg den internal server error, hvilket får mig til at tro at der går noget galt i uploaden.
Det er bare små syntaksfejl.... Skal jeg hjælpe vil jeg da godt have en rejse til Angkor for 4 personer..... *gg*
Undskyld. Naturligvis skal du have fejlmeddelse og script at se.
#!/usr/bin/perl
eval {
($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1");
($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1");
require "admin/links.cfg";
require "$db_lib_path/db_utils.pl";
require "$db_lib_path/links.def";
};
if ($@) {
print "Content-type: text/plain\n\n";
print $@;
exit;
}
&main;
sub main {
my @data = `tail -$max_new $db_links_name`;
my $i = 0;
print "Content-type: text/html\n\n";
print qq|<body bgcolor="#EEEEEE" link="#0000FF" vlink="#0000FF" alink="#0000FF" topmargin="0" leftmargin="0">|;
print qq|<table width="150">|;
foreach (@data) {
chomp;
split /\|/;
print qq|<tr width="100%"><td width="150" onmouseover="this.style.backgroundColor='#EEEBCB'" onmouseout="this.style.backgroundColor='white'" bgColor="#ffffff"><a style ="text-decoration: none; font-family: Arial; font-size: 70%" href="$_[$db_url" target="_blank">$_[$db_title]</a>
</td></tr>|;
}
print "</table></body>";
}
Her har jeg sat ændringerne på font og size ind. Uploader og cmod til 755.
Får en Internal Server Error som du kan se på
http://www.rejsebeskrivelser.dk/cgi-bin/topx.cgi
Jeg kan nok desværre ikke hjælpe med rejsen, men jeg kan da oprette et dummy spørgsmål til 200 pts. hvis det kan hjælpe ? Det er træls, at sidde med noget som man gerne vil have lavet pænt og så ikke kan selv. Havde man bare så mange penge at man kunne betale sig fra det, meeeeen man bliver ikke fed af at lave internet sider :-(
Prøv lige at chekke linket af igen :-)
Ved ikke hvordan jeg fik det til det, men jeg forventer at du afgir et svar, så du kan få dine fortjente point.
Mon ikke det bare var href="$_[$db_url" igen, igen, igen
Nope ! Den pillede jeg slet ikke ved. Jeg tror selv at det var en dataforbindelse mellem min pc og ftp som gjorde knuder !
17. november 2002 - 00:17
#43
Erik Jacobsen - Du har nogle points tilgode ! Lav lige et svar !
17. november 2002 - 00:40
#44
Tjah, ok, der er nogen der har hugget min 2. plads...
Kurser inden for grundlæggende programmering