Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Есть 3 вопроса


Автор: Rezzonans 12.2.2004, 13:23
Люди, мне скоро курсовой проект сдавать, если кто знает, помогите пожалуйста.
В качестве курсового проекта у меня сайт. Сайт я сделал, информацию нашёл,
дизайн оформил, и обложившись книжками сел писать гостевую книгу. Сделал, но
есть 2 проблемы которые у меня ника не получается решить:
1. Как сделать так, что HTML теги просто выводились на печать, а не превращали весь
дизайн в кашу?
2. Как сделать, чтобы гостевая книга воспринимала красные строки?
В принципе есть ещё и третья проблема: как ограничить количество сообщений на
странице. То есть к примеру первые 20 сообщений, затем открывается новая страница,
и появляется ссылка на первую. Но я так подозреваю в этой гостевой книге эту
проблему не так-то просто решить.

#################################Исходный код#####################################
#!C:/INTERNET/Perl/Bin/Perl
#guestbook.pl

print "Content-type:text/html\n\n";


$guestbook_file = "../www/guestbook.htm";


$guestbook_url = "http://localhost/guestbook.htm";



@month = ("January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December");


if($ENV{'REQUEST_METHOD'} eq "GET"){
$my_data = $ENV{'QUERY_STRING'};
}
else {
$data_length = $ENV{'CONTENT_LENGTH'};
$bytes_read = read(STDIN, $my_data, $data_length);
}

@name_value_array = split(/&/, $my_data);

foreach $name_value_pair (@name_value_array) {

($name, $value) = split(/=/, $name_value_pair);

$name =~ tr/+/ /;
$value =~ tr/+/ /;

$name =~ s/%(..)/pack("C",hex($1))/eg;
$value =~ s/%(..)/pack("C",hex($1))/eg;

$FormData{$name} = $value;
}

($Seconds, $Minutes, $Hours, $DayInMonth, $Month, $ShortYear, $DayOfWeek,
$DayOfYear, $IsDST) = localtime(time);

$Year = $ShortYear + 1900;

$EntryDate = "$month[$Month] $DayInMonth, $Year";

open(GUESTBOOK, "$guestbook_file") || die "Can't open GUESTBOOK: $guestbook_file\n";
@guestbook =<GUESTBOOK>;
close(GUESTBOOK);

open(GUESTBOOK, ">$guestbook_file") || die "Can't open GUESTBOOK: $guestbook_file\n";
foreach $line (@guestbook) {
if($line =~ /<!--Block:-->/i) {

print GUESTBOOK "<STYLE type='text/css'>.talgin{background-color:#737994;border-color: CCCCFF; font-family: Comic Sans MS; SCROLLBAR-BASE-COLOR: #666666; SCROLLBAR-ARROW-COLOR: #9999CC; topmargin: 0}</style><!--Block:-->\n";

print GUESTBOOK "<DL><table class = talgin width = 100% bgcolor = #9999CC border = 1 celpadding = 1 celspasing = 1><tr><td>\n";

if($FormData{'email'}) {

print GUESTBOOK "<DD> <A class = umenu HREF=\"mailto:$FormData{'email'}\">
$FormData{'name'}</A> - $FormData{'city'} <br> Web page: <a class = umenu HREF = \"$FormData{'web_url'}\">$FormData{'web_url'}</a>\n";
}
else {
print GUESTBOOK "From: $FormData{'name'}<BR>\n";
}


print GUESTBOOK "<ul><p>\n";
$FormData{'comments'} =~ s/\n/<br>/g;
print GUESTBOOK "$FormData{'comments'}\n";
print GUESTBOOK "</ul>\n";

print GUESTBOOK "<p><font size=2>\n";
print GUESTBOOK "signed on $EntryDate\n";
print GUESTBOOK "</font>\n";

print GUESTBOOK "</tr></td></table></DL>\n";
print GUESTBOOK "<HR>\n";
}
else {

print GUESTBOOK "$line";
}
}
close(GUESTBOOK);

print <<"EOF"
<body bgcolor = "#666666" class = bl>

