Inhaltsverzeichnis

HTML

Hypertext Markup Language (HTML) ist eine Auszeichnungssprache zur Strukturierung elektronischer Dokumente. HTML-Dokumente werden von Webbrowsern dargestellt und bilden die Grundlage für Webseiten. HTML ist zusammen mit CSS und JavaScript eine der Kernsprachen des World Wide Webs (WWW).

Informationen

HTML 5 Template

index.html
<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
 
        <title>Hello World!</title>
 
        <!-- <link rel="icon" href="img/favicon.svg"> -->
        <!-- <link rel="stylesheet" href="css/style.css"> -->
 
        <!-- <script type="module" src="js/script.js"></script> -->
        <!-- <script defer nomodule src="js/script.fallback.js"></script> -->
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>

Dieses Template berücksichtig keine IE eigenarten, da dieser Browser nicht mehr supported wird!

Das wichtigste zum HTML-Dokument

Neu und obsolet in HTML5

FIXME veraltet, muss aktualisiert werden

Ein einfaches HTML-Dokument kann wie folgt aussehen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
    <HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
    <TITLE>Hallo</TITLE>
    </HEAD>
<body LANG="de-DE">
Hallo Welt!
</body>
</HTML>

Kommentare

...
<!-- einzeiliger Kommentar -->
...
<!-- #
und das ist ein mehrzeiliger Kommentar
bla-bla-bla
Letzte Zeile des Kommentars
# -->
...

Ein CGI-Script (in Bourne SHell) sollte als allererstes die Zeile

echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'

enthalten und erst dann seine eigentliche Arbeit tun! Sonst bekommt man den Fehler:

malformed header from script. Bad header=<!DOCTYPE HTML PUBLIC "-//W3C/

Wenn der Fehler

Syntax error: newline unexpected

auftritt hat man dummerweise vor der oben erwähnten ersten Zeile eine Leerzeile gesendet. Das kann z.B. auftreten wenn man die erste Zeile nicht so abschickt wie oben gezeigt sondern so:

echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
'

Will man eine Weiterleitung im HTML-Dokument bewirken, setzt man unter der vorhandenen META-Zeile noch eine zweite drunter, die wie folgt aussehen könnte:

<META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.neuer-server.de">

Zeichensätze und URL-Kodierung im HTML-Dokument

In einzelnen Fällen (unter Verwendung anderer Betriebssysteme oder älterer Software) kann es sein, dass der UTF-8-Zeichensatz nicht zur Verfügung steht, dann verwendet man in der Regel ISO-8859-15. Zu beachten ist, dass der Zeichensatz ISO-8859-1 der alte US-Zeichensatz ist und deshalb keine Umlaute und kein Eurosymbol enthält.

charset=iso-8859-15

