Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

two headers while using SSI

by sulfericacid (Deacon)
on Feb 16, 2004 at 05:06 UTC ( [id://329220]=perlquestion: print w/replies, xml ) Need Help??

sulfericacid has asked for the wisdom of the Perl Monks concerning the following question:

It came to my attention yesterday that I have TWO <title> tags in my website. After a little searching I found out what the problem was but now I can't seem to fix it. I have a <title> on my html and since I am using SSI on my chat script, I get the headers from there too. The first thing I tried was to remove the print header, start_html(); from my script thinking that I won't need it if it's being used as SSI after the headers are on the page. Doing this creates errors preventing the script from loading.

Any ideas on how to remove the headers so I don't get a second <title>my page title here</title> half way down my page? (the headers are printed shortly after the config section.

#!/usr/bin/perl -w # # Chatterbox version 2.0 # use strict; use warnings; use POSIX; use CGI qw(:standard start_table end_table); use CGI::Carp qw(fatalsToBrowser); use lib ""; use DB_File; use Text::Wrap; $Text::Wrap::columns = 15; my %chat; my %chatorder; ########################################### # Configuration section ########################################### $Text::Wrap::columns = 15; my @words = (bad words removed so you don't see them); my @list = ("Sulfericacid", "sulfericacid", "Sulfy", "Sulfer", "sulfy +", "sulfer", "admin", "Admin", "webmaster", "Webmaster", "administrat +or", "Administrator"); my $url = "http://sulfericacid.perlmonk.org/chat/chat.pl"; ## Change the above line to the full URL of the chat script my $imagedir = "http://sulfericacid.perlmonk.org/chat/images"; + # location of image directory (emoticons) ## Change the above line to the full URL of the /images/ folder for th +e chat script my $ip = "66.47.159.11"; ## Change to the administrator IP address my $chathelp = "chat/chathelp.html"; my $log = "chat/log.pl"; ## Change the two above lines to point to the chathelp.html and log.pl + files my $pagead = "http://sulfericacid.perlmonk.org"; ########################################## # Please do not edit below this line ########################################## my $redirect = param('location'); my $chat = "chat.db"; # location of database my $file = "count.txt"; # location of count file my $banned = "banned.txt"; # location of banned IP list tie %chat, "DB_File", "$chat", O_CREAT|O_RDWR, 0644, $DB_BTREE or die "Cannot open file 'chat': $!\n"; print header, start_html('sulfericacid.perlmonk.org -Oil of vitrol - A +cid cleanup for code on the web'); my $js="<script langauge=\"Javascript\"> document.write('<form><input type=button value=\"Refresh\" onClick=\"w +indow.location.reload()\"></form>');</script></noscript></noscript>"; my $name = param('name'); my $message = param('message'); my $cnt; ## Get the user information if (param) { if ($name ne "") { if (grep { $name eq $_ } @list and $ENV{REMOTE_ADDR} ne "$ip" ) { print "<font color=red>You are not authorized to post as the Adminis +trator</font>"; exit; } if ($message ne "") { open( LOG, "$file" ); # open count log for ID $cnt = <LOG>; close(LOG); $cnt++; open( LOG, "> $file" ); print LOG $cnt; close(LOG); $name =~ s/</&lt\;/g; # removing exploit $name =~ s/~/\&#126\;/g; # database splitting $message =~ s/</&lt\;/g; # removing exploit $message =~ s/~/\&#126\;/g; # database splitting my $info = join ( '~~', $name, $message, $ENV{REMOTE_ADDR}); $chat{$cnt} = $info; print "<SCRIPT LANGUAGE=\"JAVASCRIPT\">"; print "document.location.href=\"$redirect\";"; print "</SCRIPT>"; } else { print "<SCRIPT LANGUAGE=\"JAVASCRIPT\">"; print "document.location.href=\"$redirect\";"; print "</SCRIPT>"; } } else { print "<SCRIPT LANGUAGE=\"JAVASCRIPT\">"; print "document.location.href=\"$redirect\";"; print "</SCRIPT>"; } } # Start printing everything out my $cnt = 0; foreach (keys %chat) { $cnt++; } print qq[(<a href="$chathelp" target="new">chat help</a>) ]; print "(<a href=\"$log\" target=\"new\">chat logs</a>)"; print start_table; print Tr(td({-height=>'5', width=>'700', bgcolor=>'#BBCCEE'},"<font si +ze=2><b>ChatterBox version 1.73</b></font>\n" )); print Tr(td({-height=>'5', width=>'700', bgcolor=>'#BBCCEE'},"\n")); for (grep defined($_), (keys %chat)[-10..-1]) { my ( $name, $message, $userip) = split /~~/, $chat{$_}; #$name =~ s/$_/****/g for @words; # say goodbye to swear words $name =~ s[\b$_\b][****]sgi for @words; # say goodbye to swear words $name = wrap('', '', $name); #$message =~ s/$_/****/g for @words; # say goodbye to swear words $message =~ s[\b$_\b][****]sgi for @words; # say goodbye to swear word +s $message = wrap('', '', $message); $message =~ s#:\)#<img src="$imagedir/smiley.gif">#g; # happy emoticon $message =~ s#:\(#<img src="$imagedir/sad.gif">#g; # sad emoticon $message =~ s#:p#<img src="$imagedir/tongue.gif"#g; # tongue emoticon $message =~ s#:P#<img src="$imagedir/tongue.gif">#g; # tongue1 emotic +on $message =~ s#:o#<img src="$imagedir/oh.gif">#g; # oh emoticon $message =~ s#:O#<img src="$imagedir/oh.gif">#g; # oh1 emoticon $message =~ s#\*hug\*#<img src="$imagedir/hug.gif">#g; # hug emoticon $message =~ s#\*flower\*#<img src="$imagedir/flower.gif">#g; # flower + emoticon $message =~ s#\*wink\*#<img src="$imagedir/wink.gif">#g; # wink emoti +con $message =~ s#\*devil\*#<img src="$imagedir/devil.gif">#g;# devil emot +icon $message =~ s#\*love\*#<img src="$imagedir/love.gif"\>#g; # love emot +icon $message =~ s#\*sleep\*#<img src="$imagedir/sleep.gif">#g;# sleep emot +icon $message =~ s#\*conf\*#<img src="$imagedir/confused.gif">#g;# sleep em +oticon if ($message =~ m/(^\/me)/) { $name = "<i>$name"; $message =~ s/$1//; $message = "$message<\i>"; if (grep { $name eq "<i>$_" } @list) { print Tr(td({-width=>'700'},"<font size=2 color=red>$name</font><f +ont size=2> $message</font>\n")), } else { print Tr(td({-width=>'700'},"<font size=2 color=blue>$name</font>< +font size=2> $message</font>\n")), }} else { if (grep { $name eq $_ } @list) { print Tr(td({-width=>'700'},"<font size=2 color=red>&lt;$name&gt;< +/font><font size=2> $message</font>\n")), } else { print Tr(td({-width=>'700'},"<font size=2 color=blue>&lt;$name&gt; +</font><font size=2> $message</font>\n")), } } } print Tr(td({-height=>'5', width=>'700', bgcolor=>'#BBCCEE'},"")); print Tr(td({-height=>'5', width=>'700', bgcolor=>'#BBCCEE'},"<font si +ze=2><p align=right><b>$pagead</b></font>\n" )); print "</table>"; my $location = join("", "http://", $ENV{'SERVER_NAME'}, $ENV{'REQUEST_ +URI'}); open(BANNED, "<$banned") or die "Cannot open $banned because: $!"; while(<BANNED>) { chomp; if ($_ eq $ENV{REMOTE_ADDR}) { print <<"ALL"; <table width="20"> <td>Your IP has been banned, you are not allowed to use this scri +pt.</td> </table> ALL exit; } } close(BANNED); print <<"ALL"; <table width="20" border="0"><form method="POST" action="$url"> <tr><td>Name:</td><td><input type="text" name="name" value="$name" siz +e="15"></td></tr> <tr><td>Message:</td><td><input type="text" name="message" size="15" m +axlength="500"></td></tr> <tr><td><input type="submit" name="submit" value="send"><input type="h +idden" name="location" value="$location"></form></td><td> <form><input type=button value="Refresh" onClick="window.location.relo +ad()"></form></td></tr> </form></table> <hr> ALL


"Age is nothing more than an inaccurate number bestowed upon us at birth as just another means for others to judge and classify us"

sulfericacid

Replies are listed 'Best First'.
Re: two headers while using SSI
by Trimbach (Curate) on Feb 16, 2004 at 05:55 UTC
    You have to print the headers or the web browser won't know you're sending it a web page and will croak. start_html(), however, is optional... try removing just that and make sure your SSI includes <html> and <body> tags and you should be fine.

    Gary Blackburn
    Trained Killer

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://329220]
Approved by Roger
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (6)
As of 2024-04-24 10:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found