Mailing List Archive

cvs commit: embperl/test/html escape.htm
richter 00/05/01 21:41:42

Modified: . Changes.pod Embperl.pm Embperl.pod EmbperlD.pod
EmbperlObject.pm Faq.pod embperl.h epchar.c epdat.h
epmain.c eputil.c
Embperl Mail.pm Module.pm
eg/x neu.htm
emacs embperl.el
test/cmp escape.htm
test/html escape.htm
Log:
- New $escmode (or EMBPERL_ESCMODE) to disable the possiblilty
to turn off escaping with a leading backslash. Adding 4 to
any escmode will cause Embperl to do no special processing
on the backslash. This is mainly to avoid problems with
cross site scripting issuse, where people are able to enter
aribtary HTML.
- Characters between 128 and 159 are all HTML escaped now to
avoid problems with buggy browser, which were reported to
treat the chars 139 and 141 as < and >.

Revision Changes Path
1.114 +17 -0 embperl/Changes.pod

Index: Changes.pod
===================================================================
RCS file: /home/cvs/embperl/Changes.pod,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -r1.113 -r1.114
--- Changes.pod 2000/04/25 04:25:51 1.113
+++ Changes.pod 2000/05/02 04:41:37 1.114
@@ -1,5 +1,22 @@
=pod

+=head1 1.3b4_dev -- That's what currently under developement
+
+Last Update: <$localtime$> (MET)
+
+NOTE: This version is only available via L<"CVS"|CVS/"INTRO">
+
+ - New $escmode (or EMBPERL_ESCMODE) to disable the possiblilty
+ to turn off escaping with a leading backslash. Adding 4 to
+ any escmode will cause Embperl to do no special processing
+ on the backslash. This is mainly to avoid problems with
+ cross site scripting issuse, where people are able to enter
+ aribtary HTML.
+ - Characters between 128 and 159 are all HTML escaped now to
+ avoid problems with buggy browser, which were reported to
+ treat the chars 139 and 141 as < and >.
+
+
=head1 1.3b3 (BETA) 25.04.2000

- Fixed SIGSEGV which occurs in cleanup with Perl 5.6. Spotted by



1.103 +1 -1 embperl/Embperl.pm

Index: Embperl.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl.pm,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -r1.102 -r1.103
--- Embperl.pm 2000/04/26 04:07:16 1.102
+++ Embperl.pm 2000/05/02 04:41:37 1.103
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Embperl.pm,v 1.102 2000/04/26 04:07:16 richter Exp $
+# $Id: Embperl.pm,v 1.103 2000/05/02 04:41:37 richter Exp $
#
###################################################################################

@@ -79,7 +79,7 @@
@ISA = qw(Exporter DynaLoader);


-$VERSION = '1.3b3';
+$VERSION = '1.3b4_dev';


# HTML::Embperl cannot be bootstrapped in nonlazy mode except



1.48 +15 -3 embperl/Embperl.pod

Index: Embperl.pod
===================================================================
RCS file: /home/cvs/embperl/Embperl.pod,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- Embperl.pod 2000/04/25 04:25:51 1.47
+++ Embperl.pod 2000/05/02 04:41:37 1.48
@@ -1717,20 +1717,29 @@
Turn HTML and URL escaping on and off. The default is on ($escmode =
3).

+B<NOTE:> Normaly you can disable escaping by preceeding the item that
+normaly is escaped with a backslash. While this is a handy thing, it could
+be very dangerous in situations, where content that is inserted by some
+user is redisplayed, because they can enter arbitary HTML and preceed them
+with a backslash to avoid correct esaping when their input is redisplayed
+again. To avoid this problem, add 4 to the values below. This will cause
+Embperl to ignore the backslash when it does output escaping at all.
+(only 1.3b4 and above)
+
=over 4

-=item B<$escmode = 3>
+=item B<$escmode = 3 (or 7)>