Um mit Umlauten in einem HTML-Dokument keine Probleme zu bekommen, sollte man die HTML-Kodierung für Sonderzeichen verwenden (Nicht zu verwechseln mit URI-Kodierung: https://www.urlencoder.io/):

lfd. Nr. Zeichen HTML-Kodierung Zeichen HTML-Kodierung Zeichen HTML-Kodierung
1 ¡ &iexcl; À &Agrave; à &agrave;
2 ¢ &cent; Á &Aacute; á &aacute;
3 £ &pound; Â &Acirc; â &acirc;
4 ¤ &curren; Ã &Atilde; ã &atilde;
5 ¥ &yen; Ä &Auml; ä &auml;
6 ¦ &brvbar; Å &Aring; å &aring;
7 § &sect; Æ &AElig; æ &aelig;
8 ¨ &uml; Ç &Ccedil; ç &ccedil;
9 © &copy; È &Egrave; è &egrave;
10 ª &ordf; É &Eacute; é &eacute;
11 « &laquo; Ê &Ecirc; ê &ecirc;
12 ¬ &not; Ë &Euml; ë &euml;
13 ® &reg; Ì &Igrave; ì &igrave;
14 ¯ &macr; Í &Iacute; í &iacute;
15 ° &deg; Î &Icirc; î &icirc;
16 ± &plusmn; Ï &Iuml; ï &iuml;
17 ² &sup2; Ð &ETH; ð &eth;
18 ³ &sup3; Ñ &Ntilde; ñ &ntilde;
19 ´ &acute; Ò &Ograve; ò &ograve;
20 µ &micro; Ó &Oacute; ó &oacute;
21 &para; Ô &Ocirc; ô &ocirc;
22 · &middot; Õ &Otilde; õ &otilde;
23 ¸ &cedil; Ö &Ouml; ö &ouml;
24 ¹ &sup1; × &times; ÷ &divide;
25 º &ordm; Ø &Oslash; ø &oslash;
26 » &raquo; Ù &Ugrave; ù &ugrave;
27 ¼ &frac14; Ú &Uacute; ú &uacute;
28 ½ &frac12; Û &Ucirc; û &ucirc;
29 ¾ &frac34; Ü &Uuml; ü &uuml;
30 ¿ &iquest; Ý &Yacute; ý &yacute;
31 Þ &THORN; þ &thorn;
32 ß &szlig; ÿ &yuml;

URL-Encode auf der CLI

Für die Nicht-Linux-Gemeinde (z.B.: FreeBSD) gibt hier ein wunderschönes Rust-Programm, mit dem sich auf der CLI die meisten Zeichen in HTML-Kode umwandeln lassen.

dead10ck/urlencode

[root@webserver ~]# cd /usr/ports/lang/rust/
[root@erde /usr/ports/lang/rust]# make clean
[root@erde /usr/ports/lang/rust]# make
[root@erde /usr/ports/lang/rust]# make install
[root@erde /usr/ports/lang/rust]# make clean

> cargo install urlencode
> ls -lha /benutzer/.cargo/bin/
> cp /benutzer/.cargo/bin/urlencode /usr/local/bin/

> echo Test\'s\ 1/Best\'s\ of\ \"Cap\".mp4 | urlencode
Test's%201%2FBest's%20of%20%22Cap%22.mp4

> echo Test\'s\ 1/Best\'s\ of\ \"Cap\".mp4 | urlencode | sed "s/[']/%27/g")"
Test%27s%201%2FBest%27s%20of%20%22Cap%22.mp4

Weiterleitung im HTML-Dokument

<!doctype html>

<html>
<head>
      <title>www.quelle.de</title>
      <meta charset=utf-8">
      <meta http-equiv="cache-control" content="no-cache">
      <meta http-equiv="refresh" content="0;url=http://www.ziel.de/page/">
      <meta name="identifier-url" content="http://www.ziel.de/page/">
      <meta name="language" content="deutsch">
</head>

<body bgcolor=white>

<div align=center>
<font face="arial, helvetica">
Weiterleitung von "www.quelle.de" auf "www.ziel.de/page/"
</font>
<br><br>
<font size=-1>
dies ist nur eine Weiterleitung!
</font>
</div>

</body>
</html>

Beispiel-Formular

> vi /usr/lib/cgi-bin/webtest.cgi
#!/bin/bash

#==============================================================================#
### Variablen

VERSION="v2013090500"

ZEICHENSATZ="UTF-8"
#ZEICHENSATZ="ISO-8859-15"

HINTERGRUNDFARBE="#E0E0FF"
GRAU="#222222"
ROT="#EE0000"

STARTZEIT="$(date +'%F %T')"

#------------------------------------------------------------------------------#
### Beispiele für wichtige Umgebungsvariablen
#
# HTTP_HOST=192.168.0.10
# SCRIPT_FILENAME=/usr/lib/cgi-bin/webtest.cgi
# REQUEST_URI=/cgi-bin/webtest.cgi?GET-VARIABLE=Wert01
# SCRIPT_NAME=/cgi-bin/webtest.cgi
# HTTP_REFERER=http://192.168.0.10/cgi-bin/webtest.cgi
# REMOTE_ADDR=192.168.0.10
# SERVER_NAME=192.168.0.10
# CONTENT_LENGTH=22
# QUERY_STRING=GET-VARIABLE=Wert01
# SERVER_ADDR=192.168.0.10
#
#==============================================================================#
### Kopf / ANFANG

echo "Content-Type: text/html; charset=${ZEICHENSATZ}

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
   'http://www.w3.org/TR/html4/loose.dtd'>