<STYLE type="text/css">
.svett{background-color:#737994;border-color: #CCCCFF;font-family: Comic Sans MS, Verdana, Arial, Tahoma ; SCROLLBAR-BASE-COLOR: #737994; SCROLLBAR-ARROW-COLOR: #9999CC; CURSOR: crosshair; topmargin: 0}
.still{font-family: Comic Sans MS;}
.bl {
CURSOR: crosshair; SCROLLBAR-BASE-COLOR: #666666; SCROLLBAR-ARROW-COLOR: #9999CC

}
.umenu {
FONT: "Comic Sans MS" , "Arial"; COLOR: 000099; TEXT-DECORATION: none; CURSOR: crosshair
}
.umenu:hover {
FONT: "Comic Sans MS" , "Arial"; COLOR: 000099; TEXT-DECORATION: none; CURSOR: crosshair
}
.wap{background-color:#737994;border-color: #CCCCFF;font-family: Comic Sans MS, Verdana, Arial, Tahoma; topmargin: 0; CURSOR: crosshair
}

</STYLE>

<table width = "100%" border = 1 class = svett align = center>
<tr>
<td>
<H1 align = center>Спасибо\!</H1>
Ваше сообщение добавлено в гостевую книгу. Если Ваш браузер в течении 3 секунд не вернётся на исходную страницу, воспользуйтесь этой <A class = umenu HREF="$guestbook_url">ссылкой</A>.


<script language = "JavaScript">
<!-- hide
setTimeout("parent.location.href = '$guestbook_url'", 3000);
//-->
</script><p>
<br>Copyright \&copy\; <A class = umenu HREF=mailto:elf68\@yandex.ru>Elf Web - StudiO</A> 2003-2004.</tr></td></body>
EOF
################################################################################
guestbook.htm
###############################################################################
<TITLE>Welcome to My Guestbook</TITLE>
<BODY class = bl bgcolor = #666666 >

<!--Block:-->

<H2 ALIGN=CENTER class = still>Оставить запись в гостевой книге</H2>
<hr>
<FORM METHOD="POST" ACTION="/cgi-bin/guestbook.pl">
<table cellpadding = 0 border = 0>
<tr>
<td>
<PRE>
<INPUT class = svett type=text size=40 maxlength=256 name="name" value = "Гость">
<INPUT class = svett type=text size=40 maxlength=256 name="email" value = "E-mail">
<INPUT class = svett type=text size=40 maxlength=256 name="city" value = "Город">
<INPUT class = svett type=text size=40 maxlength=256 name="web_url" value = "http://">
</tr></td></table>

<table align = center>
<tr><td><br>

<TEXTAREA rows=9 cols=65 name="comments" class = svett></TEXTAREA>
<br>
<INPUT type="submit" value="Отправить!" class = wap> <INPUT type="reset" value="Очистить" class = wap>
</tr></td></table>
</PRE>
</FORM>

<STYLE type="text/css">
.svett{background-color:#737994;border-color: #CCCCFF;font-family: Comic Sans MS, Verdana, Arial, Tahoma ; SCROLLBAR-BASE-COLOR: #737994; SCROLLBAR-ARROW-COLOR: #9999CC; CURSOR: crosshair; topmargin: 0}
.still{font-family: Comic Sans MS;}
.bl {
CURSOR: crosshair; SCROLLBAR-BASE-COLOR: #666666; SCROLLBAR-ARROW-COLOR: #9999CC
}
.umenu {
FONT: "Comic Sans MS" , "Arial"; COLOR: 000099; TEXT-DECORATION: none; CURSOR: crosshair
}
.umenu:hover {
FONT: "Comic Sans MS" , "Arial"; COLOR: 000099; TEXT-DECORATION: none; CURSOR: crosshair
}
.wap{background-color:#737994;border-color: #CCCCFF;font-family: Comic Sans MS, Verdana, Arial, Tahoma; topmargin: 0; CURSOR: crosshair
}


</STYLE>


</BODY>
</HTML>


Автор: ElectricalStorm 12.2.2004, 13:33
во первых не мучайтесь
use CGI;

во вторых читайте книжку дальше там наверняка есть ответы на все ваши вопросы
если что-то конкретное то задвайте

Автор: MuToGeN 12.2.2004, 13:42
Модератор: в третьих, если есть 3 вопроса - пожалуйста, потрудитесь создать 3 топика.

Автор: korob2001 14.2.2004, 06:53
Мой тебе совет, используй:

ключ -w
use strict;
use Fcntl qw( :flock );
use CGI;

за счёт этого ты избавишся от множества проблем в будущем.

Что касается разбивки на страницы читай тута:
http://forum.vingrad.ru/index.php?act=ST&f=5&t=7473&hl=

Что касается красной строки, думаю этот вопрос нужно задать на форуме по HTML/CSS, но лично я бы использовал &nbsp;
Вот пример:
Код

#!/usr/bin/perl -w
my $st = "Привет!\nЯ рад вас видеть у себя на странице.\n  Это красная строка,\nа это, нет.";
$st =~ s/\n\s+/'<br>' . '&nbsp;' x 10/ge;
$st =~ s/\n/<br>/g;
print $st;


Цитата

1. Как сделать так, что HTML теги просто выводились на печать, а не превращали весь
дизайн в кашу?

Этот вопрос не понял, если не трудно, перефразируй.

Автор: Violetgem 23.8.2022, 09:33
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)