The result of a Perl expression is HTML-escaped (e.g., `>' becomes
`&gt;') in normal text and URL-escaped (e.g., `&' becomes `%26')
within of C<A>, C<EMBED>, C<IMG>, C<IFRAME>, C<FRAME> and C<LAYER> tags.

-=item B<$escmode = 2>
+=item B<$escmode = 2 (or 6)>

The result of a Perl expression is always URL-escaped (e.g., `&'
becomes `%26').

-=item B<$escmode = 1>
+=item B<$escmode = 1 (or 5)>

The result of a Perl expression is always HTML-escaped (e.g., `>'
becomes `&gt;').
@@ -1741,6 +1750,8 @@

=back

+
+
=head2 $req_rec

This variable is only available when running under control of
@@ -2522,6 +2533,7 @@
Win NT/95/98 binarys
Apache/perl/
mod_perl/Embperl ftp://theoryx5.uwinnipeg.ca/pub/other/
+ europe http://www.robert.cz/misc/


=head2 CVS



1.21 +11 -3 embperl/EmbperlD.pod

Index: EmbperlD.pod
===================================================================
RCS file: /home/cvs/embperl/EmbperlD.pod,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- EmbperlD.pod 2000/04/25 04:25:52 1.20
+++ EmbperlD.pod 2000/05/02 04:41:37 1.21
@@ -1620,18 +1620,25 @@
Schaltet die HTML und URL Kodierung der Ausgabe ein und aus.
Default ist ein (C<$escmode> = 3).

+B<Hinweis:> Normalerweise kann die Kodierung durch Voranstellen eines Backslashes ('\')
+vor das entsprechende Zeichen verhindert werden. Das ist recht nützlich, ist aber
+in Situation, wo eine Benutzereingabe nochmal angezeigt wird, sehr gefährlich, da dies
+dem Benuter ermöglich beliebiges HTML einzugeben. Um dies zu verhindern muß zu den
+unten aufgeführten Werten jeweils eine 4 addiert werden. Dies führt dazu, dass I<Embperl>
+den Backslash bei der Ausgabe nicht gesondert behandelt. (ab 1.3b4)
+
=over 4

-=item $escmode = 3
+=item $escmode = 3 (oder 7)

Das Resultat von Perlausdrücken wird HTML Kodiert (z.B. '>' wird zu '&gt;')
und URL Kodiert ('&' wird zu '%26') innerhalb von C<A>, C<EMBED>, C<IMG>, C<IFRAME>, C<FRAME> und C<LAYER> Tags.

-=item $escmode = 2
+=item $escmode = 2 (oder 6)

Das Resultat von Perlausdrücken wird immer URL Kodiert ('&' wird zu '%26').

-=item $escmode = 1
+=item $escmode = 1 (oder 5)

Das Resultat von Perlausdrücken wird immer HTML Kodiert (z.B. '>' wird zu '&gt;').

@@ -2483,6 +2490,7 @@
Win NT/95/98 Binaries
Apache/perl/
mod_perl/Embperl ftp://theoryx5.uwinnipeg.ca/pub/other/
+ europe http://www.robert.cz/misc/


=head2 CVS



1.27 +0 -0 embperl/EmbperlObject.pm

Index: EmbperlObject.pm
===================================================================
RCS file: /home/cvs/embperl/EmbperlObject.pm,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- EmbperlObject.pm 2000/04/26 04:07:16 1.26
+++ EmbperlObject.pm 2000/05/02 04:41:37 1.27
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: EmbperlObject.pm,v 1.26 2000/04/26 04:07:16 richter Exp $
+# $Id: EmbperlObject.pm,v 1.27 2000/05/02 04:41:37 richter Exp $
#
###################################################################################




1.14 +2 -1 embperl/Faq.pod

Index: Faq.pod
===================================================================
RCS file: /home/cvs/embperl/Faq.pod,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Faq.pod 2000/04/25 04:25:52 1.13
+++ Faq.pod 2000/05/02 04:41:37 1.14
@@ -53,7 +53,8 @@
=head2 Is there a binary distribution of Embperl for Win32?

Win NT/95/98 binarys for Apache/perl/mod_perl/Embperl are
-available from http://www.perl.com/CPAN/authors/Jeffrey_Baker/
+available from ftp://theoryx5.uwinnipeg.ca/pub/other/ . A
+european mirror is at http://www.robert.cz/misc/ .


=head2 I want to run Embperl with mod_perl under Apache. In what order should I



1.17 +2 -1 embperl/embperl.h

Index: embperl.h
===================================================================
RCS file: /home/cvs/embperl/embperl.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- embperl.h 1999/10/05 06:01:18 1.16
+++ embperl.h 2000/05/02 04:41:37 1.17
@@ -176,7 +176,8 @@
escNone = 0,
escHtml = 1,
escUrl = 2,
- escStd = 3
+ escStd = 3,
+ escEscape = 4
} ;





1.11 +65 -34 embperl/epchar.c

Index: epchar.c
===================================================================
RCS file: /home/cvs/embperl/epchar.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- epchar.c 2000/04/13 21:36:54 1.10
+++ epchar.c 2000/05/02 04:41:37 1.11
@@ -154,40 +154,39 @@
{ '}' , "" }, /* &#125; Right curly brace */
{ '~' , "" }, /* &#126; Tilde */
{ '' , "" }, /* &#127; Unused */
- { '€' , "" }, /* &#128; Unused */
-
- { ' ' , "" }, /* &#129; Unused */
- { ' ' , "" }, /* &#130; Unused */
- { ' ' , "" }, /* &#131; Unused */
- { ' ' , "" }, /* &#132; Unused */
- { ' ' , "" }, /* &#133; Unused */
- { ' ' , "" }, /* &#134; Unused */
- { ' ' , "" }, /* &#135; Unused */
- { ' ' , "" }, /* &#136; Unused */
- { ' ' , "" }, /* &#137; Unused */
- { ' ' , "" }, /* &#138; Horizontal tab */
- { ' ' , "" }, /* &#139; Line feed */
- { ' ' , "" }, /* &#140; Unused */
- { ' ' , "" }, /* &#141; Unused */
- { ' ' , "" }, /* &#142; Carriage Return */
- { ' ' , "" }, /* &#143; Unused */
- { ' ' , "" }, /* &#144; Unused */
- { ' ' , "" }, /* &#145; Unused */
- { ' ' , "" }, /* &#146; Unused */
- { ' ' , "" }, /* &#147; Unused */
- { ' ' , "" }, /* &#148; Unused */
- { ' ' , "" }, /* &#149; Unused */
- { ' ' , "" }, /* &#150; Unused */
- { ' ' , "" }, /* &#151; Unused */
- { ' ' , "" }, /* &#152; Unused */
- { ' ' , "" }, /* &#153; Unused */
- { ' ' , "" }, /* &#154; Unused */
- { ' ' , "" }, /* &#155; Unused */
- { ' ' , "" }, /* &#156; Unused */
- { ' ' , "" }, /* &#157; Unused */
- { ' ' , "" }, /* &#158; Unused */
- { ' ' , "" }, /* &#159; Unused */
- { ' ' , "&nbsp;" }, /* Non-breaking Space */
+ { '\x80' , "&#128;" }, /* &#128; Unused */
+ { '\x81' , "&#129;" }, /* &#129; Unused */
+ { '\x82' , "&#130;" }, /* &#130; Unused */
+ { '\x83' , "&#131;" }, /* &#131; Unused */
+ { '\x84' , "&#132;" }, /* &#132; Unused */
+ { '\x85' , "&#133;" }, /* &#133; Unused */
+ { '\x86' , "&#134;" }, /* &#134; Unused */
+ { '\x87' , "&#135;" }, /* &#135; Unused */
+ { '\x88' , "&#136;" }, /* &#136; Unused */
+ { '\x89' , "&#137;" }, /* &#137; Unused */
+ { '\x8a' , "&#138;" }, /* &#138; Horizontal tab */
+ { '\x8b' , "&#139;" }, /* &#139; Line feed */
+ { '\x8c' , "&#140;" }, /* &#140; Unused */
+ { '\x8d' , "&#141;" }, /* &#141; Unused */
+ { '\x8e' , "&#142;" }, /* &#142; Carriage Return */
+ { '\x8f' , "&#143;" }, /* &#143; Unused */
+ { '\x90' , "&#144;" }, /* &#144; Unused */
+ { '\x91' , "&#145;" }, /* &#145; Unused */
+ { '\x92' , "&#146;" }, /* &#146; Unused */
+ { '\x93' , "&#147;" }, /* &#147; Unused */
+ { '\x94' , "&#148;" }, /* &#148; Unused */
+ { '\x95' , "&#149;" }, /* &#149; Unused */
+ { '\x96' , "&#150;" }, /* &#150; Unused */
+ { '\x97' , "&#151;" }, /* &#151; Unused */
+ { '\x98' , "&#152;" }, /* &#152; Unused */
+ { '\x99' , "&#153;" }, /* &#153; Unused */
+ { '\x9a' , "&#154;" }, /* &#154; Unused */
+ { '\x9b' , "&#155;" }, /* &#155; Unused */
+ { '\x9c' , "&#156;" }, /* &#156; Unused */
+ { '\x9d' , "&#157;" }, /* &#157; Unused */
+ { '\x9e' , "&#158;" }, /* &#158; Unused */
+ { '\x9f' , "&#159;" }, /* &#159; Unused */
+ { '\xa0' , "&nbsp;" }, /* Non-breaking Space */
{ '¡' , "&iexcl;" }, /* Inverted exclamation */
{ '¢' , "&cent;" }, /* Cent sign */
{ '£' , "&pound;" }, /* Pound sterling */
@@ -555,6 +554,38 @@
struct tCharTrans Html2Char [] =

{
+ { '\x80' , "&#128;" }, /* &#129; Unused */
+ { '\x81' , "&#129;" }, /* &#129; Unused */
+ { '\x82' , "&#130;" }, /* &#130; Unused */
+ { '\x83' , "&#131;" }, /* &#131; Unused */
+ { '\x84' , "&#132;" }, /* &#132; Unused */
+ { '\x85' , "&#133;" }, /* &#133; Unused */
+ { '\x86' , "&#134;" }, /* &#134; Unused */
+ { '\x87' , "&#135;" }, /* &#135; Unused */
+ { '\x88' , "&#136;" }, /* &#136; Unused */
+ { '\x89' , "&#137;" }, /* &#137; Unused */
+ { '\x8a' , "&#138;" }, /* &#138; Horizontal tab */
+ { '\x8b' , "&#139;" }, /* &#139; Line feed */
+ { '\x8c' , "&#140;" }, /* &#140; Unused */
+ { '\x8d' , "&#141;" }, /* &#141; Unused */
+ { '\x8e' , "&#142;" }, /* &#142; Carriage Return */
+ { '\x8f' , "&#143;" }, /* &#143; Unused */
+ { '\x90' , "&#144;" }, /* &#144; Unused */
+ { '\x91' , "&#145;" }, /* &#145; Unused */
+ { '\x92' , "&#146;" }, /* &#146; Unused */
+ { '\x93' , "&#147;" }, /* &#147; Unused */
+ { '\x94' , "&#148;" }, /* &#148; Unused */
+ { '\x95' , "&#149;" }, /* &#149; Unused */
+ { '\x96' , "&#150;" }, /* &#150; Unused */
+ { '\x97' , "&#151;" }, /* &#151; Unused */
+ { '\x98' , "&#152;" }, /* &#152; Unused */
+ { '\x99' , "&#153;" }, /* &#153; Unused */
+ { '\x9a' , "&#154;" }, /* &#154; Unused */
+ { '\x9b' , "&#155;" }, /* &#155; Unused */
+ { '\x9c' , "&#156;" }, /* &#156; Unused */
+ { '\x9d' , "&#157;" }, /* &#157; Unused */
+ { '\x9e' , "&#158;" }, /* &#158; Unused */
+ { '\x9f' , "&#159;" }, /* &#159; Unused */
{ 'Æ' , "&AElig" }, /* Capital AE ligature */
{ 'Á' , "&Aacute" }, /* Capital A, acute accent */
{ 'Â' , "&Acirc" }, /* Capital A, circumflex */



1.17 +2 -1 embperl/epdat.h

Index: epdat.h
===================================================================
RCS file: /home/cvs/embperl/epdat.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- epdat.h 1999/10/07 07:06:43 1.16
+++ epdat.h 2000/05/02 04:41:37 1.17
@@ -292,7 +292,8 @@

struct tCharTrans * pCurrEscape ; /* pointer to current escape table */
struct tCharTrans * pNextEscape ; /* pointer to next escape table (after end of block) */
- int nEscMode ; /* current escape mode */
+ int nEscMode ; /* escape mode set by the user */
+ int nCurrEscMode ; /* current active escape mode */
int bEscModeSet ; /* escape mode already set in this block */
int bEscInUrl ; /* we are inside an url */




1.65 +5 -1 embperl/epmain.c

Index: epmain.c
===================================================================
RCS file: /home/cvs/embperl/epmain.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- epmain.c 2000/03/29 07:00:39 1.64
+++ epmain.c 2000/05/02 04:41:37 1.65
@@ -294,14 +294,17 @@

{
if (r -> nEscMode & escHtml && !r -> bEscInUrl)
- r -> pNextEscape = Char2Html ;
+ r -> pNextEscape = Char2Html ;
else if (r -> nEscMode & escUrl)
r -> pNextEscape = Char2Url ;
else
r -> pNextEscape = NULL ;

if (r -> bEscModeSet < 1)
+ {
r -> pCurrEscape = r -> pNextEscape ;
+ r -> nCurrEscMode = r -> nEscMode ;
+ }

if (r -> bEscModeSet < 0 && pSV && SvOK (pSV))
r -> bEscModeSet = 1 ;
@@ -1252,6 +1255,7 @@
r -> Buf.pLineNoCurrPos = NULL ;

r -> nEscMode = escStd ;
+ r -> nCurrEscMode = escStd ;

if ((rc = OpenLog (r, sLogFile, ((r -> bDebug & dbgFunc) || (r -> bOptions & optOpenLogEarly))?1:0)) != ok)
{



1.14 +1 -1 embperl/eputil.c

Index: eputil.c
===================================================================
RCS file: /home/cvs/embperl/eputil.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- eputil.c 1999/11/02 08:32:51 1.13
+++ eputil.c 2000/05/02 04:41:38 1.14
@@ -44,7 +44,7 @@

while (*sData)
{
- if (*sData == '\\')
+ if (*sData == '\\' && (r -> nCurrEscMode & escEscape) == 0)
{
if (p != sData)
owrite (r, p, sData - p) ;



1.26 +0 -0 embperl/Embperl/Mail.pm

Index: Mail.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Mail.pm,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- Mail.pm 2000/04/26 04:07:16 1.25
+++ Mail.pm 2000/05/02 04:41:39 1.26
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Mail.pm,v 1.25 2000/04/26 04:07:16 richter Exp $
+# $Id: Mail.pm,v 1.26 2000/05/02 04:41:39 richter Exp $
#
###################################################################################




1.27 +0 -0 embperl/Embperl/Module.pm

Index: Module.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Module.pm,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- Module.pm 2000/04/26 04:07:16 1.26
+++ Module.pm 2000/05/02 04:41:39 1.27
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Module.pm,v 1.26 2000/04/26 04:07:16 richter Exp $
+# $Id: Module.pm,v 1.27 2000/05/02 04:41:39 richter Exp $
#
###################################################################################

@@ -25,7 +25,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Module.pm,v 1.26 2000/04/26 04:07:16 richter Exp $
+# $Id: Module.pm,v 1.27 2000/05/02 04:41:39 richter Exp $
#
###################################################################################




1.2 +1 -1 embperl/eg/x/neu.htm

Index: neu.htm
===================================================================
RCS file: /home/cvs/embperl/eg/x/neu.htm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- neu.htm 1998/07/14 20:11:26 1.1
+++ neu.htm 2000/05/02 04:41:40 1.2
@@ -5,7 +5,7 @@
<title>Example for creating a wizard with Embperl</title>
</head>
<body background="../images/jazzbkgd.gif">
-<p>[- $b = defined($fdat{back})-][- $c =
+<p>[- $escmode = 7 -][- $b = defined($fdat{back})-][- $c =
defined($fdat{cont})-][-$kn = $fdat{Kundennummer} eq 'Ja'-][-$p =
$fdat{page}<br>
-][.$if $p==0 or ($p==2 and $b) or ($p==4 and $b and !$kn)$]</p>



1.95 +0 -0 embperl/emacs/embperl.el

Index: embperl.el
===================================================================
RCS file: /home/cvs/embperl/emacs/embperl.el,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -r1.94 -r1.95
--- embperl.el 2000/04/26 04:07:17 1.94
+++ embperl.el 2000/05/02 04:41:40 1.95
@@ -19,9 +19,9 @@
;; Author : Erik Arneson (erik@mind.net)
;; Created On : Wed Jul 22 17:16:39 PDT 1998
;; Last Modified By: Erik Arneson
-;; Last Modified On: $Date: 2000/04/26 04:07:17 $
+;; Last Modified On: $Date: 2000/05/02 04:41:40 $
;; Version : 1.00
-;; $Id: embperl.el,v 1.94 2000/04/26 04:07:17 richter Exp $
+;; $Id: embperl.el,v 1.95 2000/05/02 04:41:40 richter Exp $
;;
;; Please note that this software is very beta and rather broken. I
;; don't know how useful it will be, although I definitely plan on



1.15 +26 -5 embperl/test/cmp/escape.htm

Index: escape.htm
===================================================================
RCS file: /home/cvs/embperl/test/cmp/escape.htm,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- escape.htm 2000/04/17 21:03:17 1.14
+++ escape.htm 2000/05/02 04:41:41 1.15
@@ -74,10 +74,31 @@
What is the EscMode? 3
file.html?name=abcd&amp;data=xyz
Now we localy set $escmode:<BR>
-(this is the value in $a) äöüäöü???<&+ <BR>
-(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <BR>
-(this+is+the+value+in+$a)+äöüäöü%3F%3F%3F%3C%26%2B++<BR>
-(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <BR>
+(this is the value in $a) äöüäöü???<&+ \<a><BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <a&gt;<BR>
+(this+is+the+value+in+$a)+äöüäöü%3F%3F%3F%3C%26%2B++++<a%3E<BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <a&gt;<BR>
+(this is the value in $a) äöüäöü???<&+ \<a><BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ \&lt;a&gt;<BR>
+(this+is+the+value+in+$a)+äöüäöü%3F%3F%3F%3C%26%2B++++\%3Ca%3E<BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ \&lt;a&gt;<BR>
+
+Same without local:
+(this is the value in $a) äöüäöü???<&+ \<a><BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <a&gt;<BR>
+(this+is+the+value+in+$a)+äöüäöü%3F%3F%3F%3C%26%2B++++<a%3E<BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ <a&gt;<BR>
+(this is the value in $a) äöüäöü???<&+ \<a><BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ \&lt;a&gt;<BR>
+(this+is+the+value+in+$a)+äöüäöü%3F%3F%3F%3C%26%2B++++\%3Ca%3E<BR>
+(this is the value in $a) &auml;&ouml;&uuml;&auml;&ouml;&uuml;???&lt;&amp;+ \&lt;a&gt;<BR>
+
+
+Control Chars 0x80-0x9f:
+&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&nbsp;<BR>
+
+Control Chars 129 & 130:
+&amp;#129;&amp;#130;<BR>

0
<A HREF='http://host/script?name=My+Name+öäü'>
@@ -195,4 +216,4 @@

</body>
</html>
-
+



1.11 +25 -4 embperl/test/html/escape.htm

Index: escape.htm
===================================================================
RCS file: /home/cvs/embperl/test/html/escape.htm,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- escape.htm 1999/10/07 07:07:06 1.10
+++ escape.htm 2000/05/02 04:41:41 1.11
@@ -104,10 +104,31 @@
[+ foo (0) +]

Now we localy set $escmode:<BR>
-[+ local $escmode = 0 ; $b +]<BR>
-[+ local $escmode = 1 ; $b +]<BR>
-[+ local $escmode = 2 ; $b +]<BR>
-[+ local $escmode = 3 ; $b +]<BR>
+[+ local $escmode = 0 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 1 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 2 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 3 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 4 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 5 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 6 ; $b . " \\\\<a>" +]<BR>
+[+ local $escmode = 7 ; $b . " \\\\<a>" +]<BR>
+
+Same without local:
+[+ $escmode = 0 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 1 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 2 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 3 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 4 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 5 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 6 ; $b . " \\\\<a>" +]<BR>
+[+ $escmode = 7 ; $b . " \\\\<a>" +]<BR>
+
+
+Control Chars 0x80-0x9f:
+[.+ local $escmode = 7 ; foreach (127..160) { $cc .= chr ($_) }; $cc +]<BR>
+
+Control Chars 129 & 130:
+[+ local $escmode = 7 ; "&#129;&#130;" +]<BR>

[+ $n = 'My Name öäü' ; $escmode = 0 +]