This is Interesting: Free Magazines for Graphics designers and webmasters  


Home > Archive > Stylesheets > September 2005 > Re: Setting the "href" in a stylesheet link to an executable script?





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Re: Setting the "href" in a stylesheet link to an executable script?
Stian Lund

2005-09-16, 7:43 pm

"Dave Hammond" <dh1760@XXXXXXXXXX> wrote in news:1126876909.069914.315680
@f14g2000cwb.googlegroups.com:
> So, the question is: can an executable script be referenced in a
> stylesheet link? If so, can anyome comment on why I might be getting
> the above error from the server?


This is quite interesting if it can be done ... have you looked into what
content-type the server is returning for the PHP file? Use wget to get the
headers returned (wget -S). Most likely they have set the content-type to
text/css and not text/html which is usual for PHP scripts.

In PHP you would change the header something like this:
header("Content-Type: text/css")
before any content is output to the client.

It might be what they are doing.

Stian
Jim Moe

2005-09-17, 4:27 am

Dave Hammond wrote:
>
> <LINK REL="stylesheet" href="dyn_css.pl" type="text/css">
>
> The result was a server error with the error_log entry:
>
> Bareword found where operator expected at
> /srv/www/plwa/test/dyn_css.html line 4, near ""dyn_css.pl" type"
> (Missing operator before type?)
>

Is your server configured to run PERL on files that have the extension
"pl"?


--
jmm dash list (at) sohnen-moe (dot) com
(Remove .AXSPAMGN for email)
Dave Hammond

2005-09-19, 7:29 pm

I thought that "bareword" phrase looked familiar ;-)

Of course, now the question is why, when run from the Apache mod_perl
handler, does it generate the syntax error? Here's the script in
question:

# cat dyn_css.pl
#!/usr/bin/perl

print <<EOFEOF;
Content-type: text/html

body {
background-color: #000000;
font-family: Verdana;
font-size: 10px;
color: #FFFFFF;
border: 5px solid #AAAAAA;
}
EOFEOF

Not exactly brain surgery :) And, of course it passes PERL -cw syntax
checking and runs just fine from the command line. So, why does it
generate the error?

-Dave H.

Jim Moe

2005-09-19, 7:29 pm

Dave Hammond wrote:
>
> print <<EOFEOF;
> Content-type: text/html
>
> body {
>
> Not exactly brain surgery :) And, of course it passes PERL -cw syntax
> checking and runs just fine from the command line. So, why does it
> generate the error?
>

HTTP expects <CR><LF>, not just <LF>. If you are serving from a *nix
system, perhaps it is just sending a simple newline (<LF> ) as a linebreak?

--
jmm dash list (at) sohnen-moe (dot) com
(Remove .AXSPAMGN for email)
Dave Hammond

2005-09-19, 7:29 pm

This is a re-post... not sure why it didn't show up the first time
around. Please ignore this if it ends up to be a dupe...

I should have realized that the "Bareword found" error looked familiar.
Of course, now the question is why is PERL complaining. The script is
trivial; it passes the PERL -cw syntax check and outputs the expected
text. Here is the source:

#!/usr/bin/perl

print <<EOFEOF;
Content-type: text/html

body {
background-color: #000000;
font-family: Verdana;
font-size: 10px;
color: #FFFFFF;
border: 5px solid #AAAAAA;
}
EOFEOF

This seems to prove that Apache is attempting to call Perl, although
exactly how is not clear. Is there any way to log the syntax of the
call that Apache is making to Perl?

-Dave H.

Alan J. Flavell

2005-09-19, 11:20 pm


On Mon, 19 Sep 2005, Jim Moe wrote:

> Dave Hammond wrote:

The content looks more like text/css to me!!!
[color=darkred]
>
> HTTP expects <CR><LF>, not just <LF>.


I thought this was meant to be a CGI script? As such it's entitled to use
its local newline convention. It's the job of the web server to turn
valid parsed-headers CGI output (per the CGI RFC) into valid HTTP protocol
(per the HTTP RFC, 2616), and that includes newlines conversion as
necessary.

> If you are serving from a *nix system,
> perhaps it is just sending a simple newline (<LF> ) as a linebreak?


Very likely, but unless it's a no-parse-headers script (which it isn't
going to be unless the O.P has gone to special effort to make it so) then
that should be no problem.

But I don't look any more closely at PERL scripts until they've been
properly tested per the posting guidelines of comp.lang.perl.misc.

Andreas Prilop

2005-09-20, 7:39 pm

On 19 Sep 2005, Dave Hammond wrote:

> Organization: http://groups.google.com
> User-Agent: G2/0.2


The innocents abroad.

> body {
> font-family: Verdana;
> font-size: 10px;


DO NOT specify a body font-size - not in px anyway!

--
Top-posting.
What's the most irritating thing on Usenet?

Dave Hammond

2005-09-20, 7:40 pm

Guys, IMO, we're getting away from the actual problem, which has
already been pointed out by Sherm Pendley: It is *perl* complaining in
the error message, not the web server.

As for the PERL code itself, any first year PERL programmer can see
that this trivial little script is absolutely valid and functional,
regardless of not meeting the posting guidelines of
comp.lang.perl.misc... so let's not get stuck on that.

It appears that the server is invoking PERL and passing it the entire
<LINK ...> statement, rather than just the name of the PERL script to
be run. That would account for the "bareword" error:

Bareword found where operator expected at
/srv/www/plwa/test/dyn_css.html line 4, near ""dyn_css.pl" type"
(Missing operator before type?)

I think this behaviour indicates that the server is in some way being
confused by naming a PERL script in the link href. So, maybe we can
get back to the original question and avoid any potentially unnecessary
head banging:

Does anyone have experience or reference to whether or not you can
invoke a PERL or PHP script as the href in a stylesheet link statement?

Thanks!

-Dave H.

Dave Hammond

2005-09-20, 7:40 pm

Problem resolved and original question answered!

At least with respect to Apache 2, a CGI script can absolutely be named
as the href in a stylesheet link. This provides a nice mechanism for
dynamically modifying a page style.

The "bareword" problem had to do with mis-use of a PERL handler within
a <Location> object in the Apache configuration.

Thanks to all who responded.

-Dave H.

Alan J. Flavell

2005-09-20, 7:40 pm

On Tue, 20 Sep 2005, Andreas Prilop wrote:

> On 19 Sep 2005, Dave Hammond wrote:
>
>
> DO NOT specify a body font-size - not in px anyway!


That's not the whole problem with the above...

http://www.xs4all.nl/~sbpoley/webmatters/verdana.html

Verdana is a perfectly fine font, *for appropriate purposes*, but
*not* good to be specified by web authors. Poley gives the best
explanation and demonstration that I've seen. The other articles on
that site are a good read too.

cheers
Sponsored Links


Copyright 2003 - 2008 forum4designers.com  Software forum  Computer Hardware reviews