<html>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=${ZEICHENSATZ}' />
  <title>
    HTML-Testseite Version ${VERSION}
  </title>
    <meta name='date' content='${STARTZEIT}' />
    <meta name='keywords' content='webtest' />
  </head>
  <body bgcolor='${HINTERGRUNDFARBE}'>
"

#==============================================================================#
### Datenstrom aus dem POST-Kanal in eine Variable schreiben

POSTDATEN=$(cat | tr -d '\r')

#==============================================================================#
### SEITENINHALT

if [ -z "${POSTDATEN}" ] ; then
### wenn keine Daten per POST gekommen sind, dann wird dieser Teil angezeigt

  if [ -z "${QUERY_STRING}" ] ; then
  echo "
    <h1><U>unterstrichene &Uuml;berschrift</U></h1>

    <pre>
      Diese Text wird in Courier mit allen normalen Zeilenumbr&uuml;chen
      und allen Leerzeichen angezeigt.
    </pre>

    <B>Diese Zeile ist FETT gedruckt.</B>

    <hr>

    <form method=post enctype=text/plain action='${SCRIPT_NAME}'>
      <p>
        <input type='checkbox' name='POST-VARIABLE' value='Wert01'>
          <a href='http://${SERVER_NAME}${SCRIPT_NAME}?GET-VARIABLE=Wert01'>
            <font color='${GRAU}'>
              Wert01
            </font>
          </a>
        <br>
        <input type='checkbox' name='POST-VARIABLE' value='Wert02' checked>
          <a href='http://${SERVER_NAME}${SCRIPT_NAME}?GET-VARIABLE=Wert02'>
            <font color='${ROT}'>
              Wert02
            </font>
          </a>
        <br>
      </p>
      <input type=submit value= Absenden >
    </form>
    "

  else
  ### wenn keine Daten per POST gekommen sind, dann wird dieser Teil angezeigt
    echo "
      <hr>
        <a href='http://${SERVER_NAME}${SCRIPT_NAME}'>
          http://${SERVER_NAME}${SCRIPT_NAME}
        </a>
      <hr>
      <h1>&uuml;bertragene Daten per GET</h1>
      <pre>
${QUERY_STRING}
      </pre>
    "
  fi

#------------------------------------------------------------------------------#
else
### wenn  Daten per POST gekommen sind, dann werden hier die POST-Daten angezeigt

  echo "
    <hr>
      <a href='http://${SERVER_NAME}${SCRIPT_NAME}'>
        http://${SERVER_NAME}${SCRIPT_NAME}
      </a>
    <hr>
    <h1>&uuml;bertragene Daten per POST</h1>
    <pre>
${POSTDATEN}
    </pre>
  "

fi

#==============================================================================#
### Fuss / ENDE

echo "
  </body>
</html>
"

#==============================================================================#

HTML-Code beim ersten Aufruf (ohne POST-Daten):

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
   'http://www.w3.org/TR/html4/loose.dtd'>
<html>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
  <title>
    HTML-Testseite Version v2013090500
  </title>
    <meta name='date' content='2013-09-05 14:03:27' />
    <meta name='keywords' content='webtest' />
  </head>
  <body bgcolor='#E0E0FF'>


    <h1><U>unterstrichene &Uuml;berschrift</U></h1>

    <pre>
      Diese Text wird in Courier mit allen normalen Zeilenumbr&uuml;chen
      und allen Leerzeichen angezeigt.
    </pre>

    <B>Diese Zeile ist FETT gedruckt.</B>

    <hr>

    <form method=post enctype=text/plain action='/cgi-bin/webtest.cgi'>
      <p>
        <input type='checkbox' name='POST-VARIABLE' value='Wert01'>
          <a href='http://192.168.0.10/cgi-bin/webtest.cgi?GET-VARIABLE=Wert01'>
            <font color='#222222'>
              Wert01
            </font>
          </a>
        <br>
        <input type='checkbox' name='POST-VARIABLE' value='Wert02' checked>
          <a href='http://192.168.0.10/cgi-bin/webtest.cgi?GET-VARIABLE=Wert02'>
            <font color='#EE0000'>
              Wert02
            </font>
          </a>
        <br>
      </p>
      <input type=submit value= Absenden >
    </form>
    

  </body>
</html>

HTML-Code nach dem der Knopf "Absenden" gedrückt wurde (mit POST-Daten):

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
   'http://www.w3.org/TR/html4/loose.dtd'>
<html>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
  <title>
    HTML-Testseite Version v2013090500
  </title>
    <meta name='date' content='2013-09-05 14:05:27' />
    <meta name='keywords' content='webtest' />
  </head>
  <body bgcolor='#E0E0FF'>


    <hr>
      <a href='http://192.168.0.10/cgi-bin/webtest.cgi'>
        http://192.168.0.10/cgi-bin/webtest.cgi
      </a>
    <hr>
    <h1>&uuml;bertragene Daten per POST</h1>
    <pre>
POST-VARIABLE=Wert02
    </pre>
  

  </body>
</html>

HTML-Code nach dem der Link "Wert01" gedrückt wurde (mit GET-Daten):

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
   'http://www.w3.org/TR/html4/loose.dtd'>
<html>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
  <title>
    HTML-Testseite Version v2013090500
  </title>
    <meta name='date' content='2013-09-05 14:07:06' />
    <meta name='keywords' content='webtest' />
  </head>
  <body bgcolor='#E0E0FF'>


      <hr>
        <a href='http://192.168.0.10/cgi-bin/webtest.cgi'>
          http://192.168.0.10/cgi-bin/webtest.cgi
        </a>
      <hr>
      <h1>&uuml;bertragene Daten per GET</h1>
      <pre>
GET-VARIABLE=Wert01
      </pre>
    

  </body>
</html>

Beispiel-Tabelle

Der Kode wurde hauptsächlich in HTML Version 4 mit ein paar CSS-Elementen verfasst.

<!DOCTYPE html>
<html lang="de-DE">
	<head>
		<meta charset="UTF-8">
		<style type="text/css">
		</style>
		<title> Klausur </title>
	</head>
	<body>
		<h1> Klausur </h1>
		<h2> Informatik </h2>
		<h3> E-Phase </h3>
		<h4> Raum 033 </h4>
		<h5> Freitag </h5>
		<h6> 7. - 8. Stunde </h6>
		<p> Frau Lehrerin </p>
		<br>
		<br>
		<table border="3" width="100%" height="300px" cellpadding="3" style="color: black">
			<tr>
				<th> links </th>
				<th> mitte </th>
				<th> rechts </th>
			</tr>
			<tr>
				<td valign="top" align="left"> links-oben </td>
				<td valign="top" align="center"> zentriert-oben </td>
				<td valign="top" align="right"> rechts-oben </td>
			</tr>
			<tr>
				<td valign="middle" align="left"> links-mitte </td>
				<td valign="middle" align="center"> zentriert-mitte </td>
				<td valign="middle" align="right"> rechts-mitte </td>
			</tr>
			<tr>
				<td valign="bottom" align="left"> links-unten </td>
				<td valign="bottom" align="center"> zentriert-unten </td>
				<td valign="bottom" align="right"> rechts-unten </td>
			</tr>
		</table>
	</body>
</html>

Knöpfe und Schalte im HTML-Dokument

FIXME

index.html
<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
 
        <title>Hello World!</title>
 
        <!-- <link rel="icon" href="img/favicon.svg"> -->
        <!-- <link rel="stylesheet" href="css/styles.css"> -->
 
        <!-- <script type="module" src="js/script.js"></script> -->
        <!-- <script defer nomodule src="js/script.fallback.js"></script> -->
    </head>
    <body>
        <p>Hello World!</p>
        <input type="radio" name="Test 0" value="Null" id="id1" checked>      <label for="id1">Radio 1</label> <br>
        <input type="radio" name="Test 1" value="Eins" id="id2">              <label for="id2">Radio 2</label> <br>
        <input type="checkbox" name="Test 2" value="Zwei" id="id3" autofocus> <label for="id3">Check 1</label> <br>
        <input type="checkbox" name="Test 3" value="Drei" id="id4" required>  <label for="id4">Check 2</label> <br>
        <input type="checkbox" name="Test 4" value="Drei" id="id5" checked>   <label for="id5">Check 3</label> <br>
    </body>
</html>

GET- und POST-Test in einer Tabelle

cgi-bin/test.cgi
#!/usr/bin/env bash
 
#==============================================================================#
# Hiermit kann man Datenübertraun per GET und per POST testen.
#==============================================================================#
 
#------------------------------------------------------------------------------#
# in FreeBSD:
# chown www:www cgi-bin/test.cgi ; chmod 0770 cgi-bin/test.cgi
#------------------------------------------------------------------------------#
 
BS="$(uname -s)"
if [ "${BS}" = FreeBSD ] ; then
	UMDREHEN="tail -r"
elif [ "${BS}" = Linux ] ; then
	UMDREHEN="tac"
fi
 
### damit awk ein einheitliches Dezimalzeichen verwendet
LANG="C.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
KOMMAzuPUNKT="tr -s ',' '.'"
AWK='awk'
STARTZEIT="$(date +'%FT%T')"
BASE64ZEICHEN='+/0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
 
#==============================================================================#
 
POSTDATEN=$(cat | tr -d '\r')
 
echo "Content-Type: text/html; charset=utf-8
 
<!DOCTYPE html>
<html lang='de'>
	<head>
	<meta charset='utf-8'>
	<meta name='viewport' content='width=device-width, initial-scale=1.0'>
	<meta name='date' content='${STARTZEIT}' />
	<title>Test</title>
	<!--
		<link rel='stylesheet' href='style.css'>
	-->
	<style>
		body  { background-color: #E0E0FF; }
		tbody  { background-color: #999999; }
 
		tr.rot { background-color: #F08080; }
		tr.gelb { background-color: #F0F080; }
		tr.gruen { background-color: #80F080; }
		tr.blau { background-color: #8080F0; }
 
		tr.dunkelblau { background-color: #BBBBBB; }
		tr.hellblau { background-color: #CCCCFF; }
 
		tr:hover {background-color: #AAAAFF;}
	</style>
</head>
<body>
<H1>
<a href='/cgi-bin/test.cgi' title='Test' rel='nofollow'>GET- und POST-Test in einer Tabelle</a>
</H1>
<table>
  <thead>
	<tr class='dunkelblau'>
		<th> HTTP_REFERER </th>
		<th> ${HTTP_REFERER} </th>
    </tr>
	<tr class='dunkelblau'>
		<th> REQUEST_URI </th>
		<th> ${REQUEST_URI} </th>
    </tr>
	<tr class='dunkelblau'>
		<th> QUERY_STRING </th>
		<th> ${QUERY_STRING} </th>
    </tr>
	<tr class='dunkelblau'>
		<th> POSTDATEN </th>
		<th> ${POSTDATEN} </th>
    </tr>
  </thead>
  <tbody>
	<tr class='dunkelblau'>
		<td valign='middle' align='center' colspan='2'>
			<form method=get enctype=text/plain action='/cgi-bin/test.cgi'>
			<input type='submit' name='get-test' value='GET:${BASE64ZEICHEN}' autofocus>
			</form>
		</td>
	</tr>
	<tr class='dunkelblau'>
		<td valign='middle' align='center' colspan='2'>
			<form method=post enctype=text/plain action='/cgi-bin/test.cgi'>
			<input type='submit' name='post-test' value='POST:${BASE64ZEICHEN}'>
			</form>
		</td>
	</tr>
  </tbody>
</table>
</html>
"
 
#==============================================================================#

frisch nach dem Start oder wenn man auf die Überschrift "GET- und POST-Test in einer Tabelle" gedrückt hat GET: auf den oberen Knopf gedrückt POST: auf den unteren Knopf gedrückt

Nur bei der Übertragungsmethode "POST" werden keine Zeichen ("+", "/", "=") ins HTML-Format konvertiert! Da diese Zeichen aber Teil des Base64-Zeichensatzes sind, wird deutlich, dass man per GET keinen Base64-Code übertragen kann!

POST-Test mit versteckten Daten

Mit dem untersten Knopf werden versteckte POST-Daten übertragen. In dem oberen Beispiel sind die POST-Daten als Knopfbeschriftung zu sehen, was bei einer größeren Datenmenge unschön ist.

cgi-bin/test-post.cgi
#!/usr/bin/env bash
 
#==============================================================================#
# Hiermit kann man Datenübertraun per POST testen.
#==============================================================================#
# +/0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
#------------------------------------------------------------------------------#
# chown www:www /home/http/cgi-bin/test-post.cgi ; chmod 0770 /home/http/cgi-bin/test-post.cgi
#------------------------------------------------------------------------------#
 
BS="$(uname -s)"
if [ "${BS}" = FreeBSD ] ; then
	UMDREHEN="tail -r"
elif [ "${BS}" = Linux ] ; then
	UMDREHEN="tac"
fi
 
### damit awk ein einheitliches Dezimalzeichen verwendet
LANG="C.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
KOMMAzuPUNKT="tr -s ',' '.'"
AWK='awk'
STARTZEIT="$(date +'%FT%T')"
BASE64ZEICHEN='+/0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
 
#==============================================================================#
 
POSTDATEN=$(cat | tr -d '\r')
 
echo "Content-Type: text/html; charset=utf-8
 
<!DOCTYPE html>
<html lang='de'>
	<head>
	<meta charset='utf-8'>
	<meta name='viewport' content='width=device-width, initial-scale=1.0'>
	<meta name='date' content='${STARTZEIT}' />
	<title>Test</title>
	<!--
		<link rel='stylesheet' href='style.css'>
	-->
	<style>
		body  { background-color: #E0E0FF; }
		tbody  { background-color: #999999; }
 
		tr.rot { background-color: #F08080; }
		tr.gelb { background-color: #F0F080; }
		tr.gruen { background-color: #80F080; }
		tr.blau { background-color: #8080F0; }
 
		tr.dunkelblau { background-color: #BBBBBB; }
		tr.hellblau { background-color: #CCCCFF; }
 
		tr:hover {background-color: #AAAAFF;}
	</style>
</head>
<body>
<H1>
<a href='/cgi-bin/test-post.cgi' title='Test' rel='nofollow'>POST-Test mit versteckten Daten</a>
</H1>
<table>
  <thead>
	<tr class='dunkelblau'>
		<th>POSTDATEN (Std)</th>
		<th>${POSTDATEN}</th>
    </tr>
	<tr class='dunkelblau'>
		<th>POSTDATEN (pre)</th>
		<th><pre>${POSTDATEN}</pre></th>
    </tr>
  </thead>
  <tbody>
	<tr class='dunkelblau'>
		<td valign='middle' align='center' colspan='2'>
			<form method=post enctype=text/plain action='/cgi-bin/test-post.cgi'>
			<input type='hidden' name='schlüssel 1' value='1. POST, mit Zeilenumbruch:
			${BASE64ZEICHEN}'>
			<input type='submit' name='submit' value='Hidden+Submit' autofocus>
			</form>
		</td>
	</tr>
	<tr class='dunkelblau'>
		<td valign='middle' align='center' colspan='2'>
			<form method=post enctype=text/plain action='/cgi-bin/test-post.cgi'>
			<input type='hidden' name='schlüssel 2' value='2. POST: Hidden 1'>
			<input type='hidden' name='schlüssel 3' value='3. POST: Hidden 2'>
			<input type='hidden' name='schlüssel 4' value='4. POST, mit Zeilenumbruch:
			Hidden 3'>
			<input type='submit' name='submit' value='Multihidden+Submit' autofocus>
			</form>
		</td>
	</tr>
  </tbody>
</table>
</html>
"
 
#==============================================================================#

Die POST-Daten sind nicht zu sehen... ...und doch werden hier POST-Daten übertragen, die vorher nicht sichtbar waren. Wenn es mehrere Input-Hidden-Sektionen gibt, dann werden die Schlüssel-Wert-Paare von allen übertragen.

Hinweise zu POST

kann keine Zeilenumbrüche
<input type="text">
kann Zeilenumbrüche
<textarea></textarea>
<input type="hidden">
<input type="submit">