⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch18.htm

📁 CGI programming is the hottest stuff to look out for in this book
💻 HTM
📖 第 1 页 / 共 5 页
字号:
sub no_author_error {<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;Content-type: text/html\n\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;No Author Error!&lt;/TITLE&gt;&lt;/HEAD&gt;
<BR>
&lt;BODY&gt;<BR>
&lt;FONT SIZE=+1&gt;&lt;B&gt;<BR>
&lt;P&gt;<BR>
No author name was entered into the posting form.&nbsp;&nbsp;One
is required.&lt;BR&gt;<BR>
Press the BACK button on your browser to re-enter the form.&lt;/B&gt;&lt;/FONT&gt;
<BR>
&lt;/BODY&gt;&lt;/HTML&gt;<BR>
END<BR>
&nbsp;&nbsp;&nbsp;exit 1;<BR>
}<BR>
<BR>
sub no_subject_error {<BR>
<BR>
&nbsp;&nbsp;&nbsp;print &quot;Content-type: text/html\n\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;No Subject Error!&lt;/TITLE&gt;&lt;/HEAD&gt;
<BR>
&lt;BODY&gt;<BR>
&lt;FONT SIZE=+1&gt;&lt;B&gt;<BR>
&lt;P&gt;<BR>
No subject was entered into the posting form.&nbsp;&nbsp;One is
required.&lt;BR&gt;<BR>
Press the BACK button on your browser to re-enter the form.&lt;/B&gt;&lt;/FONT&gt;
<BR>
&lt;/BODY&gt;&lt;/HTML&gt;<BR>
END<BR>
&nbsp;&nbsp;&nbsp;exit 1;<BR>
}<BR>
<BR>
sub print_list {<BR>
<BR>
&nbsp;&nbsp;&nbsp;if ( $prefix ne '' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;H3&gt;Follow-up
Postings:&lt;/H3&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shift(@posts);<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;if ( $#posts == -1 ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;H4&gt;None&lt;/H4&gt;\n&lt;HR&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
#<BR>
# reconstructs header fields from posting and place into the list
<BR>
#<BR>
&nbsp;&nbsp;&nbsp;$ul_count = 0;<BR>
&nbsp;&nbsp;&nbsp;foreach $i ( 0 .. $#posts ) {<BR>
<BR>
#<BR>
# this if structure implements my &quot;typographical trick&quot;
which threads<BR>
# postings based solely on their file names.&nbsp;&nbsp;&quot;bits&quot;
of posting names,<BR>
# separated by '_', are compared, first to see how many left-most
bits<BR>
# the current posting has in common with its immediate predecessor,
<BR>
# and then the signed inequality of right-most not-in-common bits
is<BR>
# used to determine the extent of &lt;UL&gt; pushing/popping needed
to thread<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $i != 0 ) {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this =
$posts[$i];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$previous
= $posts[$i-1];<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@this_bits
= split(/-/,$this);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@previous_bits
= split(/-/,$previous);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $#this_bits
&gt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lesser_bits
= $#previous_bits;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$lesser_bits
= $#this_bits;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$common
= 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for $j (
0 .. $lesser_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last
if $this_bits[$j] ne $previous_bits[$j];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$common++;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;splice(@this_bits,$[,$common);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;splice(@previous_bits,$[,$common);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $common
== 0 ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while
( $ul_count ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;/UL&gt;&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count-;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if
( $#this_bits &gt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for
$k ( 1 .. ($#this_bits - $#previous_bits) ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count++;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
elsif ( $#this_bits &lt; $#previous_bits ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for
$k ( 1 .. ($#previous_bits - $#this_bits) ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print
&quot;&lt;/UL&gt;\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count-;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this =
$posts[0];<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;UL&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(POST,&quot;$this.post&quot;);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;read_header;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(POST);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;LI&gt; &lt;A
HREF=$prog_url?$this&gt;$subject&lt;/A&gt; &quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $email ne '' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;FONT
SIZE=-1&gt;&lt;A HREF=mailto:$email&gt;&lt;B&gt;$author&lt;/B&gt;&lt;/A&gt;
&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;FONT
SIZE=-1&gt;&lt;B&gt;$author&lt;/B&gt; &quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $to ne '' ) { print &quot;&lt;I&gt;To:&lt;/I&gt;
&lt;B&gt;$to&lt;/B&gt; &quot;; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;I&gt;$time&lt;/I&gt;&lt;/FONT&gt;\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;while ( $ul_count ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;/UL&gt;&quot;;
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ul_count--;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;/UL&gt;\n&lt;HR&gt;\n&quot;;
<BR>
}<BR>
<BR>
sub get_posts {<BR>
<BR>
&nbsp;&nbsp;&nbsp;local($pre);<BR>
&nbsp;&nbsp;&nbsp;($pre) = @_;<BR>
<BR>
&nbsp;&nbsp;&nbsp;@posts = 'ls -r1 $pre*.post';<BR>
&nbsp;&nbsp;&nbsp;$post_len = length(&quot;.post\n&quot;);<BR>
&nbsp;&nbsp;&nbsp;foreach $post ( @posts ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;substr($post,-$post_len) =
''; # remove unwanted tailing characters<BR>
&nbsp;&nbsp;&nbsp;}<BR>
}<BR>
<BR>
sub new_article {<BR>
<BR>
&nbsp;&nbsp;&nbsp;$temp = $input{'author'};<BR>
&nbsp;&nbsp;&nbsp;$temp =~ s/\s//;<BR>
&nbsp;&nbsp;&nbsp;if ( $temp eq '' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;no_author_error;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;$temp = $input{'subject'};<BR>
&nbsp;&nbsp;&nbsp;$temp =~ s/\s//;<BR>
&nbsp;&nbsp;&nbsp;if ( $temp eq '' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;no_subject_error;<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&amp;get_posts($input{'basepost'});<BR>
<BR>
&nbsp;&nbsp;&nbsp;if ( $#posts == -1 ) {<BR>
#<BR>
# case where there are absolutely no postings in the tree<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fname = '00000';<BR>
&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $input{'basepost'} eq
'' ) {<BR>
#<BR>
# case where we are adding a new posting to the base level of
the tree<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@parts =
split(/-/,$posts[0]);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fname =
++($parts[0]);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$temp =
shift(@posts);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $#posts
== -1 ) {<BR>
#<BR>
# case of a first reply<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fname
= $temp . '-' . '00000';<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
<BR>
#<BR>
# case of each subsequent reply<BR>
#<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@parts
= split(/-/,$posts[0]);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++($parts[$#parts]);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fname
= join('-',@parts);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;}<BR>
<BR>
#<BR>
# gets the current system time and removes some info for the sake
of<BR>
# horizontal space (some info = seconds &amp; time zone)<BR>
#<BR>
&nbsp;&nbsp;&nbsp;chop($time = 'date');<BR>
&nbsp;&nbsp;&nbsp;@timefields = split(/[\s]+/,$time);<BR>
&nbsp;&nbsp;&nbsp;substr($timefields[3],-3,3) = '';<BR>
&nbsp;&nbsp;&nbsp;$time = join(' ',@timefields[0..3],$timefields[5]);
<BR>
<BR>
#<BR>
# remove DOS-style newline info from posting body<BR>
#<BR>
&nbsp;&nbsp;&nbsp;$input{'body'} =~ s/\cM//g;<BR>
<BR>
&nbsp;&nbsp;&nbsp;open(POST,&quot;&gt; $fname.post&quot;);<BR>
&nbsp;&nbsp;&nbsp;print POST &quot;Author\t$input{'author'}\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print POST &quot;Email\t$input{'email'}\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print POST &quot;Subject\t$input{'subject'}\n&quot;;
<BR>
&nbsp;&nbsp;&nbsp;print POST &quot;To\t$input{'to'}\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;print POST &quot;Time\t$time\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;print POST $input{'body'};<BR>
&nbsp;&nbsp;&nbsp;close(POST);<BR>
<BR>
&nbsp;&nbsp;&nbsp;chmod 0660,&quot;$fname.post&quot;;<BR>
}<BR>
<BR>
sub footer {<BR>
&nbsp;&nbsp;&nbsp;print &quot;&lt;/BODY&gt;&lt;/HTML&gt;\n\n&quot;;
<BR>
}<BR>
<BR>
sub print_form {<BR>
<BR>
&nbsp;&nbsp;&nbsp;if ( $prefix eq '' ) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;H3&gt;Submit a New Posting&lt;/H3&gt;<BR>
&lt;FORM METHOD=POST ACTION=$prog_url&gt;<BR>
&lt;INPUT TYPE=HIDDEN NAME=&quot;basepost&quot; VALUE=&quot;$prefix&quot;&gt;
<BR>
&lt;PRE&gt;<BR>
Author&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;author&quot;&gt;
<BR>
Email&nbsp;&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;email&quot;&gt;
(optional)<BR>
Subject : &lt;INPUT TYPE=text NAME=&quot;subject&quot;&gt;<BR>
To&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;to&quot;&gt;
(optional) &lt;BR&gt;<BR>
Body of Article:<BR>
&lt;TEXTAREA NAME=&quot;body&quot; ROWS=5 COLS=50&gt;&lt;/TEXTAREA&gt;&lt;/PRE&gt;
<BR>
&lt;INPUT TYPE=SUBMIT NAME=&quot;submit&quot; VALUE=&quot;Submit
this Article&quot;&gt;<BR>
&lt;INPUT TYPE=RESET NAME=clear Value=&quot;Clear this form&quot;&gt;
<BR>
&lt;/FORM&gt;<BR>
END<BR>
&nbsp;&nbsp;&nbsp;} else {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;read_article($prefix);
<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &lt;&lt;END;<BR>
&lt;H3&gt;Reply to this Posting&lt;/H3&gt;<BR>
&lt;FORM METHOD=POST ACTION=$prog_url&gt;<BR>
&lt;INPUT TYPE=HIDDEN NAME=&quot;basepost&quot; VALUE=&quot;$prefix&quot;&gt;
<BR>
&lt;PRE&gt;<BR>
Author&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;author&quot;&gt;
<BR>
Email&nbsp;&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;email&quot;&gt;
(optional)<BR>
Subject : &lt;INPUT TYPE=text NAME=&quot;subject&quot; VALUE=&quot;Re:
$subject&quot;&gt;<BR>
To&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: &lt;INPUT TYPE=text NAME=&quot;to&quot;&nbsp;&nbsp;VALUE=\&quot;$author\&quot;&gt;
(optional)<BR>
&lt;BR&gt; Body of Article:<BR>
END<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &quot;&lt;TEXTAREA NAME=\&quot;body\&quot;
ROWS=5 COLS=50&gt;&quot;;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -