<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.59.186</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.59.186"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.47.59.186"/>
	<updated>2026-05-06T19:48:18Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=1463</id>
		<title>Real URL (realurl)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=1463"/>
		<updated>2008-07-25T15:00:27Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Alte Simulatic Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
===Alte Simulatic Links=== &lt;br /&gt;
von außen erhalten...&lt;br /&gt;
 RewriteRule ([0-9]+)\.([0-9]+)\.html$ http:///index.php?id=$1&amp;amp;type=$2  [R=301,L]&lt;br /&gt;
Sprich: meineDomain.de/123.html wird zu meineDomain.de/index.php?id=123&lt;br /&gt;
Wenn die Seiten andere IDs beinhalten dann kann man alte Seiten per Redirect umleiten (siehe htaccess)&lt;br /&gt;
&lt;br /&gt;
===Lange Pfade abkürzen===&lt;br /&gt;
Manchmal hat man sehr lange Pfade wenn die Navigation in Unterordnern liegt. Mit der Extension &amp;#039;&amp;#039;&amp;#039;aoe_realurlpath&amp;#039;&amp;#039;&amp;#039; kann man diese Teile &amp;quot;cutten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vorgehen&lt;br /&gt;
* Extension installieren&lt;br /&gt;
* realurl konfiguration anpassen&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
// -&amp;gt; delete this&lt;br /&gt;
//            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
// -&amp;gt; use this&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:aoe_realurlpath/class.tx_aoerealurlpath_pagepath.php:&amp;amp;tx_aoerealurlpath_pagepath-&amp;gt;main&amp;#039;&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
* Fehlermeldung Pfad/sowieso/ not found nearest match is&lt;br /&gt;
** Problem bei der Konfigurationsdatei (Leerzeichen vorne, falsche id etc.)&lt;br /&gt;
* Stylesheets, Bilder etc. aus TypoScript Konfiguration werden nicht gefunden.&lt;br /&gt;
** BaseURL stimmt nicht config.baseURL = http://www.meineDomain.de/&lt;br /&gt;
* Konfiguration loswerden:&lt;br /&gt;
** realurl und urltools Verweisen in der localconf auf ihr Konfigurationsfile. Alle Einträge und die Dateien können gelöscht werden wenn nicht mehr benötigt.&lt;br /&gt;
&lt;br /&gt;
== Quickinfo ==&lt;br /&gt;
&lt;br /&gt;
* Configure Apache&lt;br /&gt;
* TypoScript&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config{&lt;br /&gt;
   simulateStaticDocuments = 0&lt;br /&gt;
   tx_realurl_enable = 1&lt;br /&gt;
   baseURL = http://www.grauff.com/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* First try autoconfiguration&lt;br /&gt;
* If doesen&amp;#039;t work switch off and use manual configuration or use aeurltool (or realurlsettings) (easier to configure and contains working standard configuration)&lt;br /&gt;
* look section tipps for better configuration&lt;br /&gt;
&lt;br /&gt;
== Configure Apache ==&lt;br /&gt;
RealURLs work by providing &amp;#039;virtual paths&amp;#039; to &amp;#039;virtual files&amp;#039;. These don&amp;#039;t actually exist on the file-system, so you must tell Apache to let a PHP-script handle the request if it can&amp;#039;t find the file. This way, all URLs to pages (like www.server.com/products/product1/left.html) will be &amp;#039;redirected&amp;#039; to /index.php, which will handle the translation of the URL into GET parameters. Real files (like images, the TYPO3 backend, static html-files, etc.) will still be handled by Apache itself though.&lt;br /&gt;
&lt;br /&gt;
You should put the supplied sample .htaccess file (called _.htaccess) in the root of your TYPO3-installation.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you could include the following lines in your httpd.conf, probably in the VirtualHost-section. Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 127.0.0.1&amp;gt;&lt;br /&gt;
DocumentRoot /var/www/typo3/dev/testsite-3/&lt;br /&gt;
ServerName www.test1.intra&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* /index.php&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTICE: USING httpd.conf is currently known not to work since t3lib_div::getIndpEnv(&amp;#039;TYPO3_SITE_URL&amp;#039;) is not correct. Solution remains to be found.&lt;br /&gt;
&lt;br /&gt;
If you put it into a .htaccess file it has to look slightly different, basically stripping the leading slashes (“/”):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
#RewriteBase /mySubfolderIfNeeded&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* index.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will tell Apache that it should rewrite every URL that&amp;#039;s not a filename, directory or symlink. It leaves everything starting with /typo3/ alone too.&lt;br /&gt;
&lt;br /&gt;
Notice: For this work you need the Apache module “mod_rewrite”!&lt;br /&gt;
&lt;br /&gt;
Also refer to the Appendix for extended information on mod_rewrite issues.&lt;br /&gt;
&lt;br /&gt;
== TS Config ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.simulateStaticDocuments = 0&lt;br /&gt;
config.baseURL = http://mydomain.com/&lt;br /&gt;
config.tx_realurl_enable = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== localconf.php Configuration ==&lt;br /&gt;
with the variable $TYPO3_CONF_VARS[&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
This is managed automatically for newer realurl versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * aeUrlTool default realurl configuration&lt;br /&gt;
 * based on realurl-configuration of news.typo3.org&lt;br /&gt;
 * 	http://news.typo3.org/about/realurl-configuration/&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;] = array ( &lt;br /&gt;
    &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
        &amp;#039;init&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;enableCHashCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;appendMissingSlash&amp;#039; =&amp;gt; &amp;#039;ifNotFile&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlDecodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlEncodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;redirects&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;preVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;no_cache&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;nc&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;0&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;2&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;lang&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;de&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;en&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fixedPostVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;postVarSets&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;archive&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[year]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[month]&amp;#039;,&lt;br /&gt;
                        &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;january&amp;#039; =&amp;gt; &amp;#039;01&amp;#039;,&lt;br /&gt;
                            &amp;#039;february&amp;#039; =&amp;gt; &amp;#039;02&amp;#039;,&lt;br /&gt;
                            &amp;#039;march&amp;#039; =&amp;gt; &amp;#039;03&amp;#039;,&lt;br /&gt;
                            &amp;#039;april&amp;#039; =&amp;gt; &amp;#039;04&amp;#039;,&lt;br /&gt;
                            &amp;#039;may&amp;#039; =&amp;gt; &amp;#039;05&amp;#039;,&lt;br /&gt;
                            &amp;#039;june&amp;#039; =&amp;gt; &amp;#039;06&amp;#039;,&lt;br /&gt;
                            &amp;#039;july&amp;#039; =&amp;gt; &amp;#039;07&amp;#039;,&lt;br /&gt;
                            &amp;#039;august&amp;#039; =&amp;gt; &amp;#039;08&amp;#039;,&lt;br /&gt;
                            &amp;#039;september&amp;#039; =&amp;gt; &amp;#039;09&amp;#039;,&lt;br /&gt;
                            &amp;#039;october&amp;#039; =&amp;gt; &amp;#039;10&amp;#039;,&lt;br /&gt;
                            &amp;#039;november&amp;#039; =&amp;gt; &amp;#039;11&amp;#039;,&lt;br /&gt;
                            &amp;#039;december&amp;#039; =&amp;gt; &amp;#039;12&amp;#039;,&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;browse&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[pointer]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;select_category&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[cat]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;article&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[tt_news]&amp;#039;,&lt;br /&gt;
                        &amp;#039;lookUpTable&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;table&amp;#039; =&amp;gt; &amp;#039;tt_news&amp;#039;,&lt;br /&gt;
                            &amp;#039;id_field&amp;#039; =&amp;gt; &amp;#039;uid&amp;#039;,&lt;br /&gt;
                            &amp;#039;alias_field&amp;#039; =&amp;gt; &amp;#039;title&amp;#039;,&lt;br /&gt;
                            &amp;#039;addWhereClause&amp;#039; =&amp;gt; &amp;#039; AND NOT deleted&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache_conf&amp;#039; =&amp;gt; array (&lt;br /&gt;
                                &amp;#039;strtolower&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                                &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
                            ),&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[swords]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fileName&amp;#039; =&amp;gt; array (&lt;br /&gt;
//&lt;br /&gt;
// if you don&amp;#039;t want .html-URLs set the following to &amp;quot;false&amp;quot; (e.g. &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; false,)&lt;br /&gt;
// then you get http://www.yourdomain.com/imprint/ instead of http://www.yourdomain.com/imprint.html&lt;br /&gt;
//&lt;br /&gt;
            &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; true,&lt;br /&gt;
            &amp;#039;index&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;rss.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;100&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rss091.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;101&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rdf.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;102&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;atom.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;103&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Htaccess&amp;diff=1566</id>
		<title>Htaccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Htaccess&amp;diff=1566"/>
		<updated>2008-07-25T14:49:51Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Erlaubte Anweisungen in .htaccess-Dateien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anwendung von .htaccess - Dateien ==&lt;br /&gt;
=== Weiterführende Links: ===&lt;br /&gt;
http://httpd.apache.org/docs/1.3/howto/htaccess.html&lt;br /&gt;
&lt;br /&gt;
von: http://www.uni-duesseldorf.de/Service/Webmaster/htaccess.php3 Juli 2006&lt;br /&gt;
&lt;br /&gt;
Referenz: Apache Manual: http://www.uni-duesseldorf.de/apache-manual/&lt;br /&gt;
&lt;br /&gt;
=== Wozu braucht man das ?===&lt;br /&gt;
An wen ein HTTP-Server Dokumente herausgibt, welche spezielle Verarbeitung er u.U. bei einer spezifischen Anforderung (einem request) durchführt - all das wird zunächst durch eine von der Server-Software abhängigen Konfiguration bestimmt, die ein Administrator - ein Webmaster - eingerichtet hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oft ist es aber wünschenswert, daß einzelne Verantwortliche für eine Dokumentenhierarchie auf dem Web-Server selbst ohne Intervention des Webmasters Setzungen vornehmen können, daß z.B. auf einzelne Dokumente oder alle in einem bestimmten Verzeichnis nur ein Zugriff aus bestimmten Domains oder mit verifiziertem Usernamen möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beim Apache-HTTP-Server wie seinem Vorgänger, dem NCSA-httpd, gibt es diese Möglichkeiten durch die Einrichtung von .htaccess-Dateien in dem jeweiligen Verzeichnis. In der folgenden Darstellung wird als Referenz jeweils ein Verweis auf den entsprechenden Abschnitt in der lokale Kopie der Apache-Dokumentation für die Version 1.2 gegeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Achtung:&amp;#039;&amp;#039;&amp;#039; In der Server-Konfiguration kann ein anderer Name als .htaccess vereinbart sein (AccesFileName-Direkt ive).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zweiter Hinweis:&amp;#039;&amp;#039;&amp;#039; Die Datei muß für den HTTP-Server lesbar sein, z.B. dadurch erreicht, daß sie öffentlich lesbar ist:&lt;br /&gt;
&lt;br /&gt;
 chmod 644 .htaccess &lt;br /&gt;
&lt;br /&gt;
=== Zugriffsbeschränkung auf eine Domain === &lt;br /&gt;
==== für alle Dateien in einem Verzeichnis ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 order deny,allow&lt;br /&gt;
 deny  from all&lt;br /&gt;
 allow from .uni-duesseldorf.de 134.99 &lt;br /&gt;
&lt;br /&gt;
Alle Dateien in dem Verzeichnis werden nur an Clients ausgeliefert, die eine IP-Adresse beginnend mit 134.99 oder einen Hostnamen endend mit uni-duesseldorf.de besitzen; anderenfalls erfolgt eine Fehlermeldung des Servers (403 Forbidden).&lt;br /&gt;
&lt;br /&gt;
Natürlich genügt in vielen Fällen eine der Alternativen. Beachten Sie dabei die Unterschiede:&lt;br /&gt;
&lt;br /&gt;
* Die Angabe des Domain-Namens allein schließt - bewußt oder nicht - den Zugriff von PC&amp;#039;s aus, die nicht im Domain Name System (DNS) registriert sind.&lt;br /&gt;
* Die Angabe des IP-Subnetzes allein kann andere ausschließen, die organisatorisch zur gleichen Domain gehören, technisch aber in einem anderen Subnetz hängen. &lt;br /&gt;
&lt;br /&gt;
Wie lässt sich diese Zugriffsbeschränkung testen? Normalerweise benötigt man dazu einen Internet-Zugang über einen anderen Provider (T-Online, AOL, Compuserve etc.). Oder man benutzt einen Browser auf dem Server selbst z.B. in folgender Weise:&lt;br /&gt;
&lt;br /&gt;
 lynx http://localhost/Service/Webmaster/htaccess.phtml &lt;br /&gt;
&lt;br /&gt;
Der Zugriff erfolgt dann über das Loopback-Interface mit der IP-Adresse 127.0.0.1.&lt;br /&gt;
&lt;br /&gt;
Referenz: order, deny, allow. &lt;br /&gt;
&lt;br /&gt;
==== für einzelne Dateien ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files huh*.html&amp;gt;&lt;br /&gt;
 order deny,allow&lt;br /&gt;
 deny  from all&lt;br /&gt;
 allow from .uni-duesseldorf.de 134.99&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zugriffsbeschränkung wie oben gilt jetzt nur für die Dateien, deren Namen auf das hinter Files angegebene Muster passen. Es kann ein einzelner Name angegeben werden oder ein Muster mit den Wildcard-Zeichen ? für ein beliebiges einzelnes Zeichen oder * für eine beliebige Folge von Zeichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schließlich sind auch feinere Muster über reguläre Ausdrücke möglich. Die Syntax der Files-Direktive dafür ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Files ~ &amp;quot;regexp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Referenz: &amp;lt;Files&amp;gt;, order, deny, allow.&lt;br /&gt;
&lt;br /&gt;
=== Zugriffsbeschränkung über Passwort ===&lt;br /&gt;
==== für ein Verzeichnis ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName MeyersLeute&lt;br /&gt;
 AuthUserFile /home/meyer/passwd&lt;br /&gt;
 require valid-user&lt;br /&gt;
&lt;br /&gt;
Dokumente in einem Verzeichnis mit dieser .htaccess-Datei (oder einem Unterverzeichnis) können erst nach Eingabe eines gültigen Benutzernamen und Passwortes gelesen werden. Der Wert hinter AuthName wird vom Browser in der Dialog-Box für die Passwortabfrage angezeigt und dient gleichzeitig dazu, andere Dokumente mit dem gleichen Schutz zu erkennen und einmal eingelesene Werte für Username und Password ohne erneute Abfrage unmittelbar zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Hinter AuthUserFile steht der Pfad der Passwortdatei, die die Benutzernamen und (verschlüsselten) Passwörter enthält. Sie sieht etwa so aus:&lt;br /&gt;
&lt;br /&gt;
 /home/meyer/passwd&lt;br /&gt;
&lt;br /&gt;
 meyer:xm.kPd4VJc3Fo&lt;br /&gt;
 mueller:eJFQCL8GftDXI&lt;br /&gt;
&lt;br /&gt;
Auch die Passwortdatei muß für den HTTP-Server lesbar sein. Gerade deshalb sollte sie niemals in demselben Bereich liegen wie die vom Server bedienten Dokumente, da sonst zumindest die gültigen Benutzernamen lesbar wären. (Aus diesem Grund müssen Sie aber u.U. daran denken, auch das entsprechende Verzeichnis - wie /home/meyer im Beispiel - für den HTTP-Server zumindest suchbar zu setzen, also etwa:&lt;br /&gt;
&lt;br /&gt;
    chmod 711 /home/meyer &lt;br /&gt;
&lt;br /&gt;
Angelegt und gepflegt werden kann die Passwortdatei mit dem Programm htpasswd:&lt;br /&gt;
&lt;br /&gt;
    htpasswd -c /home/meyer/passwd meyer&lt;br /&gt;
    htpasswd /home/meyer/passwd mueller &lt;br /&gt;
&lt;br /&gt;
Referenz: AuthType, AuthName, AuthUserFile, require.&lt;br /&gt;
&lt;br /&gt;
==== für einzelne Dateien ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName MeyersLeute&lt;br /&gt;
 AuthUserFile /home/meyer/passwd&lt;br /&gt;
 &amp;lt;Files Huh*.html&amp;gt;&lt;br /&gt;
 require user meyer mueller&lt;br /&gt;
 &amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kombination von 2. und 3. - Passwortschutz für einzelne Dateien in dem aktuellen Verzeichnis. Beim require wird hier noch eine andere Alternative gezeigt: die Aufzählung einzelner Benutzernamen aus der Passwortdatei. Wenn neue Benutzer in der Passwortdatei ergänzt werden, haben diese noch keinen Zugriff auf die so geschützten Seiten.&lt;br /&gt;
&lt;br /&gt;
Wenn die gleiche Liste von Benutzern an mehreren Stellen verwendet werden soll, ist die Definition der Liste über eine Gruppendatei empfehlenswert. Für diese dritte Alternative bzgl. der require-Direktive sind fogende Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
1. In der .htaccess-Datei wird eine Gruppendatei angegeben:&lt;br /&gt;
 AuthGrouprFile /home/meyer/groups&lt;br /&gt;
Für den Ort der Ablage dieser Datei gelten dieselben Erwägungen wie für die Passwortdatei oben.&lt;br /&gt;
2. In der require-Direktive wird jetzt auf eine Gruppendefinition in der Gruppendatei Bezug genommen:&lt;br /&gt;
 require group meyers&lt;br /&gt;
3. Die Gruppendatei ist eine einfache Textdatei mit je einer Gruppendefinition pro Zeile in folgender Form: &lt;br /&gt;
&lt;br /&gt;
 /home/meyer/groups&lt;br /&gt;
 meyers: meyer mueller&lt;br /&gt;
&lt;br /&gt;
Referenz: AuthType, AuthName, AuthUserFile, AuthGroupFile, &amp;lt;Files&amp;gt;, require. &lt;br /&gt;
&lt;br /&gt;
===Spezielle Optionen===&lt;br /&gt;
==== automatischer Index (Directory Listing)====&lt;br /&gt;
ausführliche Infos hier: [[htaccess - Directory Listing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.htaccess&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Options +Indexes&lt;br /&gt;
&lt;br /&gt;
Mittels der Options-Direktive können - so von der globalen Server-Konfiguration her erlaubt - Voreinstellungen für Verarbeitungsoptionen für das aktuelle Verzeichnis und Unterverzeichnisse überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Die gezeigte Variante weist den Server an, bei der Referenz auf das aktuelle Verzeichnis oder ein Unterverzeichnis ein Directory-Listing als Index-Datei automatisch zu generieren. Er macht dies allerdings nur, wenn nicht schon eine Index-Datei (mit vordefiniertem Namen wie index.html) vorhanden ist. Ggf. kann man die hier bekannten Namen mit der Direktive&lt;br /&gt;
&lt;br /&gt;
    DirectoryIndex Welcome.html &lt;br /&gt;
&lt;br /&gt;
einschränken.&lt;br /&gt;
&lt;br /&gt;
Referenz: Options, DirectoryIndex.&lt;br /&gt;
&lt;br /&gt;
=== Weiterleitung mit .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Hinweis: eine Alternative hierfür ist eine PHP Weiterleitung ([[PHP - Tipps und Tricks]])&lt;br /&gt;
Quelle Dr.Web 28.12.2006&lt;br /&gt;
&lt;br /&gt;
Sie können sowohl Zugriffe auf bestimmte Dateien als auch auf Verzeichnisse bequem weiterleiten. Das klappt innerhalb der eigenen Domain, aber auch mit externen Verweisen.&lt;br /&gt;
&lt;br /&gt;
Die Datei .htaccess kann mit jedem Text-Editor bearbeitet werden. Eine Umleitung könnte so aussehen:&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielverzeichnis http://www.drweb.de&lt;br /&gt;
&lt;br /&gt;
Ruft jemand die URL http://www.drweb.de/beispielverzeichnis auf landet er ohne weiteren Zwischenstopp direkt auf der Startseite.&lt;br /&gt;
&lt;br /&gt;
Mit Einzeldateien klappt es auch:&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielseite.shtml http://www.drweb.de&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
 Redirect /beispielseite.shtml neueseite.shtml&lt;br /&gt;
&lt;br /&gt;
Wer mag, kann die gesamte Domain auf eine andere umleiten&lt;br /&gt;
&lt;br /&gt;
 Redirect / http://www.drweb.de/&lt;br /&gt;
&lt;br /&gt;
Nützlich während Bauarbeiten, bei Reparaturen oder wenn Dateien durch andere ersetzt wurden. Da die Umleitung serverseitig geschieht, spielt der Browser des Besuchers keine Rolle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erlaubte Anweisungen in .htaccess-Dateien ==&lt;br /&gt;
&lt;br /&gt;
http://de.selfhtml.org/servercgi/server/htaccess.htm&lt;br /&gt;
&lt;br /&gt;
Auszug (Datum des Zugriffs: 10.9.2007): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Die Anweisung AllowOverride kann nicht innerhalb einer .htaccess notiert werden, sondern wird ausschließlich vom Server-Administrator in der zentralen Konfigurationsdatei vorgegeben. Um den AllowOverride-Wert in Erfahrung zu bringen, benötigen Sie Einsicht in die Serverkonfiguration. Kontaktieren Sie dazu gegebenenfalls Ihren Webhosting-Provider. Dieser kann den Wert auch ändern, falls Sie bestimmte bisher nicht erlaubte Anweisungen verwenden möchten. Im einzelnen gibt es dafür folgende mögliche Werte:&lt;br /&gt;
&lt;br /&gt;
    * Mit AllowOverride None wird der Webserver angewiesen, .htaccess-Dateien zu ignorieren. Das ist im Übrigen die Voreinstellung.&lt;br /&gt;
    * Mit AllowOverride All wird festgelegt, dass in einer .htaccess-Datei (so gut wie) sämtliche zentrale Vorgaben überschrieben und damit abgeändert werden dürfen. Das kann bedeuten, dass Vorhaben, die eigentlich verboten sind (beispielsweise die Ausführung von CGI-Scripts), mit Hilfe einer .htaccess-Datei erlaubt werden. Als Server-Administrator werden Sie diese Anweisung also nur sehr vorsichtig einsetzen.&lt;br /&gt;
    * Mit AllowOverride Options wird festgelegt, dass in einer .htaccess-Datei nach unten Anweisungen zur Steuerung spezieller Verzeichniseigenschaften zulässig sind.&lt;br /&gt;
    * Mit AllowOverride Limit wird festgelegt, dass in einer .htaccess-Datei nach unten Zugriffe von bestimmten Hosts erlaubt oder untersagt werden können.&lt;br /&gt;
    * Mit AllowOverride Indexes wird festgelegt, dass in einer .htaccess-Datei nach unten Anweisungen zur Steuerung von Verzeichnisindizes zulässig sind.&lt;br /&gt;
    * Mit AllowOverride FileInfo wird festgelegt, dass in einer .htaccess-Datei Anweisungen zur Akzeptanz bestimmter Dokumenttypen zulässig sind - beispielsweie, um nach unten Individuelle Fehlermeldungen ausgeben zu können.&lt;br /&gt;
    * Mit AllowOverride AuthConfig wird festgelegt, dass in einer .htaccess-Datei Autorisierungsanweisungen stehen dürfen - das betrifft beispielsweise Regelungen zum nach unten Passwortschutz.&lt;br /&gt;
&lt;br /&gt;
Diese Werte können auch miteinander kombiniert werden. All ist der mächtigste Parameter, mit dem alles das zugelassen wird, was die anderen Parameter steuern.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Ändern muß natürlich der Server neu gestartet werden (bei Debian: apache restart)&lt;br /&gt;
&lt;br /&gt;
== Moved Permanently 301 Redirect ==&lt;br /&gt;
Quelle:http://www.fladi.de/2008/04/28/howto-webseiten-redirect-mit-301/ (25.7.2008)&lt;br /&gt;
&lt;br /&gt;
Was ist ein 301 redirect?&lt;br /&gt;
&lt;br /&gt;
301 redirect ist die wohl beste Möglichkeit das aktuelle Suchmaschinenranking beim Umzug einer Seite oder des gesamten Webauftritts zu behalten. Der Code “301″ steht für “moved permanently” (dauerhaft verschoben). Ein solches Redirect wird in der .htaccess Datei eintragen. Es trägt die Form (alles in einer Zeile):&lt;br /&gt;
&lt;br /&gt;
 redirect 301 pfad/alte/seite/datei.html http://www.domain.de/pfad/neue/seite/datei.html &lt;br /&gt;
&lt;br /&gt;
Beachte, kein “http://www” in das erste Statement zu schreiben. Es muss der komplette Pfad vom Root deines Webservers angegeben werden. Schauen wir uns die Zeile nun nochmal genauer an:&lt;br /&gt;
&lt;br /&gt;
    * “redirect 301″ - die eigentliche Anweisung für den Webserver&lt;br /&gt;
    * “/pfad/alte/seite/datei.html” - die Seite die umgeleitet werden soll&lt;br /&gt;
    * “http://www.domain.de/pfad/neue/seite.datei.html” - die komplette neue URL&lt;br /&gt;
&lt;br /&gt;
Wie reagiert nun ein Suchmaschinen-Spider auf eine solche Umleitung? Die .htaccess wird ja nicht vom Spider ausgelesen, sondern vom Webserver “ausgeführt”. Der Spider jedoch erkennt den Statuscode, den der Webserver liefert. Beim nächsten Update seiner Datenbank sollte die Suchmaschine nun die alte URL aus dem Index werfen und die neue aufnehmen. Häufig kommt es aber auch vor, dass alte und neue URL gemischt auftauchen. Auch leichte Änderungen im Pagerank können auftreten. Es dauert so ca. 6-8 Wochen bis sich die Änderungen an der Seite auch in den Suchergebnissen niederschlagen.&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten von 301 redirect:&lt;br /&gt;
&lt;br /&gt;
   1. Um ALLE Dateien Deiner Domain mithilfe einer .htaccess umzuleiten kannst Du (auf einem Unix/Linux-Webserver) i.d.R. folgendes verwenden:&lt;br /&gt;
 redirect 301 ^(.*)$ http://www.domain.de&lt;br /&gt;
 redirectMatch permanent ^(.*)$ http://www.domain.de&lt;br /&gt;
&lt;br /&gt;
Um Deine alte Startseite (index.html) umzuleiten:&lt;br /&gt;
 redirect 301 /index.html http://www.domain.de/index.html&lt;br /&gt;
 redirect permanent /index.html http://www.domain.de/index.html&lt;br /&gt;
&lt;br /&gt;
2. Wenn Du http://domain.de auf http://www.domain.de umleiten möchtest und mod_rewrite auf dem Webserver verfügbar ist, erreichst Du dies durch folgende .htaccess:&lt;br /&gt;
&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteCond %{HTTP_HOST} ^domain\.de&lt;br /&gt;
 RewriteRule ^(.*)$ http://www.domain.de/$1 [R=permanent,L]&lt;br /&gt;
&lt;br /&gt;
 oder&lt;br /&gt;
&lt;br /&gt;
 Options +FollowSymLinks&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteCond %{HTTP_HOST} ^domain\.de$ [NC]&lt;br /&gt;
 RewriteRule ^(.*)$ http://www.domain.de/$1 [R=301,L]&lt;br /&gt;
&lt;br /&gt;
3. Alle .html Dateien auf .php Dateien umzuleiten ist durch mod_rewrite auch kein großes Problem:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine on&lt;br /&gt;
 RewriteBase /&lt;br /&gt;
 RewriteRule (.*).html$ /$1.php&lt;br /&gt;
&lt;br /&gt;
4. Um ein Verzeichnis und alles darunter umzuleiten:&lt;br /&gt;
&lt;br /&gt;
 redirectMatch 301 ^/verzeichnis-alt/(.*) http://www.domain.de/verzeichnis-neu/&lt;br /&gt;
&lt;br /&gt;
=== Warum nicht per META-Tag redirect machen? ===&lt;br /&gt;
&lt;br /&gt;
Die Umleitung per META-Tag erfolgt direkt in der aufgerufenen Seite. Dort wird im HEAD-Teil&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;meta http-equiv=”refresh” content=”0; url=http://www.domain.de/”&amp;gt;&lt;br /&gt;
eingetragen. Hierbei bewirkt das “content=10″, dass der Browser nach 10 Sekunden die darauffolgende URL aufruft. Wenn man “content=0″ einträgt wird die Umleitung sofort ausgeführt. Ein paar alte Browser unterstützen diese Art der Umleitung nicht. Deshalb ist es besser noch zusätzlich den Link (neue Domain) mit anzugeben.&lt;br /&gt;
&lt;br /&gt;
Technisch gesehen liefert die angefragte Seite, wie auch die Seite auf die umgeleitet wird, einen Statuscode “200 OK” zurück. Es sind also zwei unabhängige Seiten. Dementsprechend versucht die Suchmaschinen auch beide Seiten zu indizieren. Hier genau liegt aber das Problem. Denn der Spider des Suchmaschinenbetreibers erkennt die Umleitung und wertet Deine Seite deshalb u.U. ab, da es sich um eine beliebte SPAM-Methode handelt. So könnte man 1000 Domains mit solchen Seiten und jeder Menge Keywords einrichten. Echte Besucher (kein Spider) werden umgeleitet auf die eigentliche Seite. Indiziert wird aber nicht nur die eigentliche Seite sondern auch die 1000 Domains mit Keywords, die meist gar nichts mit dem eingentlichen Inhalt zu tun haben.&lt;br /&gt;
&lt;br /&gt;
Beim 301 redirect wird hingegen nur die echte Zielseite in den Index aufgenommen und durch den Statuscode kann der Suchmaschinenbetreiber zusätzlich noch die veralteten Seite aus dem Index werfen. Dies ist also der beste Weg um alte Seiten auf neue umzuleiten und gleichzeitig wird auch der Page Rank mit übertragen.&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=1456</id>
		<title>Real URL (realurl)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Real_URL_(realurl)&amp;diff=1456"/>
		<updated>2008-07-25T14:43:07Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Tipps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
===Alte Simulatic Links=== &lt;br /&gt;
von außen erhalten...&lt;br /&gt;
 RewriteRule ([0-9]+)\.([0-9]+)\.html$ http:///index.php?id=$1&amp;amp;type=$2  [R=301,L]&lt;br /&gt;
Wenn die Seiten andere IDs beinhalten dann kann man alte Seiten per Redirect umleiten (siehe htaccess)&lt;br /&gt;
&lt;br /&gt;
===Lange Pfade abkürzen===&lt;br /&gt;
Manchmal hat man sehr lange Pfade wenn die Navigation in Unterordnern liegt. Mit der Extension &amp;#039;&amp;#039;&amp;#039;aoe_realurlpath&amp;#039;&amp;#039;&amp;#039; kann man diese Teile &amp;quot;cutten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vorgehen&lt;br /&gt;
* Extension installieren&lt;br /&gt;
* realurl konfiguration anpassen&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
// -&amp;gt; delete this&lt;br /&gt;
//            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
// -&amp;gt; use this&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:aoe_realurlpath/class.tx_aoerealurlpath_pagepath.php:&amp;amp;tx_aoerealurlpath_pagepath-&amp;gt;main&amp;#039;&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
* Fehlermeldung Pfad/sowieso/ not found nearest match is&lt;br /&gt;
** Problem bei der Konfigurationsdatei (Leerzeichen vorne, falsche id etc.)&lt;br /&gt;
* Stylesheets, Bilder etc. aus TypoScript Konfiguration werden nicht gefunden.&lt;br /&gt;
** BaseURL stimmt nicht config.baseURL = http://www.meineDomain.de/&lt;br /&gt;
* Konfiguration loswerden:&lt;br /&gt;
** realurl und urltools Verweisen in der localconf auf ihr Konfigurationsfile. Alle Einträge und die Dateien können gelöscht werden wenn nicht mehr benötigt.&lt;br /&gt;
&lt;br /&gt;
== Quickinfo ==&lt;br /&gt;
&lt;br /&gt;
* Configure Apache&lt;br /&gt;
* TypoScript&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config{&lt;br /&gt;
   simulateStaticDocuments = 0&lt;br /&gt;
   tx_realurl_enable = 1&lt;br /&gt;
   baseURL = http://www.grauff.com/&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* First try autoconfiguration&lt;br /&gt;
* If doesen&amp;#039;t work switch off and use manual configuration or use aeurltool (or realurlsettings) (easier to configure and contains working standard configuration)&lt;br /&gt;
* look section tipps for better configuration&lt;br /&gt;
&lt;br /&gt;
== Configure Apache ==&lt;br /&gt;
RealURLs work by providing &amp;#039;virtual paths&amp;#039; to &amp;#039;virtual files&amp;#039;. These don&amp;#039;t actually exist on the file-system, so you must tell Apache to let a PHP-script handle the request if it can&amp;#039;t find the file. This way, all URLs to pages (like www.server.com/products/product1/left.html) will be &amp;#039;redirected&amp;#039; to /index.php, which will handle the translation of the URL into GET parameters. Real files (like images, the TYPO3 backend, static html-files, etc.) will still be handled by Apache itself though.&lt;br /&gt;
&lt;br /&gt;
You should put the supplied sample .htaccess file (called _.htaccess) in the root of your TYPO3-installation.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you could include the following lines in your httpd.conf, probably in the VirtualHost-section. Here is an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 127.0.0.1&amp;gt;&lt;br /&gt;
DocumentRoot /var/www/typo3/dev/testsite-3/&lt;br /&gt;
ServerName www.test1.intra&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* /index.php&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTICE: USING httpd.conf is currently known not to work since t3lib_div::getIndpEnv(&amp;#039;TYPO3_SITE_URL&amp;#039;) is not correct. Solution remains to be found.&lt;br /&gt;
&lt;br /&gt;
If you put it into a .htaccess file it has to look slightly different, basically stripping the leading slashes (“/”):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
#RewriteBase /mySubfolderIfNeeded&lt;br /&gt;
RewriteRule ^/typo3$ - [L]&lt;br /&gt;
RewriteRule ^/typo3/.*$ - [L]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-l&lt;br /&gt;
RewriteRule .* index.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will tell Apache that it should rewrite every URL that&amp;#039;s not a filename, directory or symlink. It leaves everything starting with /typo3/ alone too.&lt;br /&gt;
&lt;br /&gt;
Notice: For this work you need the Apache module “mod_rewrite”!&lt;br /&gt;
&lt;br /&gt;
Also refer to the Appendix for extended information on mod_rewrite issues.&lt;br /&gt;
&lt;br /&gt;
== TS Config ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.simulateStaticDocuments = 0&lt;br /&gt;
config.baseURL = http://mydomain.com/&lt;br /&gt;
config.tx_realurl_enable = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== localconf.php Configuration ==&lt;br /&gt;
with the variable $TYPO3_CONF_VARS[&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
This is managed automatically for newer realurl versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * aeUrlTool default realurl configuration&lt;br /&gt;
 * based on realurl-configuration of news.typo3.org&lt;br /&gt;
 * 	http://news.typo3.org/about/realurl-configuration/&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$GLOBALS[&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;EXTCONF&amp;#039;][&amp;#039;realurl&amp;#039;] = array ( &lt;br /&gt;
    &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
        &amp;#039;init&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;enableCHashCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;appendMissingSlash&amp;#039; =&amp;gt; &amp;#039;ifNotFile&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlDecodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
            &amp;#039;enableUrlEncodeCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;redirects&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;preVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;no_cache&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;nc&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;0&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
            &amp;#039;2&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;lang&amp;#039;,&lt;br /&gt;
                &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;de&amp;#039; =&amp;gt; &amp;#039;de&amp;#039;,&lt;br /&gt;
                    &amp;#039;en&amp;#039; =&amp;gt; &amp;#039;en&amp;#039;,&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;noMatch&amp;#039; =&amp;gt; &amp;#039;bypass&amp;#039;,&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;pagePath&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;user&amp;#039;,&lt;br /&gt;
            &amp;#039;userFunc&amp;#039; =&amp;gt; &amp;#039;EXT:realurl/class.tx_realurl_advanced.php:&amp;amp;tx_realurl_advanced-&amp;gt;main&amp;#039;,&lt;br /&gt;
            &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
            &amp;#039;languageGetVar&amp;#039; =&amp;gt; &amp;#039;L&amp;#039;,&lt;br /&gt;
            &amp;#039;expireDays&amp;#039; =&amp;gt; &amp;#039;7&amp;#039;,&lt;br /&gt;
            &amp;#039;rootpage_id&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fixedPostVars&amp;#039; =&amp;gt; array (&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;postVarSets&amp;#039; =&amp;gt; array (&lt;br /&gt;
            &amp;#039;_DEFAULT&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;archive&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[year]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[month]&amp;#039;,&lt;br /&gt;
                        &amp;#039;valueMap&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;january&amp;#039; =&amp;gt; &amp;#039;01&amp;#039;,&lt;br /&gt;
                            &amp;#039;february&amp;#039; =&amp;gt; &amp;#039;02&amp;#039;,&lt;br /&gt;
                            &amp;#039;march&amp;#039; =&amp;gt; &amp;#039;03&amp;#039;,&lt;br /&gt;
                            &amp;#039;april&amp;#039; =&amp;gt; &amp;#039;04&amp;#039;,&lt;br /&gt;
                            &amp;#039;may&amp;#039; =&amp;gt; &amp;#039;05&amp;#039;,&lt;br /&gt;
                            &amp;#039;june&amp;#039; =&amp;gt; &amp;#039;06&amp;#039;,&lt;br /&gt;
                            &amp;#039;july&amp;#039; =&amp;gt; &amp;#039;07&amp;#039;,&lt;br /&gt;
                            &amp;#039;august&amp;#039; =&amp;gt; &amp;#039;08&amp;#039;,&lt;br /&gt;
                            &amp;#039;september&amp;#039; =&amp;gt; &amp;#039;09&amp;#039;,&lt;br /&gt;
                            &amp;#039;october&amp;#039; =&amp;gt; &amp;#039;10&amp;#039;,&lt;br /&gt;
                            &amp;#039;november&amp;#039; =&amp;gt; &amp;#039;11&amp;#039;,&lt;br /&gt;
                            &amp;#039;december&amp;#039; =&amp;gt; &amp;#039;12&amp;#039;,&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;browse&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[pointer]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;select_category&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[cat]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;article&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;0&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[tt_news]&amp;#039;,&lt;br /&gt;
                        &amp;#039;lookUpTable&amp;#039; =&amp;gt; array (&lt;br /&gt;
                            &amp;#039;table&amp;#039; =&amp;gt; &amp;#039;tt_news&amp;#039;,&lt;br /&gt;
                            &amp;#039;id_field&amp;#039; =&amp;gt; &amp;#039;uid&amp;#039;,&lt;br /&gt;
                            &amp;#039;alias_field&amp;#039; =&amp;gt; &amp;#039;title&amp;#039;,&lt;br /&gt;
                            &amp;#039;addWhereClause&amp;#039; =&amp;gt; &amp;#039; AND NOT deleted&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                            &amp;#039;useUniqueCache_conf&amp;#039; =&amp;gt; array (&lt;br /&gt;
                                &amp;#039;strtolower&amp;#039; =&amp;gt; &amp;#039;1&amp;#039;,&lt;br /&gt;
                                &amp;#039;spaceCharacter&amp;#039; =&amp;gt; &amp;#039;-&amp;#039;,&lt;br /&gt;
                            ),&lt;br /&gt;
                        ),&lt;br /&gt;
                    ),&lt;br /&gt;
                    &amp;#039;1&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;GETvar&amp;#039; =&amp;gt; &amp;#039;tx_ttnews[swords]&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
        &amp;#039;fileName&amp;#039; =&amp;gt; array (&lt;br /&gt;
//&lt;br /&gt;
// if you don&amp;#039;t want .html-URLs set the following to &amp;quot;false&amp;quot; (e.g. &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; false,)&lt;br /&gt;
// then you get http://www.yourdomain.com/imprint/ instead of http://www.yourdomain.com/imprint.html&lt;br /&gt;
//&lt;br /&gt;
            &amp;#039;defaultToHTMLsuffixOnPrev&amp;#039; =&amp;gt; true,&lt;br /&gt;
            &amp;#039;index&amp;#039; =&amp;gt; array (&lt;br /&gt;
                &amp;#039;rss.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;100&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rss091.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;101&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;rdf.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;102&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
                &amp;#039;atom.xml&amp;#039; =&amp;gt; array (&lt;br /&gt;
                    &amp;#039;keyValues&amp;#039; =&amp;gt; array (&lt;br /&gt;
                        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;103&amp;#039;,&lt;br /&gt;
                    ),&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1749</id>
		<title>Mailformplus (tx mailformplus)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1749"/>
		<updated>2008-07-25T05:08:43Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Mit Datenbank-Speicherung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Post processing der Formularfelder ==&lt;br /&gt;
Es gibt einen Hook den man nutzen kann um nach dem Erfolgreichen senden des Formulars die &amp;#039;&amp;#039;&amp;#039;Daten an eigene PHP Skripte&amp;#039;&amp;#039;&amp;#039; zu übergeben.&lt;br /&gt;
(available since 3.7, thx to Martin Kutschker)&lt;br /&gt;
Die Standard Funktionen wie Mails versenden oder Datensätze einfügen werden dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;So gehts:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* define a user-function which will do the processing&lt;br /&gt;
* create a php file with a class and function which will be called when the form was submitted:&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_myext.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
content:&lt;br /&gt;
&lt;br /&gt;
 class tx_myext {&lt;br /&gt;
 function doit(&amp;amp;$params, &amp;amp;$ref){&lt;br /&gt;
 ......&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;#039;&amp;#039;&amp;#039;$params&amp;#039;&amp;#039; enthält dann folgende Werte:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;$params[config]&amp;#039;&amp;#039;&amp;#039; Variablen die mit TypoScript übermittelt wurden. Z.B.:&lt;br /&gt;
 saveUserFunc.dummy = hello &lt;br /&gt;
kann mit&lt;br /&gt;
 $params[config][dummy]&lt;br /&gt;
angesprochen werden.&lt;br /&gt;
&lt;br /&gt;
 $params[data]&lt;br /&gt;
enthält alle übermittelten GET und POST Variablen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== activate the hook with TypoScript ===&lt;br /&gt;
Als erstes muß man die Funktion definieren die ausgeführt werden soll:&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc = EXT:myext/class.tx_myext.php:tx_myext-&amp;gt;doit&lt;br /&gt;
Man kann auch mit TS Variablen definieren die an das Skript übermittelt werden.&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc.dummy = hello&lt;br /&gt;
&lt;br /&gt;
===Beispielkonfiguration (alt-brettheim.de)===&lt;br /&gt;
Version von Ende 2006&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###  mailformplus konfigurieren ###&lt;br /&gt;
#Checkbox &amp;#039;Zustimmung zur Datenspeicherung&amp;#039; soll nicht in der DB gespeichert werden&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_redirect = 547&lt;br /&gt;
  saveLog.exclude = datenspeicherung&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = pupKarte&lt;br /&gt;
  saveDB.fileUpload = fileadmin/pupKarte/&lt;br /&gt;
  saveDB.fileTypes = jpg,jpeg,png,JPG,JPEG,PNG&lt;br /&gt;
  saveDB.fileSize = 1000000&lt;br /&gt;
&lt;br /&gt;
  #Schlüsselfeld der DB-Tabelle&lt;br /&gt;
  #Datenbank zuordnung&lt;br /&gt;
  saveDB.mapping = photo:fileid,geb18:geb18,name:name,vorname:vorname,gebDatum:gebDatum,strasse:strasse,plz:plz,ort:ort,gruppe:gruppe,andereGruppe:andereGruppe,funktionGruppe:funktionGruppe,vabmitglied:vabmitglied,waffentraeger:waffentraeger,dekowaffe:dekowaffe,messer:messer,dolchEinseitig:dolchEinseitig,dolchZweiseitig:dolchZweiseitig,hiebwaffe:hiebwaffe,stichwaffe:stichwaffe,stangenwaffe:stangenwaffe,bogen:bogen,armbrust:armbrust,sonstigeWaffen:sonstigeWaffen,sprengstofferlaubnis:sprengstofferlaubnis,uneingeschraenkt:uneingeschraenkt,sonstigeWaffeArt:sonstigeWaffeArt,behoerde:behoerde,erlaubnisNr:erlaubnisNr,weitereGenehmigung:weitereGenehmigung,mitgliedSeit:mitgliedSeit,weitereVabMitgliedschaft:weitereVabMitgliedschaft,funktionen:funktionen,ehrungen:ehrungen,telefon:telefon,email:email,internWirdBezogen:internWirdBezogen,internErwuenscht:internErwuenscht,sonstiges:sonstiges&lt;br /&gt;
  #nicht ausgefüllte Felder ausfüllen...&lt;br /&gt;
  #saveDB.if_is_empty.dekowaffe = ka&lt;br /&gt;
  #saveDB.debug = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Druckversion des Formulars ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Abschnitt für Printtemplate im mailformplus-HTML-Template:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### begin --&amp;gt;&lt;br /&gt;
You just filled out the following fields:&amp;lt;br&amp;gt;&lt;br /&gt;
Name: ###name###&amp;lt;br&amp;gt;&lt;br /&gt;
Subject: ###subject###&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
you uploaded the following files:&lt;br /&gt;
###photo###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
###cv###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### end --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. Eine Userfunktion zum speichern und übergeben der Session Variable&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?PHP&lt;br /&gt;
####################################&lt;br /&gt;
# example user-function for        #&lt;br /&gt;
# fetching the PRINT-subtemplate   #&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
class user_mailformplus_userfunc {&lt;br /&gt;
    var $cObj;&lt;br /&gt;
&lt;br /&gt;
    # this function returns the &amp;quot;PRINT&amp;quot; subtemplate&lt;br /&gt;
    # if defined in the mailformplus-template&lt;br /&gt;
    # replaced with the values the user has filled out.&lt;br /&gt;
&lt;br /&gt;
    function user_mailformplusPrint($content,$conf) {&lt;br /&gt;
	$printVersion = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;,&amp;quot;th_mailformplus&amp;quot;.$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
	if ($printVersion) {&lt;br /&gt;
	    return $printVersion;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Das zugehörige TS Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
includeLibs.mailformplus_functions = fileadmin/mailformplus_userfunc.inc.php&lt;br /&gt;
################################&lt;br /&gt;
# outputs the PRINT template below normal page content&lt;br /&gt;
# main content&lt;br /&gt;
################################&lt;br /&gt;
&lt;br /&gt;
temp.main_content = COA&lt;br /&gt;
temp.main_content {&lt;br /&gt;
  10 &amp;lt; styles.content.get&lt;br /&gt;
  20 = USER&lt;br /&gt;
  20.userFunc = user_mailformplus_userfunc-&amp;gt;user_mailformplusPrint&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.CONTENT_MAIN &amp;lt; temp.main_content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Beispiele ==&lt;br /&gt;
=== JavaScript zur Validierung und Mailformplus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1.multiPage.2.js (&lt;br /&gt;
if((document.Formular.bremsassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Bremsassistenten - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.esp1.checked==false) &amp;amp;&amp;amp; (document.Formular.esp2.checked==false) &amp;amp;&amp;amp; (document.Formular.esp3.checked==false) &amp;amp;&amp;amp; (document.Formular.esp4.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Elektronisches Stabilitätsprogramm - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.spurassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Spurassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.acc1.checked==false) &amp;amp;&amp;amp; (document.Formular.acc2.checked==false) &amp;amp;&amp;amp; (document.Formular.acc3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Automatischer Abstandsregeltempomat - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.nvs1.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs2.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Nachtsichtassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Beispiel mit verschiedenen Validierungen und Upload-Feld===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_requiredfields = email,name&lt;br /&gt;
  #email_attachment = ###fsvorne###&lt;br /&gt;
  #email_sendtouser &amp;gt;&lt;br /&gt;
  #debug = 1&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
  name {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  strasse {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  plz_ort {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  land {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  telefon {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  mail {&lt;br /&gt;
      errorCheck = email,required&lt;br /&gt;
  }&lt;br /&gt;
  kennzeichen {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  hersteller {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  fahrzeugnummer {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  art {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  antrieb {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  gewicht {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  ezul {&lt;br /&gt;
      errorCheck = date:dd.mm.yyyy&lt;br /&gt;
      errorCheck.dateRange.min = 01.01.1900&lt;br /&gt;
      errorCheck.dateRange.max = 31.12.2010&lt;br /&gt;
  }&lt;br /&gt;
  fsvorne {&lt;br /&gt;
    errorCheck = required&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Vorderseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Vorderseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath### ###fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  fshinten {&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Rückseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp;###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Rückseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath######fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |file end&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline=305,307,309,311]&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fsvorne{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (front)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Front: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fshinten{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (back)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Back: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[global]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Datenbank-Speicherung ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
######################################&lt;br /&gt;
# config for multipage forms&lt;br /&gt;
######################################&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 89]&lt;br /&gt;
plugin.tx_thmailformplus_pi1.multiPage.2.js (&lt;br /&gt;
if((document.Formular.bremsassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Emergency Brake Assistant - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.esp1.checked==false) &amp;amp;&amp;amp; (document.Formular.esp2.checked==false) &amp;amp;&amp;amp; (document.Formular.esp3.checked==false) &amp;amp;&amp;amp; (document.Formular.esp4.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Electronic/Dynamic Stability Control/Program - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.spurassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Lane departure warning/Lane keeping assistant - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.acc1.checked==false) &amp;amp;&amp;amp; (document.Formular.acc2.checked==false) &amp;amp;&amp;amp; (document.Formular.acc3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Adaptive Cruise Control - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.nvs1.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs2.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Night Vision System - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
######################################&lt;br /&gt;
# general configuration/setting&lt;br /&gt;
######################################&lt;br /&gt;
plugin.tx_thmailformplus_pi1 {&lt;br /&gt;
    # limit the number of mails that &lt;br /&gt;
    # are sent to the user&lt;br /&gt;
  limitMailsToUser = 1&lt;br /&gt;
  # Debug Infos ausgeben&lt;br /&gt;
  # saveDB.debug = 1  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
###################################################&lt;br /&gt;
### storage table configuration &amp;amp; Standard-Werte ###&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  fieldConf.fahrleistungEinheit.defaultValue.value = km&lt;br /&gt;
  fieldConf.datum.defaultValue.data = date : Y-m-d H:i:s&lt;br /&gt;
  fieldConf.iphid.defaultValue.data = getenv : REMOTE_ADDR&lt;br /&gt;
&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = tpUmfrage&lt;br /&gt;
  saveDB.mapping = iphid:iphid,datum:datum,country:country,age:age,geschlecht:geschlecht,fahrpraxis:fahrpraxis,fahrleistungEinheit:fahrleistungEinheit,fahrleistung:fahrleistung,neuanschaffung:neuanschaffung,unfall:unfall,beruf:beruf,berufSonstiges:berufSonstiges,betrieb:betrieb,betriebSonstiges:betriebSonstiges,markengebunden:markengebunden,marke:marke,bremsassi1:bremsassi1,bremsassi2:bremsassi2,bremsassi3:bremsassi3,esp1:esp1,esp2:esp2,esp3:esp3,esp4:esp4,spurassi1:spurassi1,spurassi2:spurassi2,spurassi3:spurassi3,acc1:acc1,acc2:acc2,acc3:acc3,nvs1:nvs1,nvs2:nvs2,nvs3:nvs3,bremsassipraxis:bremsassipraxis,bremsassipot:bremsassipot,esppraxis:esppraxis,esppot:esppot,ahlpraxis:ahlpraxis,ahlpot:ahlpot,sideassipraxis:sideassipraxis,sideassipot:sideassipot,nvspraxis:nvspraxis,nvspot:nvspot,accpraxis:accpraxis,accpot:accpot,spurassipraxis:spurassipraxis,spurassipot:spurassipot,kunden01:kunden01,kunden02:kunden02,kunden03:kunden03,kunden04:kunden04,kunden05:kunden05,kunden06:kunden06,kunden07:kunden07,kunden08:kunden08,kunden09:kunden09,kunden10:kunden10,kunden11:kunden11,kunden12:kunden12,kunden13:kunden13,kunden14:kunden14,kunden15:kunden15,kunden16:kunden16,kunden17:kunden17,kunden18:kunden18,kunden19:kunden19,kunden20:kunden20,kunden21:kunden21,kunden22:kunden22,kunden23:kunden23,kunden24:kunden24,kunden25:kunden25,kunden26:kunden26,kunden27:kunden27,wissenbremsassi:wissenbremsassi,wissenesp:wissenesp,wissenahl:wissenahl,wissensideassi:wissensideassi,wissennvs:wissennvs,wissenacc:wissenacc,wissenspurassi:wissenspurassi,wissendcm:wissendcm,wissenpcs:wissenpcs,wissenisa:wissenisa,wissenrtti:wissenrtti,wissenaec:wissenaec,auffassung01:auffassung01,auffassung02:auffassung02,auffassung03:auffassung03,auffassung04:auffassung04,auffassung05:auffassung05,auffassung06:auffassung06,auffassung07:auffassung07,auffassung08:auffassung08,auffassung09:auffassung09,auffassung10:auffassung10,auffassung11:auffassung11,auffassung12:auffassung12,auffassung13:auffassung13,auffassung14:auffassung14,auffassung15:auffassung15,auffassung16:auffassung16,auffassung17:auffassung17,auffassung18:auffassung18,auffassung19:auffassung19,auffassung20:auffassung20,auffassung21:auffassung21,auffassung22:auffassung22,auffassung23:auffassung23,auffassung24:auffassung24,expeinsch01:expeinsch01,expeinsch02:expeinsch02,expeinsch03:expeinsch03,expeinsch04:expeinsch04,expeinsch05:expeinsch05,expeinsch06:expeinsch06,expeinsch07:expeinsch07,expeinsch08:expeinsch08,expeinsch09:expeinsch09,expeinsch10:expeinsch10,expeinsch11:expeinsch11,expeinsch12:expeinsch12,expeinsch13:expeinsch13,expeinsch14:expeinsch14,expeinsch15:expeinsch15,expeinsch16:expeinsch16,expeinsch17:expeinsch17,expeinsch18:expeinsch18,expeinsch19:expeinsch19,expeinsch20:expeinsch20,expeinsch21:expeinsch21,expeinsch22:expeinsch22,expeinsch23:expeinsch23,expeinsch24:expeinsch24,expeinsch25:expeinsch25,fortbildung:fortbildung,fortbildungSonstiges:fortbildungSonstiges,kommentar:kommentar&lt;br /&gt;
&lt;br /&gt;
  #für Checkboxen modifizierung der zu speichernden Felder ermöglichen&lt;br /&gt;
  saveLog = 1&lt;br /&gt;
  #saveLog.order = bremsassi-1,bremsassi-2,bremsassi-3&lt;br /&gt;
  #saveLog.defaultValue = 0&lt;br /&gt;
&lt;br /&gt;
  #folgende Felder nicht speichern...&lt;br /&gt;
  #saveLog.exclude = alter&lt;br /&gt;
	&lt;br /&gt;
  #saveDB.dbinsert=pid:546,hidden:0,CType:textpic&lt;br /&gt;
  #saveUserFunc = fileadmin/template/benutzerfunktion/class.tx_mailformplus.php:tx_mailformplus-&amp;gt;writeFormData&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
######################################&lt;br /&gt;
# here we overwrite the default configuration for &lt;br /&gt;
# file uploads defined in saveDB. for one &lt;br /&gt;
# specific field&lt;br /&gt;
######################################&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
&lt;br /&gt;
  ######################&lt;br /&gt;
  # improved error check&lt;br /&gt;
  #&lt;br /&gt;
  # Info:&lt;br /&gt;
  # error-check is performed for every field &lt;br /&gt;
  # having a .errorCheck value defined here in TS&lt;br /&gt;
  #&lt;br /&gt;
  # works together with &amp;quot;required&amp;quot; fields settings &lt;br /&gt;
  # from mailformplus record&lt;br /&gt;
  #&lt;br /&gt;
  # example:&lt;br /&gt;
  # mailformplus record &amp;quot;required&amp;quot; field is filled out with &amp;quot;email&amp;quot;&lt;br /&gt;
  # here in TS we have defined:&lt;br /&gt;
  #    email.errorCheck = email, optional&lt;br /&gt;
  # so the value is optional - but if it&amp;#039;s filled out, &lt;br /&gt;
  # it&amp;#039;s validated to be a correct email address&lt;br /&gt;
  #&lt;br /&gt;
  ######################&lt;br /&gt;
  # .errorCheck can be one of the following:&lt;br /&gt;
  #&lt;br /&gt;
  # - email ..... validated as email&lt;br /&gt;
  # - integer ... validated as integer &lt;br /&gt;
  # - float  .... validated as float (&amp;quot;.&amp;quot; and &amp;quot;,&amp;quot; allowed!)&lt;br /&gt;
  # - required ... must be filled out&lt;br /&gt;
  # - optional ... field is optional, but if it&amp;#039;s filled out, &lt;br /&gt;
  #                it&amp;#039;s validated to the rest of errorChecks defined&lt;br /&gt;
  # - date ... validated as date. format can/has to be specified&lt;br /&gt;
  #            example:&lt;br /&gt;
  #            errorCheck = date:dd/mm/yyyy&lt;br /&gt;
  #            errorCheck = date:d.m.y&lt;br /&gt;
  #            format is case insensitive. so dd/mm/yyyy is the same as DD/MM/YYYY&lt;br /&gt;
  #&lt;br /&gt;
  # - time ... validated as time. format can/has to be specified&lt;br /&gt;
  #            example:&lt;br /&gt;
  #            errorCheck = time:hh:mm&lt;br /&gt;
  #            errorCheck = time:h-m&lt;br /&gt;
  #            format is case insensitive. hh:mm equals HH:MM&lt;br /&gt;
  #&lt;br /&gt;
  # - ereg ... validated to match the regexp given&lt;br /&gt;
  #            example for correct IP validation:&lt;br /&gt;
  #            errorCheck = ereg:^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$&lt;br /&gt;
  #&lt;br /&gt;
  # - eregi ... like &amp;quot;ereg&amp;quot; but case insensitive&lt;br /&gt;
  #&lt;br /&gt;
  ######################&lt;br /&gt;
  # you can specify multiple errorchecks by separating them by &amp;quot;,&amp;quot;&lt;br /&gt;
  # example&lt;br /&gt;
  # - errorCheck = required, email&lt;br /&gt;
  ######################&lt;br /&gt;
  # .errorText ... text beeing displayed when error occurs&lt;br /&gt;
  #  Info: &lt;br /&gt;
  #  errorText overwrites the error-subtemplate value defined in the template&lt;br /&gt;
  #######################&lt;br /&gt;
  &lt;br /&gt;
  #  email {&lt;br /&gt;
  #    errorCheck = email,required&lt;br /&gt;
  #    errorText = &amp;lt;li&amp;gt;fill out a correct email&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  #    defaultValue.value = asdf&lt;br /&gt;
  #  }&lt;br /&gt;
  &lt;br /&gt;
  fortbildung.errorCheck = required&lt;br /&gt;
  fortbildung.errorText = &amp;amp;nbsp;&lt;br /&gt;
//..&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1453</id>
		<title>Mailformplus (tx mailformplus)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1453"/>
		<updated>2008-07-25T05:08:06Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Verschiedene Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Post processing der Formularfelder ==&lt;br /&gt;
Es gibt einen Hook den man nutzen kann um nach dem Erfolgreichen senden des Formulars die &amp;#039;&amp;#039;&amp;#039;Daten an eigene PHP Skripte&amp;#039;&amp;#039;&amp;#039; zu übergeben.&lt;br /&gt;
(available since 3.7, thx to Martin Kutschker)&lt;br /&gt;
Die Standard Funktionen wie Mails versenden oder Datensätze einfügen werden dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;So gehts:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* define a user-function which will do the processing&lt;br /&gt;
* create a php file with a class and function which will be called when the form was submitted:&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_myext.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
content:&lt;br /&gt;
&lt;br /&gt;
 class tx_myext {&lt;br /&gt;
 function doit(&amp;amp;$params, &amp;amp;$ref){&lt;br /&gt;
 ......&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;#039;&amp;#039;&amp;#039;$params&amp;#039;&amp;#039; enthält dann folgende Werte:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;$params[config]&amp;#039;&amp;#039;&amp;#039; Variablen die mit TypoScript übermittelt wurden. Z.B.:&lt;br /&gt;
 saveUserFunc.dummy = hello &lt;br /&gt;
kann mit&lt;br /&gt;
 $params[config][dummy]&lt;br /&gt;
angesprochen werden.&lt;br /&gt;
&lt;br /&gt;
 $params[data]&lt;br /&gt;
enthält alle übermittelten GET und POST Variablen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== activate the hook with TypoScript ===&lt;br /&gt;
Als erstes muß man die Funktion definieren die ausgeführt werden soll:&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc = EXT:myext/class.tx_myext.php:tx_myext-&amp;gt;doit&lt;br /&gt;
Man kann auch mit TS Variablen definieren die an das Skript übermittelt werden.&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc.dummy = hello&lt;br /&gt;
&lt;br /&gt;
===Beispielkonfiguration (alt-brettheim.de)===&lt;br /&gt;
Version von Ende 2006&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###  mailformplus konfigurieren ###&lt;br /&gt;
#Checkbox &amp;#039;Zustimmung zur Datenspeicherung&amp;#039; soll nicht in der DB gespeichert werden&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_redirect = 547&lt;br /&gt;
  saveLog.exclude = datenspeicherung&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = pupKarte&lt;br /&gt;
  saveDB.fileUpload = fileadmin/pupKarte/&lt;br /&gt;
  saveDB.fileTypes = jpg,jpeg,png,JPG,JPEG,PNG&lt;br /&gt;
  saveDB.fileSize = 1000000&lt;br /&gt;
&lt;br /&gt;
  #Schlüsselfeld der DB-Tabelle&lt;br /&gt;
  #Datenbank zuordnung&lt;br /&gt;
  saveDB.mapping = photo:fileid,geb18:geb18,name:name,vorname:vorname,gebDatum:gebDatum,strasse:strasse,plz:plz,ort:ort,gruppe:gruppe,andereGruppe:andereGruppe,funktionGruppe:funktionGruppe,vabmitglied:vabmitglied,waffentraeger:waffentraeger,dekowaffe:dekowaffe,messer:messer,dolchEinseitig:dolchEinseitig,dolchZweiseitig:dolchZweiseitig,hiebwaffe:hiebwaffe,stichwaffe:stichwaffe,stangenwaffe:stangenwaffe,bogen:bogen,armbrust:armbrust,sonstigeWaffen:sonstigeWaffen,sprengstofferlaubnis:sprengstofferlaubnis,uneingeschraenkt:uneingeschraenkt,sonstigeWaffeArt:sonstigeWaffeArt,behoerde:behoerde,erlaubnisNr:erlaubnisNr,weitereGenehmigung:weitereGenehmigung,mitgliedSeit:mitgliedSeit,weitereVabMitgliedschaft:weitereVabMitgliedschaft,funktionen:funktionen,ehrungen:ehrungen,telefon:telefon,email:email,internWirdBezogen:internWirdBezogen,internErwuenscht:internErwuenscht,sonstiges:sonstiges&lt;br /&gt;
  #nicht ausgefüllte Felder ausfüllen...&lt;br /&gt;
  #saveDB.if_is_empty.dekowaffe = ka&lt;br /&gt;
  #saveDB.debug = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Druckversion des Formulars ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Abschnitt für Printtemplate im mailformplus-HTML-Template:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### begin --&amp;gt;&lt;br /&gt;
You just filled out the following fields:&amp;lt;br&amp;gt;&lt;br /&gt;
Name: ###name###&amp;lt;br&amp;gt;&lt;br /&gt;
Subject: ###subject###&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
you uploaded the following files:&lt;br /&gt;
###photo###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
###cv###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### end --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. Eine Userfunktion zum speichern und übergeben der Session Variable&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?PHP&lt;br /&gt;
####################################&lt;br /&gt;
# example user-function for        #&lt;br /&gt;
# fetching the PRINT-subtemplate   #&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
class user_mailformplus_userfunc {&lt;br /&gt;
    var $cObj;&lt;br /&gt;
&lt;br /&gt;
    # this function returns the &amp;quot;PRINT&amp;quot; subtemplate&lt;br /&gt;
    # if defined in the mailformplus-template&lt;br /&gt;
    # replaced with the values the user has filled out.&lt;br /&gt;
&lt;br /&gt;
    function user_mailformplusPrint($content,$conf) {&lt;br /&gt;
	$printVersion = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;,&amp;quot;th_mailformplus&amp;quot;.$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
	if ($printVersion) {&lt;br /&gt;
	    return $printVersion;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Das zugehörige TS Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
includeLibs.mailformplus_functions = fileadmin/mailformplus_userfunc.inc.php&lt;br /&gt;
################################&lt;br /&gt;
# outputs the PRINT template below normal page content&lt;br /&gt;
# main content&lt;br /&gt;
################################&lt;br /&gt;
&lt;br /&gt;
temp.main_content = COA&lt;br /&gt;
temp.main_content {&lt;br /&gt;
  10 &amp;lt; styles.content.get&lt;br /&gt;
  20 = USER&lt;br /&gt;
  20.userFunc = user_mailformplus_userfunc-&amp;gt;user_mailformplusPrint&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.CONTENT_MAIN &amp;lt; temp.main_content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Beispiele ==&lt;br /&gt;
=== JavaScript zur Validierung und Mailformplus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1.multiPage.2.js (&lt;br /&gt;
if((document.Formular.bremsassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Bremsassistenten - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.esp1.checked==false) &amp;amp;&amp;amp; (document.Formular.esp2.checked==false) &amp;amp;&amp;amp; (document.Formular.esp3.checked==false) &amp;amp;&amp;amp; (document.Formular.esp4.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Elektronisches Stabilitätsprogramm - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.spurassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Spurassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.acc1.checked==false) &amp;amp;&amp;amp; (document.Formular.acc2.checked==false) &amp;amp;&amp;amp; (document.Formular.acc3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Automatischer Abstandsregeltempomat - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.nvs1.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs2.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Nachtsichtassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Beispiel mit verschiedenen Validierungen und Upload-Feld===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_requiredfields = email,name&lt;br /&gt;
  #email_attachment = ###fsvorne###&lt;br /&gt;
  #email_sendtouser &amp;gt;&lt;br /&gt;
  #debug = 1&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
  name {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  strasse {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  plz_ort {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  land {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  telefon {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  mail {&lt;br /&gt;
      errorCheck = email,required&lt;br /&gt;
  }&lt;br /&gt;
  kennzeichen {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  hersteller {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  fahrzeugnummer {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  art {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  antrieb {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  gewicht {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  ezul {&lt;br /&gt;
      errorCheck = date:dd.mm.yyyy&lt;br /&gt;
      errorCheck.dateRange.min = 01.01.1900&lt;br /&gt;
      errorCheck.dateRange.max = 31.12.2010&lt;br /&gt;
  }&lt;br /&gt;
  fsvorne {&lt;br /&gt;
    errorCheck = required&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Vorderseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Vorderseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath### ###fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  fshinten {&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Rückseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp;###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Rückseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath######fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |file end&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline=305,307,309,311]&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fsvorne{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (front)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Front: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fshinten{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (back)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Back: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[global]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Datenbank-Speicherung ===&lt;br /&gt;
######################################&lt;br /&gt;
# config for multipage forms&lt;br /&gt;
######################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline = 89]&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1.multiPage.2.js (&lt;br /&gt;
if((document.Formular.bremsassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Emergency Brake Assistant - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.esp1.checked==false) &amp;amp;&amp;amp; (document.Formular.esp2.checked==false) &amp;amp;&amp;amp; (document.Formular.esp3.checked==false) &amp;amp;&amp;amp; (document.Formular.esp4.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Electronic/Dynamic Stability Control/Program - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.spurassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Lane departure warning/Lane keeping assistant - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.acc1.checked==false) &amp;amp;&amp;amp; (document.Formular.acc2.checked==false) &amp;amp;&amp;amp; (document.Formular.acc3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Adaptive Cruise Control - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.nvs1.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs2.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Night Vision System - please select at least one of the checkboxes.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
[global]&lt;br /&gt;
&lt;br /&gt;
######################################&lt;br /&gt;
# general configuration/setting&lt;br /&gt;
######################################&lt;br /&gt;
plugin.tx_thmailformplus_pi1 {&lt;br /&gt;
    # limit the number of mails that &lt;br /&gt;
    # are sent to the user&lt;br /&gt;
  limitMailsToUser = 1&lt;br /&gt;
  # Debug Infos ausgeben&lt;br /&gt;
  # saveDB.debug = 1  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
###################################################&lt;br /&gt;
### storage table configuration &amp;amp; Standard-Werte ###&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  fieldConf.fahrleistungEinheit.defaultValue.value = km&lt;br /&gt;
  fieldConf.datum.defaultValue.data = date : Y-m-d H:i:s&lt;br /&gt;
  fieldConf.iphid.defaultValue.data = getenv : REMOTE_ADDR&lt;br /&gt;
&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = tpUmfrage&lt;br /&gt;
  saveDB.mapping = iphid:iphid,datum:datum,country:country,age:age,geschlecht:geschlecht,fahrpraxis:fahrpraxis,fahrleistungEinheit:fahrleistungEinheit,fahrleistung:fahrleistung,neuanschaffung:neuanschaffung,unfall:unfall,beruf:beruf,berufSonstiges:berufSonstiges,betrieb:betrieb,betriebSonstiges:betriebSonstiges,markengebunden:markengebunden,marke:marke,bremsassi1:bremsassi1,bremsassi2:bremsassi2,bremsassi3:bremsassi3,esp1:esp1,esp2:esp2,esp3:esp3,esp4:esp4,spurassi1:spurassi1,spurassi2:spurassi2,spurassi3:spurassi3,acc1:acc1,acc2:acc2,acc3:acc3,nvs1:nvs1,nvs2:nvs2,nvs3:nvs3,bremsassipraxis:bremsassipraxis,bremsassipot:bremsassipot,esppraxis:esppraxis,esppot:esppot,ahlpraxis:ahlpraxis,ahlpot:ahlpot,sideassipraxis:sideassipraxis,sideassipot:sideassipot,nvspraxis:nvspraxis,nvspot:nvspot,accpraxis:accpraxis,accpot:accpot,spurassipraxis:spurassipraxis,spurassipot:spurassipot,kunden01:kunden01,kunden02:kunden02,kunden03:kunden03,kunden04:kunden04,kunden05:kunden05,kunden06:kunden06,kunden07:kunden07,kunden08:kunden08,kunden09:kunden09,kunden10:kunden10,kunden11:kunden11,kunden12:kunden12,kunden13:kunden13,kunden14:kunden14,kunden15:kunden15,kunden16:kunden16,kunden17:kunden17,kunden18:kunden18,kunden19:kunden19,kunden20:kunden20,kunden21:kunden21,kunden22:kunden22,kunden23:kunden23,kunden24:kunden24,kunden25:kunden25,kunden26:kunden26,kunden27:kunden27,wissenbremsassi:wissenbremsassi,wissenesp:wissenesp,wissenahl:wissenahl,wissensideassi:wissensideassi,wissennvs:wissennvs,wissenacc:wissenacc,wissenspurassi:wissenspurassi,wissendcm:wissendcm,wissenpcs:wissenpcs,wissenisa:wissenisa,wissenrtti:wissenrtti,wissenaec:wissenaec,auffassung01:auffassung01,auffassung02:auffassung02,auffassung03:auffassung03,auffassung04:auffassung04,auffassung05:auffassung05,auffassung06:auffassung06,auffassung07:auffassung07,auffassung08:auffassung08,auffassung09:auffassung09,auffassung10:auffassung10,auffassung11:auffassung11,auffassung12:auffassung12,auffassung13:auffassung13,auffassung14:auffassung14,auffassung15:auffassung15,auffassung16:auffassung16,auffassung17:auffassung17,auffassung18:auffassung18,auffassung19:auffassung19,auffassung20:auffassung20,auffassung21:auffassung21,auffassung22:auffassung22,auffassung23:auffassung23,auffassung24:auffassung24,expeinsch01:expeinsch01,expeinsch02:expeinsch02,expeinsch03:expeinsch03,expeinsch04:expeinsch04,expeinsch05:expeinsch05,expeinsch06:expeinsch06,expeinsch07:expeinsch07,expeinsch08:expeinsch08,expeinsch09:expeinsch09,expeinsch10:expeinsch10,expeinsch11:expeinsch11,expeinsch12:expeinsch12,expeinsch13:expeinsch13,expeinsch14:expeinsch14,expeinsch15:expeinsch15,expeinsch16:expeinsch16,expeinsch17:expeinsch17,expeinsch18:expeinsch18,expeinsch19:expeinsch19,expeinsch20:expeinsch20,expeinsch21:expeinsch21,expeinsch22:expeinsch22,expeinsch23:expeinsch23,expeinsch24:expeinsch24,expeinsch25:expeinsch25,fortbildung:fortbildung,fortbildungSonstiges:fortbildungSonstiges,kommentar:kommentar&lt;br /&gt;
&lt;br /&gt;
  #für Checkboxen modifizierung der zu speichernden Felder ermöglichen&lt;br /&gt;
  saveLog = 1&lt;br /&gt;
  #saveLog.order = bremsassi-1,bremsassi-2,bremsassi-3&lt;br /&gt;
  #saveLog.defaultValue = 0&lt;br /&gt;
&lt;br /&gt;
  #folgende Felder nicht speichern...&lt;br /&gt;
  #saveLog.exclude = alter&lt;br /&gt;
	&lt;br /&gt;
  #saveDB.dbinsert=pid:546,hidden:0,CType:textpic&lt;br /&gt;
  #saveUserFunc = fileadmin/template/benutzerfunktion/class.tx_mailformplus.php:tx_mailformplus-&amp;gt;writeFormData&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
######################################&lt;br /&gt;
# here we overwrite the default configuration for &lt;br /&gt;
# file uploads defined in saveDB. for one &lt;br /&gt;
# specific field&lt;br /&gt;
######################################&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
&lt;br /&gt;
  ######################&lt;br /&gt;
  # improved error check&lt;br /&gt;
  #&lt;br /&gt;
  # Info:&lt;br /&gt;
  # error-check is performed for every field &lt;br /&gt;
  # having a .errorCheck value defined here in TS&lt;br /&gt;
  #&lt;br /&gt;
  # works together with &amp;quot;required&amp;quot; fields settings &lt;br /&gt;
  # from mailformplus record&lt;br /&gt;
  #&lt;br /&gt;
  # example:&lt;br /&gt;
  # mailformplus record &amp;quot;required&amp;quot; field is filled out with &amp;quot;email&amp;quot;&lt;br /&gt;
  # here in TS we have defined:&lt;br /&gt;
  #    email.errorCheck = email, optional&lt;br /&gt;
  # so the value is optional - but if it&amp;#039;s filled out, &lt;br /&gt;
  # it&amp;#039;s validated to be a correct email address&lt;br /&gt;
  #&lt;br /&gt;
  ######################&lt;br /&gt;
  # .errorCheck can be one of the following:&lt;br /&gt;
  #&lt;br /&gt;
  # - email ..... validated as email&lt;br /&gt;
  # - integer ... validated as integer &lt;br /&gt;
  # - float  .... validated as float (&amp;quot;.&amp;quot; and &amp;quot;,&amp;quot; allowed!)&lt;br /&gt;
  # - required ... must be filled out&lt;br /&gt;
  # - optional ... field is optional, but if it&amp;#039;s filled out, &lt;br /&gt;
  #                it&amp;#039;s validated to the rest of errorChecks defined&lt;br /&gt;
  # - date ... validated as date. format can/has to be specified&lt;br /&gt;
  #            example:&lt;br /&gt;
  #            errorCheck = date:dd/mm/yyyy&lt;br /&gt;
  #            errorCheck = date:d.m.y&lt;br /&gt;
  #            format is case insensitive. so dd/mm/yyyy is the same as DD/MM/YYYY&lt;br /&gt;
  #&lt;br /&gt;
  # - time ... validated as time. format can/has to be specified&lt;br /&gt;
  #            example:&lt;br /&gt;
  #            errorCheck = time:hh:mm&lt;br /&gt;
  #            errorCheck = time:h-m&lt;br /&gt;
  #            format is case insensitive. hh:mm equals HH:MM&lt;br /&gt;
  #&lt;br /&gt;
  # - ereg ... validated to match the regexp given&lt;br /&gt;
  #            example for correct IP validation:&lt;br /&gt;
  #            errorCheck = ereg:^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$&lt;br /&gt;
  #&lt;br /&gt;
  # - eregi ... like &amp;quot;ereg&amp;quot; but case insensitive&lt;br /&gt;
  #&lt;br /&gt;
  ######################&lt;br /&gt;
  # you can specify multiple errorchecks by separating them by &amp;quot;,&amp;quot;&lt;br /&gt;
  # example&lt;br /&gt;
  # - errorCheck = required, email&lt;br /&gt;
  ######################&lt;br /&gt;
  # .errorText ... text beeing displayed when error occurs&lt;br /&gt;
  #  Info: &lt;br /&gt;
  #  errorText overwrites the error-subtemplate value defined in the template&lt;br /&gt;
  #######################&lt;br /&gt;
  &lt;br /&gt;
  #  email {&lt;br /&gt;
  #    errorCheck = email,required&lt;br /&gt;
  #    errorText = &amp;lt;li&amp;gt;fill out a correct email&amp;lt;/li&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  #    defaultValue.value = asdf&lt;br /&gt;
  #  }&lt;br /&gt;
  &lt;br /&gt;
  fortbildung.errorCheck = required&lt;br /&gt;
  fortbildung.errorText = &amp;amp;nbsp;&lt;br /&gt;
//..&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1452</id>
		<title>Mailformplus (tx mailformplus)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1452"/>
		<updated>2008-07-25T05:03:13Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: /* Verschiedene Beispiele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Post processing der Formularfelder ==&lt;br /&gt;
Es gibt einen Hook den man nutzen kann um nach dem Erfolgreichen senden des Formulars die &amp;#039;&amp;#039;&amp;#039;Daten an eigene PHP Skripte&amp;#039;&amp;#039;&amp;#039; zu übergeben.&lt;br /&gt;
(available since 3.7, thx to Martin Kutschker)&lt;br /&gt;
Die Standard Funktionen wie Mails versenden oder Datensätze einfügen werden dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;So gehts:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* define a user-function which will do the processing&lt;br /&gt;
* create a php file with a class and function which will be called when the form was submitted:&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_myext.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
content:&lt;br /&gt;
&lt;br /&gt;
 class tx_myext {&lt;br /&gt;
 function doit(&amp;amp;$params, &amp;amp;$ref){&lt;br /&gt;
 ......&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;#039;&amp;#039;&amp;#039;$params&amp;#039;&amp;#039; enthält dann folgende Werte:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;$params[config]&amp;#039;&amp;#039;&amp;#039; Variablen die mit TypoScript übermittelt wurden. Z.B.:&lt;br /&gt;
 saveUserFunc.dummy = hello &lt;br /&gt;
kann mit&lt;br /&gt;
 $params[config][dummy]&lt;br /&gt;
angesprochen werden.&lt;br /&gt;
&lt;br /&gt;
 $params[data]&lt;br /&gt;
enthält alle übermittelten GET und POST Variablen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== activate the hook with TypoScript ===&lt;br /&gt;
Als erstes muß man die Funktion definieren die ausgeführt werden soll:&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc = EXT:myext/class.tx_myext.php:tx_myext-&amp;gt;doit&lt;br /&gt;
Man kann auch mit TS Variablen definieren die an das Skript übermittelt werden.&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc.dummy = hello&lt;br /&gt;
&lt;br /&gt;
===Beispielkonfiguration (alt-brettheim.de)===&lt;br /&gt;
Version von Ende 2006&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###  mailformplus konfigurieren ###&lt;br /&gt;
#Checkbox &amp;#039;Zustimmung zur Datenspeicherung&amp;#039; soll nicht in der DB gespeichert werden&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_redirect = 547&lt;br /&gt;
  saveLog.exclude = datenspeicherung&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = pupKarte&lt;br /&gt;
  saveDB.fileUpload = fileadmin/pupKarte/&lt;br /&gt;
  saveDB.fileTypes = jpg,jpeg,png,JPG,JPEG,PNG&lt;br /&gt;
  saveDB.fileSize = 1000000&lt;br /&gt;
&lt;br /&gt;
  #Schlüsselfeld der DB-Tabelle&lt;br /&gt;
  #Datenbank zuordnung&lt;br /&gt;
  saveDB.mapping = photo:fileid,geb18:geb18,name:name,vorname:vorname,gebDatum:gebDatum,strasse:strasse,plz:plz,ort:ort,gruppe:gruppe,andereGruppe:andereGruppe,funktionGruppe:funktionGruppe,vabmitglied:vabmitglied,waffentraeger:waffentraeger,dekowaffe:dekowaffe,messer:messer,dolchEinseitig:dolchEinseitig,dolchZweiseitig:dolchZweiseitig,hiebwaffe:hiebwaffe,stichwaffe:stichwaffe,stangenwaffe:stangenwaffe,bogen:bogen,armbrust:armbrust,sonstigeWaffen:sonstigeWaffen,sprengstofferlaubnis:sprengstofferlaubnis,uneingeschraenkt:uneingeschraenkt,sonstigeWaffeArt:sonstigeWaffeArt,behoerde:behoerde,erlaubnisNr:erlaubnisNr,weitereGenehmigung:weitereGenehmigung,mitgliedSeit:mitgliedSeit,weitereVabMitgliedschaft:weitereVabMitgliedschaft,funktionen:funktionen,ehrungen:ehrungen,telefon:telefon,email:email,internWirdBezogen:internWirdBezogen,internErwuenscht:internErwuenscht,sonstiges:sonstiges&lt;br /&gt;
  #nicht ausgefüllte Felder ausfüllen...&lt;br /&gt;
  #saveDB.if_is_empty.dekowaffe = ka&lt;br /&gt;
  #saveDB.debug = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Druckversion des Formulars ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Abschnitt für Printtemplate im mailformplus-HTML-Template:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### begin --&amp;gt;&lt;br /&gt;
You just filled out the following fields:&amp;lt;br&amp;gt;&lt;br /&gt;
Name: ###name###&amp;lt;br&amp;gt;&lt;br /&gt;
Subject: ###subject###&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
you uploaded the following files:&lt;br /&gt;
###photo###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
###cv###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### end --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. Eine Userfunktion zum speichern und übergeben der Session Variable&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?PHP&lt;br /&gt;
####################################&lt;br /&gt;
# example user-function for        #&lt;br /&gt;
# fetching the PRINT-subtemplate   #&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
class user_mailformplus_userfunc {&lt;br /&gt;
    var $cObj;&lt;br /&gt;
&lt;br /&gt;
    # this function returns the &amp;quot;PRINT&amp;quot; subtemplate&lt;br /&gt;
    # if defined in the mailformplus-template&lt;br /&gt;
    # replaced with the values the user has filled out.&lt;br /&gt;
&lt;br /&gt;
    function user_mailformplusPrint($content,$conf) {&lt;br /&gt;
	$printVersion = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;,&amp;quot;th_mailformplus&amp;quot;.$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
	if ($printVersion) {&lt;br /&gt;
	    return $printVersion;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Das zugehörige TS Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
includeLibs.mailformplus_functions = fileadmin/mailformplus_userfunc.inc.php&lt;br /&gt;
################################&lt;br /&gt;
# outputs the PRINT template below normal page content&lt;br /&gt;
# main content&lt;br /&gt;
################################&lt;br /&gt;
&lt;br /&gt;
temp.main_content = COA&lt;br /&gt;
temp.main_content {&lt;br /&gt;
  10 &amp;lt; styles.content.get&lt;br /&gt;
  20 = USER&lt;br /&gt;
  20.userFunc = user_mailformplus_userfunc-&amp;gt;user_mailformplusPrint&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.CONTENT_MAIN &amp;lt; temp.main_content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Beispiele ==&lt;br /&gt;
=== JavaScript zur Validierung und Mailformplus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1.multiPage.2.js (&lt;br /&gt;
if((document.Formular.bremsassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.bremsassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Bremsassistenten - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.esp1.checked==false) &amp;amp;&amp;amp; (document.Formular.esp2.checked==false) &amp;amp;&amp;amp; (document.Formular.esp3.checked==false) &amp;amp;&amp;amp; (document.Formular.esp4.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Elektronisches Stabilitätsprogramm - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.spurassi1.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi2.checked==false) &amp;amp;&amp;amp; (document.Formular.spurassi3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Spurassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.acc1.checked==false) &amp;amp;&amp;amp; (document.Formular.acc2.checked==false) &amp;amp;&amp;amp; (document.Formular.acc3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Automatischer Abstandsregeltempomat - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
if((document.Formular.nvs1.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs2.checked==false) &amp;amp;&amp;amp; (document.Formular.nvs3.checked==false)){&lt;br /&gt;
  alert(&amp;#039;Nachtsichtassistent - wählen Sie bitte mindestens einen Punkt aus.&amp;#039;);&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Beispiel mit verschiedenen Validierungen und Upload-Feld===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_requiredfields = email,name&lt;br /&gt;
  #email_attachment = ###fsvorne###&lt;br /&gt;
  #email_sendtouser &amp;gt;&lt;br /&gt;
  #debug = 1&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
  name {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  strasse {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  plz_ort {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  land {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  telefon {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  mail {&lt;br /&gt;
      errorCheck = email,required&lt;br /&gt;
  }&lt;br /&gt;
  kennzeichen {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  hersteller {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  fahrzeugnummer {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  art {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  antrieb {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  gewicht {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  ezul {&lt;br /&gt;
      errorCheck = date:dd.mm.yyyy&lt;br /&gt;
      errorCheck.dateRange.min = 01.01.1900&lt;br /&gt;
      errorCheck.dateRange.max = 31.12.2010&lt;br /&gt;
  }&lt;br /&gt;
  fsvorne {&lt;br /&gt;
    errorCheck = required&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Vorderseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Vorderseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath### ###fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  fshinten {&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Rückseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp;###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Rückseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath######fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |file end&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline=305,307,309,311]&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fsvorne{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (front)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Front: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fshinten{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (back)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Back: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[global]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1451</id>
		<title>Mailformplus (tx mailformplus)</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Mailformplus_(tx_mailformplus)&amp;diff=1451"/>
		<updated>2008-07-25T04:59:03Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Post processing der Formularfelder ==&lt;br /&gt;
Es gibt einen Hook den man nutzen kann um nach dem Erfolgreichen senden des Formulars die &amp;#039;&amp;#039;&amp;#039;Daten an eigene PHP Skripte&amp;#039;&amp;#039;&amp;#039; zu übergeben.&lt;br /&gt;
(available since 3.7, thx to Martin Kutschker)&lt;br /&gt;
Die Standard Funktionen wie Mails versenden oder Datensätze einfügen werden dadurch nicht beeinflusst.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;So gehts:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* define a user-function which will do the processing&lt;br /&gt;
* create a php file with a class and function which will be called when the form was submitted:&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_myext.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
content:&lt;br /&gt;
&lt;br /&gt;
 class tx_myext {&lt;br /&gt;
 function doit(&amp;amp;$params, &amp;amp;$ref){&lt;br /&gt;
 ......&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;#039;&amp;#039;&amp;#039;$params&amp;#039;&amp;#039; enthält dann folgende Werte:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;$params[config]&amp;#039;&amp;#039;&amp;#039; Variablen die mit TypoScript übermittelt wurden. Z.B.:&lt;br /&gt;
 saveUserFunc.dummy = hello &lt;br /&gt;
kann mit&lt;br /&gt;
 $params[config][dummy]&lt;br /&gt;
angesprochen werden.&lt;br /&gt;
&lt;br /&gt;
 $params[data]&lt;br /&gt;
enthält alle übermittelten GET und POST Variablen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== activate the hook with TypoScript ===&lt;br /&gt;
Als erstes muß man die Funktion definieren die ausgeführt werden soll:&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc = EXT:myext/class.tx_myext.php:tx_myext-&amp;gt;doit&lt;br /&gt;
Man kann auch mit TS Variablen definieren die an das Skript übermittelt werden.&lt;br /&gt;
&lt;br /&gt;
 plugin.tx_thmailformplus_pi1.saveUserFunc.dummy = hello&lt;br /&gt;
&lt;br /&gt;
===Beispielkonfiguration (alt-brettheim.de)===&lt;br /&gt;
Version von Ende 2006&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
###  mailformplus konfigurieren ###&lt;br /&gt;
#Checkbox &amp;#039;Zustimmung zur Datenspeicherung&amp;#039; soll nicht in der DB gespeichert werden&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_redirect = 547&lt;br /&gt;
  saveLog.exclude = datenspeicherung&lt;br /&gt;
  #Speicherung in die Datenbank&lt;br /&gt;
  saveDB = 1&lt;br /&gt;
  saveDB.dbkey=uid&lt;br /&gt;
  saveDB.dbTable = pupKarte&lt;br /&gt;
  saveDB.fileUpload = fileadmin/pupKarte/&lt;br /&gt;
  saveDB.fileTypes = jpg,jpeg,png,JPG,JPEG,PNG&lt;br /&gt;
  saveDB.fileSize = 1000000&lt;br /&gt;
&lt;br /&gt;
  #Schlüsselfeld der DB-Tabelle&lt;br /&gt;
  #Datenbank zuordnung&lt;br /&gt;
  saveDB.mapping = photo:fileid,geb18:geb18,name:name,vorname:vorname,gebDatum:gebDatum,strasse:strasse,plz:plz,ort:ort,gruppe:gruppe,andereGruppe:andereGruppe,funktionGruppe:funktionGruppe,vabmitglied:vabmitglied,waffentraeger:waffentraeger,dekowaffe:dekowaffe,messer:messer,dolchEinseitig:dolchEinseitig,dolchZweiseitig:dolchZweiseitig,hiebwaffe:hiebwaffe,stichwaffe:stichwaffe,stangenwaffe:stangenwaffe,bogen:bogen,armbrust:armbrust,sonstigeWaffen:sonstigeWaffen,sprengstofferlaubnis:sprengstofferlaubnis,uneingeschraenkt:uneingeschraenkt,sonstigeWaffeArt:sonstigeWaffeArt,behoerde:behoerde,erlaubnisNr:erlaubnisNr,weitereGenehmigung:weitereGenehmigung,mitgliedSeit:mitgliedSeit,weitereVabMitgliedschaft:weitereVabMitgliedschaft,funktionen:funktionen,ehrungen:ehrungen,telefon:telefon,email:email,internWirdBezogen:internWirdBezogen,internErwuenscht:internErwuenscht,sonstiges:sonstiges&lt;br /&gt;
  #nicht ausgefüllte Felder ausfüllen...&lt;br /&gt;
  #saveDB.if_is_empty.dekowaffe = ka&lt;br /&gt;
  #saveDB.debug = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Druckversion des Formulars ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Abschnitt für Printtemplate im mailformplus-HTML-Template:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### begin --&amp;gt;&lt;br /&gt;
You just filled out the following fields:&amp;lt;br&amp;gt;&lt;br /&gt;
Name: ###name###&amp;lt;br&amp;gt;&lt;br /&gt;
Subject: ###subject###&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
you uploaded the following files:&lt;br /&gt;
###photo###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
###cv###&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ###TEMPLATE_PRINT### end --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. Eine Userfunktion zum speichern und übergeben der Session Variable&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?PHP&lt;br /&gt;
####################################&lt;br /&gt;
# example user-function for        #&lt;br /&gt;
# fetching the PRINT-subtemplate   #&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
class user_mailformplus_userfunc {&lt;br /&gt;
    var $cObj;&lt;br /&gt;
&lt;br /&gt;
    # this function returns the &amp;quot;PRINT&amp;quot; subtemplate&lt;br /&gt;
    # if defined in the mailformplus-template&lt;br /&gt;
    # replaced with the values the user has filled out.&lt;br /&gt;
&lt;br /&gt;
    function user_mailformplusPrint($content,$conf) {&lt;br /&gt;
	$printVersion = $GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;quot;ses&amp;quot;,&amp;quot;th_mailformplus&amp;quot;.$GLOBALS[&amp;quot;TSFE&amp;quot;]-&amp;gt;id);&lt;br /&gt;
	if ($printVersion) {&lt;br /&gt;
	    return $printVersion;&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3. Das zugehörige TS Template&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
includeLibs.mailformplus_functions = fileadmin/mailformplus_userfunc.inc.php&lt;br /&gt;
################################&lt;br /&gt;
# outputs the PRINT template below normal page content&lt;br /&gt;
# main content&lt;br /&gt;
################################&lt;br /&gt;
&lt;br /&gt;
temp.main_content = COA&lt;br /&gt;
temp.main_content {&lt;br /&gt;
  10 &amp;lt; styles.content.get&lt;br /&gt;
  20 = USER&lt;br /&gt;
  20.userFunc = user_mailformplus_userfunc-&amp;gt;user_mailformplusPrint&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
page.10.subparts.CONTENT_MAIN &amp;lt; temp.main_content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verschiedene Beispiele ==&lt;br /&gt;
Beispiel mit verschiedenen Validierungen und Upload-Feld&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_thmailformplus_pi1{&lt;br /&gt;
  #email_requiredfields = email,name&lt;br /&gt;
  #email_attachment = ###fsvorne###&lt;br /&gt;
  #email_sendtouser &amp;gt;&lt;br /&gt;
  #debug = 1&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf {&lt;br /&gt;
  name {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  strasse {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  plz_ort {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  land {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  telefon {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  mail {&lt;br /&gt;
      errorCheck = email,required&lt;br /&gt;
  }&lt;br /&gt;
  kennzeichen {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  hersteller {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  fahrzeugnummer {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  art {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  antrieb {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  gewicht {&lt;br /&gt;
      errorCheck = required&lt;br /&gt;
  }&lt;br /&gt;
  ezul {&lt;br /&gt;
      errorCheck = date:dd.mm.yyyy&lt;br /&gt;
      errorCheck.dateRange.min = 01.01.1900&lt;br /&gt;
      errorCheck.dateRange.max = 31.12.2010&lt;br /&gt;
  }&lt;br /&gt;
  fsvorne {&lt;br /&gt;
    errorCheck = required&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Vorderseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Vorderseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath### ###fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  fshinten {&lt;br /&gt;
    numberOfAllowedFiles = 1&lt;br /&gt;
    fileTypes = pdf,doc,jpg,gif,png&lt;br /&gt;
    fileSize = 1500000&lt;br /&gt;
    fileUpload = fileadmin/plakette/uploads/&lt;br /&gt;
    errorText = &amp;lt;li&amp;gt;Das Feld Fahrzeugschein (Rückseite) ist nicht korrekt ausgefüllt&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    uploadedFiles {&lt;br /&gt;
      template =  &amp;amp;nbsp;###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
      wrap = &amp;lt;div&amp;gt;Rückseite: |&amp;lt;/div&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
    uploadedFiles.mail {&lt;br /&gt;
        plainTemplate = ###filePath######fileName###&lt;br /&gt;
        HTMLTemplate = &amp;lt;a href=&amp;quot;###filePath######fileName###&amp;quot;&amp;gt;###fileName###&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        plainWrap = |file end&lt;br /&gt;
        HTMLWrap = |&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[PIDinRootline=305,307,309,311]&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fsvorne{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (front)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Front: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
plugin.tx_thmailformplus_pi1.fieldConf.fshinten{&lt;br /&gt;
  errorText = &amp;lt;li&amp;gt;Please complete the vehicle certification (back)&amp;lt;/li&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
  uploadedFiles {&lt;br /&gt;
    template =  &amp;amp;nbsp; ###fileName### ###fileSize### &amp;amp;nbsp;&amp;lt;br /&amp;gt;&lt;br /&gt;
    wrap = &amp;lt;div&amp;gt;Back: |&amp;lt;/div&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[global]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Installation&amp;diff=1476</id>
		<title>Typo3 - Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_-_Installation&amp;diff=1476"/>
		<updated>2008-07-25T04:52:44Z</updated>

		<summary type="html">&lt;p&gt;91.47.59.186: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Typo3 Autoinstallation ==&lt;br /&gt;
Wünschenswert wäre ein Script, welches eine Typo3 Grundinstallation vollautomatisch durchführt. Als ersten Schritt einige Vorüberlegungen:&lt;br /&gt;
Die Installation sollte nach Angabe einer Datenbank die Typo3 Verzeichnisse hochladen, auspacken und das Konfigurationsfile mit den Datenbankwerten belegen. Weiterhin sollte die Datenbank bereits einen Admin-User einige Seiten und einige Grundtemplates enthalten. Typo3 enthält ja die Möglichkeit im DB Teil der installation ein eigenes .sql File zu benutzen, welches bereits die nötigen Werte enthält.&lt;br /&gt;
== W-Manager ==&lt;br /&gt;
* Datenbank und Benutzer installieren&lt;br /&gt;
* Dump einspielen (am besten auf webspace legen und mit wget runterziehen, oder über Plesk&amp;gt;phpmyadmin einspielen)&lt;br /&gt;
 shell&amp;gt; mysql db_name &amp;lt; backup-file.sql&lt;br /&gt;
&lt;br /&gt;
* Im Webverzeichnis (oder darunter) neueste Source downloaden und auspacken&lt;br /&gt;
 wget http://prdownloads.sourceforge.net/typo3/typo3_src-4.0.4.tar.gz?download&lt;br /&gt;
 wget http://prdownloads.sourceforge.net/typo3/dummy-4.0.4.tar.gz?download&lt;br /&gt;
* Im Stammverzeichnis dummy downloaden und auspacken&lt;br /&gt;
* dummy Inhalt in Stammverzeichnis kopieren und typo3_src symlink auf neue Source umbiegen. &lt;br /&gt;
* Datei-Rechte anpassen&lt;br /&gt;
 755 Gruppe ist wwwserver - Gruppe&lt;br /&gt;
 chgrp -R &amp;lt;wwwserver&amp;gt; fileadmin typo3conf typo3temp uploads&lt;br /&gt;
 chmod -R g+w,o-rwx fileadmin typo3conf typo3temp uploads&lt;br /&gt;
** bei reinem ftp Zugriff Gruppe lassen und 777&lt;br /&gt;
* w-manager Dateien reinkopieren (upload, fileadmin, typo3conf) evtl als tar Paket vorhalten)&lt;br /&gt;
* localconf.php anpassen (neue Datenbank Daten eintragen)&lt;br /&gt;
* Installationstool: Compare und Update Manager&lt;br /&gt;
* Evtl. neues DB Image:&lt;br /&gt;
mysqldump -u benutzername -p -B --add-drop-table datenbank &amp;gt; typo3DBSicherung.sql&lt;br /&gt;
* Seitenbaum anpassen (Sitename)&lt;br /&gt;
* Assets anpassen (Bilder, Logo)&lt;br /&gt;
* CSS Anpassen (Schriften, Farben)&lt;br /&gt;
* Template Anpassen (Anschrift unten)&lt;br /&gt;
* Print Template anpassen (Copyright...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grundsätzliche Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Uploaden ===&lt;br /&gt;
&lt;br /&gt;
# Typo3 - Dummy auf den Server laden&lt;br /&gt;
# Aus dem Installscript /typo3/install/index.php die die() Funktion auskommentieren&lt;br /&gt;
# Install Skript im Browser aufrufen (Standard Passwort ist joh316)&lt;br /&gt;
# Passwort ändern !! und neu einloggen (evt. Schreibrecht für /typo3/typo3conf/localconf.php setzten)&lt;br /&gt;
&lt;br /&gt;
=== Basic Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Schreibrechte für die rot markierten Ordner ändern und den den fileadmin Ordner ebenfalls schreibbar machen.&lt;br /&gt;
# Datenbank Zugangsdaten eingeben. Host ist in der Regel &amp;#039;localhost&amp;#039;&lt;br /&gt;
# Update localconf.php klicken dann click to continue&lt;br /&gt;
# Jetzt die Datenbank im neuen Dropdownfeld. Auswählen&lt;br /&gt;
# Encryption key: Generate Knopf klicken&lt;br /&gt;
&lt;br /&gt;
=== Database Analyser ===&lt;br /&gt;
# Benötigte Tabellen anlegen: Compare klicken - dann write to database&lt;br /&gt;
# Dump static data IMPORT  	&lt;br /&gt;
# (Notwendig?) Tabellen füllen mit statischen Templates typo3conf/database.sql (1.1 M) ebenfalls Compare und write to database&lt;br /&gt;
# admin User erstellen damit man sich im Backend einloggen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis:&amp;#039;&amp;#039;&amp;#039; wenn man eine gute leere Installation hat kann man diese Daten komplett in ein sql-Standardfile exportieren und bei einer frischen Typo3 Installation komplett einspielen.&lt;br /&gt;
&lt;br /&gt;
=== All Configuration ===&lt;br /&gt;
# [gdlib_2] auf 1 stellen Wenn GDlib Version 2 Verwendet wird&lt;br /&gt;
# [TTFdpi] muß auf 96 stehen wenn die Schrift im Bild bei &amp;#039;Basic Configuration&amp;#039; nicht vollständig angezeigt wird.&lt;br /&gt;
# [noEdit] auf 0 stellen dann kann man vom Backend-Bereich Text-Dateien (z.B. CSS-Files) verändern.&lt;br /&gt;
# [warning_email_addr] setzten dann bekommt man eine Email wenn sich jemand viermal falsch einloggt&lt;br /&gt;
&lt;br /&gt;
=== Wichtige ToDos im Typo Backend ===&lt;br /&gt;
siehe auch [[Typo3 - Grundeinstellungen]]&lt;br /&gt;
&lt;br /&gt;
# Passwort für Install Tool ändern&lt;br /&gt;
# Ab Typo4.x DB References Updaten&lt;br /&gt;
# Deutsche Sprachpakete im Extension Manage laden (für 3.8 die CSH Files)&lt;br /&gt;
# Standard Templates TS-Templates evt. HTML Template und CSS (für TV und Automaketemplate die Extensions nicht vergessen)&lt;br /&gt;
# Benutzer Konfiguration bzw. Page Konfiguration (UserTS und PageTS)&lt;br /&gt;
# Standard Extensions installieren&lt;br /&gt;
&lt;br /&gt;
== Typo3 auf Unix installieren ==&lt;br /&gt;
Wenn man einen Shell Zugang zum Server hat, bietet sich eine Installation mit den tar Paketen an. Das geht erstens schneller als per FTP und man hat die Möglichkeit mit Symlinks zu arbeiten, die ein späteres Update erleichtern.&lt;br /&gt;
So gehts:&lt;br /&gt;
* Evt. Shell-Zugang erlauben (z.B. mit bash Terminal. Später wieder abschalten!)&lt;br /&gt;
* Remote Zugang z.B. mit Putty herstellen (Session &amp;gt; [IP], SSH / &lt;br /&gt;
* Entweder per FTP die tars (&amp;#039;&amp;#039;&amp;#039;Source und Dummy&amp;#039;&amp;#039;&amp;#039;) &amp;#039;&amp;#039;&amp;#039;hochladen&amp;#039;&amp;#039;&amp;#039; oder direkt mit der Shell vom Server aus laden z.B. mit&lt;br /&gt;
 wget http://prdownloads.sourceforge.net/typo3/typo3_src-4.0.4.tar.gz?download&lt;br /&gt;
 wget http://prdownloads.sourceforge.net/typo3/dummy-4.0.4.tar.gz?download&lt;br /&gt;
... (siehe Typo3 Buch)&lt;br /&gt;
&lt;br /&gt;
* jetzt beide Pakete &amp;#039;&amp;#039;&amp;#039;auspacken&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&lt;br /&gt;
 tar xzf dummy-4.0.2.tar.gz&lt;br /&gt;
 tar xzf typo3_src-4.0.2.tar.gz&lt;br /&gt;
&lt;br /&gt;
* Es entstehen die Verzeichnisse&lt;br /&gt;
 typo3_src-4.0.2&lt;br /&gt;
 dummy-4.0.2&lt;br /&gt;
&lt;br /&gt;
der Inhalt des Dummy Paket liegt später direkt auf der Hauptebene. Deshalb &amp;#039;&amp;#039;&amp;#039;verschieben&amp;#039;&amp;#039;&amp;#039; wir den Inhalt des &amp;#039;&amp;#039;&amp;#039;Dummy Paket&amp;#039;&amp;#039;&amp;#039; eine Ebene nach unten in das Wurzelverzeichnis (die aktuelle Ebene).&lt;br /&gt;
  mv dummy-4.0.2/* ./&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Hinweis: Eine weitere Möglichkeit wäre die Dateien im Ordner zu belassen, ihn sinnvoll umzubenennen (z.B. cms/) und die Domain z.B. als virtual Host auf den Unterordner gehen zu lassen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Es gibt einen &amp;#039;&amp;#039;&amp;#039;Symlink&amp;#039;&amp;#039;&amp;#039; auf der Hauptebene (vorher im Dummy-Verzeichnis)&lt;br /&gt;
  typo3_src -&amp;gt; ../NameDesTypo3SourceOrdners&lt;br /&gt;
  Damit der Symlink stimmt müssen wir Ihn ändern (d.h. löschen oder überschreiben)&lt;br /&gt;
&lt;br /&gt;
 ln -s typo3_src-4.0.2 typo3_src &lt;br /&gt;
&lt;br /&gt;
Wenn man den typo3_src Symlink auf eine andere Source umbiegt kann man ganz schnell ein Update ausprobieren oder eine neue source testen&lt;br /&gt;
* Die Archive und den leeren Dummy Ordner kann man jetzt &amp;#039;&amp;#039;&amp;#039;löschen&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
 rm -r dummy-4.0.2&lt;br /&gt;
 rm dummy-4.0.3.tar.gz&lt;br /&gt;
 rm typo3_src-4.0.2.tar.gz&lt;br /&gt;
* Im Browser müßte jetzt schon was kommen (/typo3 oder /index.php)&lt;br /&gt;
* Mit dem vi Editor können wir die Die Funktion im Installer auskommentieren:&lt;br /&gt;
 vi typo3_src-4.0.2/install/index.php&lt;br /&gt;
* Mit i kommt man in den Einfügemodus Esc verläßt ihn :wq! speichert und schließt den Editor.&lt;br /&gt;
Hinweis: ab Version 4.1 reicht es eine Datei mit dem Namen ENABLE_INSTALL_TOOL im Verzeichnis typo3conf anzulegen um das Install Tool freizuschalten.&lt;br /&gt;
* Jetzt kann man den Typo3 Installer starten&lt;br /&gt;
* Um die Rechte im Terminal anzupassen kann man den Befehl chmod benutzen&lt;br /&gt;
&lt;br /&gt;
Rechte einstellen:(as root): There are at least two options.&lt;br /&gt;
Diese Schritte setzen die Rechte für 4 Ordner:&lt;br /&gt;
* fileadmin/&lt;br /&gt;
* typo3conf/&lt;br /&gt;
* typo3temp/&lt;br /&gt;
* uploads/&lt;br /&gt;
&lt;br /&gt;
a (am Besten)&lt;br /&gt;
&lt;br /&gt;
Diese Kommandos als root ausführen:&lt;br /&gt;
 chgrp -R &amp;lt;wwwserver&amp;gt; fileadmin typo3conf typo3temp uploads&lt;br /&gt;
 chmod -R g+w,o-rwx fileadmin typo3conf typo3temp uploads&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;wwwserver&amp;gt; der Name der Gruppe des Webservers ist&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis:&amp;#039;&amp;#039;&amp;#039; bei 1und1 (mit Plesk) ist die Gruppe i.d.R. www und der Benutzer wwwrun&lt;br /&gt;
&lt;br /&gt;
b (nicht sicher aber einfach)&lt;br /&gt;
&lt;br /&gt;
Nicht auf geteilten Servern nutzen:&lt;br /&gt;
&lt;br /&gt;
Simply run this command:&lt;br /&gt;
 $ chmod -R a+w fileadmin typo3conf typo3temp uploads&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung der Installation aus der Datei &amp;#039;install.txt&amp;#039; der Typo3 4.0.2 Distribution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
**************************&lt;br /&gt;
* UNIX ARCHIVES OF TYPO3 *&lt;br /&gt;
**************************&lt;br /&gt;
&lt;br /&gt;
INTRODUCTION&lt;br /&gt;
============&lt;br /&gt;
&lt;br /&gt;
As you have downloaded this package you seem to know already about TYPO3.&lt;br /&gt;
If you don&amp;#039;t, visit http://typo3.org/ where you can find many useful&lt;br /&gt;
information.&lt;br /&gt;
&lt;br /&gt;
This short guide lists the important steps to install this package.&lt;br /&gt;
&lt;br /&gt;
By default TYPO3 installs into the folder:&lt;br /&gt;
   http://[your.site.name]/&amp;lt;this_site_name&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
Read the additional instructions to install TYPO3 in the root folder:&lt;br /&gt;
   http://[your.site.name]/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE&lt;br /&gt;
==============&lt;br /&gt;
&lt;br /&gt;
Please be aware of the fact that the file transfer protocol (FTP) does not&lt;br /&gt;
support Symlinks. You cannot unpack these archives locally and copy them&lt;br /&gt;
to your server using FTP, even if the target server actually is a Unix&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
So if you don&amp;#039;t have shell access, try to use a terminal emulator instead.&lt;br /&gt;
(PHPshell to give you an example - Google knows all of them!)&lt;br /&gt;
&lt;br /&gt;
If this doesn&amp;#039;t work you&amp;#039;ll have to stick back to the ZIP version :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NEWBIE INFORMATION ABOUT THE TYPO3 FILESYSTEM STRUCTURE&lt;br /&gt;
=======================================================&lt;br /&gt;
&lt;br /&gt;
A Unix TYPO3 installation consists of two parts:&lt;br /&gt;
     1) The &amp;quot;source&amp;quot; package&lt;br /&gt;
     2) The &amp;quot;dummy&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
The dummy package contains the skeleton directory structure for a TYPO3&lt;br /&gt;
installation and a symlink (&amp;#039;typo3_src&amp;#039;) to the location of the source&lt;br /&gt;
package which contains all the PHP files, images, JavaScript files, etc.&lt;br /&gt;
that TYPO3 needs to run.&lt;br /&gt;
&lt;br /&gt;
In other words: You can have several TYPO3 installations with just one&lt;br /&gt;
source package. A typical directory structure looks like this:&lt;br /&gt;
&lt;br /&gt;
/var/www/typo3_src-3.8.1/   # the untared 3.8.0 source package&lt;br /&gt;
/var/www/typo3_src-4.0/     # the untared 4.0 source package&lt;br /&gt;
/var/www/installation1/     # the untared dummy package of a TYPO3&lt;br /&gt;
                            # installation running on TYPO3 3.8.1&lt;br /&gt;
    /typo3_src  --&amp;gt; ../typo3_src-3.8.1/   # a symlink to the 3.8.1 source&lt;br /&gt;
    /typo3conf/&lt;br /&gt;
    /typo3temp/&lt;br /&gt;
    /fileadmin/&lt;br /&gt;
    /.../&lt;br /&gt;
/var/www/installation2/     # the untared dummy package of a TYPO3&lt;br /&gt;
                            # installation running on TYPO3 4.0&lt;br /&gt;
    /typo3_src  --&amp;gt; ../typo3_src-4.0/     # a symlink to the 4.0 source&lt;br /&gt;
    /typo3conf/&lt;br /&gt;
    /typo3temp/&lt;br /&gt;
    /fileadmin/&lt;br /&gt;
    /.../&lt;br /&gt;
&lt;br /&gt;
As you see, the two TYPO3-installations (possibly with different domains)&lt;br /&gt;
can use the same TYPO3 source package. You can even change the source&lt;br /&gt;
package simply be changing the symlink inside the installation directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
STEP BY STEP&lt;br /&gt;
============&lt;br /&gt;
&lt;br /&gt;
1 Get the TYPO3 source package and the TYPO3 dummy package.&lt;br /&gt;
&lt;br /&gt;
2 Copy the archives to the web root of your server.&lt;br /&gt;
  (Debian default is /var/www/, SuSE default is /srv/www/)&lt;br /&gt;
&lt;br /&gt;
3 Unpack the archives:&lt;br /&gt;
  $ tar xzf typo3_src-&amp;lt;version&amp;gt;.tar.gz&lt;br /&gt;
  $ tar xfz dummy-&amp;lt;version&amp;gt;.tar.gz&lt;br /&gt;
&lt;br /&gt;
4 Rename the dummy-&amp;lt;version&amp;gt; directory to fit your needs and make sure it&lt;br /&gt;
  is accessible by your webserver (for example by creating a virtual&lt;br /&gt;
  host). We assume you rename the directory to cms:&lt;br /&gt;
  $ mv dummy-&amp;lt;version&amp;gt; cms&lt;br /&gt;
&lt;br /&gt;
5 Set permissions (as root): There are at least two options.&lt;br /&gt;
  These steps will make four directories writable for the webserver:&lt;br /&gt;
  - cms/fileadmin/&lt;br /&gt;
  - cms/typo3conf/&lt;br /&gt;
  - cms/typo3temp/&lt;br /&gt;
  - cms/uploads/&lt;br /&gt;
&lt;br /&gt;
	5.a (recommended)&lt;br /&gt;
	    Run these commands as root in the cms/ directory:&lt;br /&gt;
	    # chgrp -R &amp;lt;wwwserver&amp;gt; fileadmin typo3conf typo3temp uploads&lt;br /&gt;
	    # chmod -R g+w,o-rwx fileadmin typo3conf typo3temp uploads&lt;br /&gt;
&lt;br /&gt;
	    ... where &amp;lt;wwwserver&amp;gt; is the name of the group your webserver&lt;br /&gt;
	    is running as&lt;br /&gt;
&lt;br /&gt;
	5.b (insecure but easy to apply)&lt;br /&gt;
	    I repeat: This is insecure!&lt;br /&gt;
	    Do not use this method if you are working on a shared server!&lt;br /&gt;
&lt;br /&gt;
	    Simply run this command:&lt;br /&gt;
	    $ chmod -R a+w fileadmin typo3conf typo3temp uploads&lt;br /&gt;
&lt;br /&gt;
6 Check the symlink cms/typo3_src and make sure it points to the source&lt;br /&gt;
  directory.&lt;br /&gt;
  (See above: &amp;quot;Newbie information about the TYPO3 filesystem structure&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
7 In your browser, visit&lt;br /&gt;
  http://[your.site.name]/cms/&lt;br /&gt;
&lt;br /&gt;
8 Follow the instructions in the 1-2-3 install tool&lt;br /&gt;
&lt;br /&gt;
9 From this point, you can access the backend through&lt;br /&gt;
  http://[your.site.name]/cms/typo3/&lt;br /&gt;
  with the username &amp;quot;admin&amp;quot; and password &amp;quot;password&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s it :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSTALLING TYPO3 IN THE WEBROOT FOLDER&lt;br /&gt;
======================================&lt;br /&gt;
&lt;br /&gt;
1 Follow the steps 1-6 above.&lt;br /&gt;
&lt;br /&gt;
2 Move the files in the cms/ folder up one level.&lt;br /&gt;
&lt;br /&gt;
  $ cd cms&lt;br /&gt;
  $ mv * ../&lt;br /&gt;
  $ cd ../&lt;br /&gt;
&lt;br /&gt;
3 Update the symlink&lt;br /&gt;
&lt;br /&gt;
  $ rm typo3_src&lt;br /&gt;
  $ ln -s ./typo3_src-&amp;lt;version&amp;gt; typo3_src&lt;br /&gt;
&lt;br /&gt;
4 Now TYPO3 runs in http://[your.site.name]/&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s it :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WHAT SHOULD YOU DO IF YOU HAVE A PROBLEM?&lt;br /&gt;
=========================================&lt;br /&gt;
&lt;br /&gt;
TYPO3 is a powerful and complex professional application. When you start&lt;br /&gt;
out there will be many things you don´t understand, or that don&amp;#039;t seem to&lt;br /&gt;
make sense. There is a widely used mailing list (more information on&lt;br /&gt;
typo3.com &amp;amp; typo3.org) where many experienced users and developers&lt;br /&gt;
lurk... they are always willing to help, provided you followed these steps&lt;br /&gt;
BEFORE you ask your question:&lt;br /&gt;
&lt;br /&gt;
1 - Read all available documentation carefully&lt;br /&gt;
&lt;br /&gt;
2 - Read the webserver error logfiles&lt;br /&gt;
    (for example /var/log/apache/error.log)&lt;br /&gt;
&lt;br /&gt;
3 - Read all available documentation again&lt;br /&gt;
&lt;br /&gt;
4 - Search the mailing list archive carefully&lt;br /&gt;
&lt;br /&gt;
5 - If you still can&amp;#039;t figure it out - ask the list...:&lt;br /&gt;
      - Newsgroup:     news://news.netfielders.de/&lt;br /&gt;
      - Mailing lists: http://lists.netfielders.de/&lt;br /&gt;
&lt;br /&gt;
    When posting to one of the lists, see the following guidelines...&lt;br /&gt;
      - Be polite&lt;br /&gt;
	 Always include the version of used TYPO3 and server environment&lt;br /&gt;
	 (phpinfo())... note that this is available within the TYPO3&lt;br /&gt;
	 Install Tool&lt;br /&gt;
      - Be as specific and clear as possible - questions like &amp;quot;my TYPO3&lt;br /&gt;
	 installation does not work - what can I do???&amp;quot; will be ignored.&lt;br /&gt;
	 Although English may not be your first language, if those reading&lt;br /&gt;
	 your posting can&amp;#039;t understand it, you won&amp;#039;t get the help you need&lt;br /&gt;
      - If you are really having a tough time getting something working,&lt;br /&gt;
	 stay cool and don&amp;#039;t criticise or flame. Problems are normally&lt;br /&gt;
	 caused by lack of research into the documentation, or&lt;br /&gt;
	 misunderstanding, not because of bugs. Be logical about your&lt;br /&gt;
	 troubleshooting, and you&amp;#039;ll get there&lt;br /&gt;
&lt;br /&gt;
6 - If you have identified a genuine new bug, report it at&lt;br /&gt;
    http://bugs.typo3.org/ ...do not post to the list about it&lt;br /&gt;
&lt;br /&gt;
Please be aware that if you ask questions that are answered in the&lt;br /&gt;
available documentation, you may not get a reply, or any help from the&lt;br /&gt;
developers or any experienced users!&lt;br /&gt;
&lt;br /&gt;
We are aware that there is still some work to be done on the&lt;br /&gt;
documentation, and the platform for user support... please forgive us for&lt;br /&gt;
not having all these gaps filled. If you feel that some information is&lt;br /&gt;
missing, hard to find or just plain wrong, or you have a suggestion on&lt;br /&gt;
improving TYPO3 or the &amp;quot;support services&amp;quot;, please let us know so that we&lt;br /&gt;
can do what is necessary. You could also volunteer to help with the work!&lt;br /&gt;
&lt;br /&gt;
(c) Nigel Jackson, Ingmar Schlecht&lt;br /&gt;
    Unix related additions made by Michael Stucki and some Wiki users:&lt;br /&gt;
    http://wiki.typo3.org/index.php/Tgz-INSTALL.txt&lt;br /&gt;
&lt;br /&gt;
-- Michael Stucki &amp;lt;michael@typo3.org&amp;gt;  Sun,  26 Mar 2006  22:10:53 +0100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Probleme mit Plesk ==&lt;br /&gt;
The script whose uid is 10001 is not allowed to access /httpdocs/html/typo3temp/cs owned by uid 30 in /httpdocs/html/t3lib/class.t3lib_div.php on line 2420&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das deutet in der Regel darauf hin, dass was mit den User-Rechten der Files nicht passt. Bei Plesk sollten die Typo3 Sourcen, sowie &amp;quot;httpdocs&amp;quot; dem FTP-User aus der Gruppe &amp;quot;psaserv&amp;quot; gehören.&lt;br /&gt;
&lt;br /&gt;
== ImageMagick installieren ==&lt;br /&gt;
=== Mit Yast installieren ===&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/ImageMagick_installieren&lt;br /&gt;
&lt;br /&gt;
=== ImageMagick auf Vserver global installieren ===&lt;br /&gt;
19 01 2007&lt;br /&gt;
&lt;br /&gt;
Wenn man ImageMagick auf seinem Vserver global installieren möchte, um für alle Typo3 installationen ImageMagick nutzen zu können, kann man wie folgt vorgehen.&lt;br /&gt;
&lt;br /&gt;
Auch hier eignet sich die  Version 4.2.9., zu finden unter typo3.org, recht gut.&lt;br /&gt;
http://typo3.sunsite.dk/software/linux/ &lt;br /&gt;
&lt;br /&gt;
Danach kopiert man am einfachsten mit winscp die Dateien auf den Server in das Verzeichnis:&lt;br /&gt;
&lt;br /&gt;
/usr/bin.&lt;br /&gt;
Hier ist nur der Ordner “bin” für diese Anwendung interessant.&lt;br /&gt;
Im Ordner “bin” findet man folgende Dateien:&lt;br /&gt;
&lt;br /&gt;
convert, combine, identify, convert.bin, combine.bin, identify.bin, wrapper.sh.&lt;br /&gt;
Die Dateien ohne die Endung “.bin” sind nur Verknüpfungen, und erstmal nicht wichtig.&lt;br /&gt;
Gebraucht werden nur convert.bin, combine.bin, identify.bin!&lt;br /&gt;
&lt;br /&gt;
Die Entpackten Dateien liegen nur im usr/bin Verzeichnis.&lt;br /&gt;
Typo3 fragt bei der Installation automatisch dieses Verzeichnis ab, und sucht nach der passenden Programmversion.&lt;br /&gt;
&lt;br /&gt;
Das wars&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ergänzung (Steff)&lt;br /&gt;
&lt;br /&gt;
bei Einsatz von Plesk kann es sein das diese Vorgehensweise nicht funktioniert. Dort kann man aber die statisch kompilierte Version in das CGI-Verzeichnis der virtuellen Hosts legen. Etwa unter /srv/www/vhosts/meineDomain.de/cgi-bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf den 1und1 Webhosting-Paketen läuft die Geschichte im Prinzip ziemlich einfach ab.&lt;br /&gt;
Falls keine root -Rechte vorhanden, entpackt man IM erstmal lokal in ein Verzeichnis.&lt;br /&gt;
Man erhält folgende Ordner Struktur.&lt;br /&gt;
&lt;br /&gt;
Hier ist nur der Ordner “bin” für diese Anwendung interessant.&lt;br /&gt;
Im Ordner “bin” findet man folgende Dateien:&lt;br /&gt;
&lt;br /&gt;
convert, combine, identify, convert.bin, combine.bin, identify.bin, wrapper.sh.&lt;br /&gt;
Die Dateien ohne die Endung “.bin” sind nur Verknüpfungen, und erstmal nicht wichtig.&lt;br /&gt;
Gebraucht werden nur convert.bin, combine.bin, identify.bin!&lt;br /&gt;
&lt;br /&gt;
Diese 3 Dateien kopiert man jetzt mit einem ftp Programm auf den Webspace&lt;br /&gt;
in den Ordner cgi-bin, und vergibt diesem Ordner vorerst mal alle Rechte (chmod 777)&lt;br /&gt;
&lt;br /&gt;
Im Ordner cgi-bin findet man nun die Dateien convert.bin, combine.bin, identify.bin&lt;br /&gt;
Wichtig ist jetzt, das die Endung .bin entfernt wird.&lt;br /&gt;
&lt;br /&gt;
Diesen 3 Dateien auch erstmal auf chmod 777&lt;br /&gt;
 Ergänzung Steff: später die Gruppe und Besitzer auf php-user stellen und Rechte auf 755&lt;br /&gt;
&lt;br /&gt;
Jetzt wechselt man ins Typo3 Install-tool auf den Punkt “All Configuration”&lt;br /&gt;
&lt;br /&gt;
Jetzt muss nur noch IM aktiviert werden, und der absolute Pfad zu den Dateien angeben werden.&lt;br /&gt;
Speichern nicht vergessen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zur Kontrolle wechselt man jetzt noch mal zum Punkt “Basic Configuration”.&lt;br /&gt;
Dort müsste jetzt IM aktiviert und erkannt werden.&lt;br /&gt;
&lt;br /&gt;
Das war’s.&lt;br /&gt;
Installation unter einem VPS folgt&lt;br /&gt;
&lt;br /&gt;
Quelle (mit Bildern): http://www.webdesign-limburg.com/blog/?p=21 und http://www.webdesign-limburg.com/blog/?p=21&lt;br /&gt;
&lt;br /&gt;
=== auf Virtuellem Server (Suse) ===&lt;br /&gt;
Ist es schon da? &lt;br /&gt;
 convert -version&lt;br /&gt;
sollte dann die Version ausgeben&lt;br /&gt;
Anleitung unter:&lt;br /&gt;
http://www.imagemagick.org/script/install-source.php#unix&lt;br /&gt;
Klassisch:&lt;br /&gt;
&lt;br /&gt;
== Image Magick über SSH Zugang auf VMWare ==&lt;br /&gt;
Quelle: http://www.4many.net/imagemagick_setup.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ImageMagick Installation on Virtual Host Account with SSH Access&lt;br /&gt;
Situation: 	Customer got virtual host with ssh access&lt;br /&gt;
TYPO3 was installed&lt;br /&gt;
no ImageMagick&lt;br /&gt;
after installing static linked package imagemagick-4.2.9_i386-static-1.tar.gz&lt;br /&gt;
TYPO3 complained that no valid version could be found&lt;br /&gt;
Problem: 	It turned out that due to the virtual setup and the setup of the Apache the environment got lost and the ImageMagick.so.9 couldn&amp;#039;t be found during the exec()&lt;br /&gt;
Challenge: 	&lt;br /&gt;
&lt;br /&gt;
   1. convince the provider to change the setup&lt;br /&gt;
      Nice try!&lt;br /&gt;
   2. convince the provider to install ImageMagick globally&lt;br /&gt;
      No support for third party products&lt;br /&gt;
   3. fix it in TYPO3 to pass environment&lt;br /&gt;
      possible solution, just no time to do so&lt;br /&gt;
&lt;br /&gt;
Solution: 	Fixed it on script level&lt;br /&gt;
&lt;br /&gt;
   1. move required executable to *.bin, i.e.&lt;br /&gt;
&lt;br /&gt;
      mv convert convert.bin&lt;br /&gt;
      mv combine combine.bin&lt;br /&gt;
      mv identify identify.bin&lt;br /&gt;
&lt;br /&gt;
   2. create script&lt;br /&gt;
&lt;br /&gt;
      pico convert&lt;br /&gt;
&lt;br /&gt;
   3. content of the script file&lt;br /&gt;
&lt;br /&gt;
      #!/usr/local/bin/bash&lt;br /&gt;
      export PATH; PATH=&amp;quot;/home/usr203227042/ImageMagick-4.2.9/bin:$PATH&amp;quot;&lt;br /&gt;
      export MAGICK_HOME=&amp;quot;/home/usr203227042/ImageMagick-4.2.9&amp;quot;&lt;br /&gt;
      export LD_LIBRARY_PATH=&amp;quot;/home/usr203227042/ImageMagick-4.2.9/lib&amp;quot;&lt;br /&gt;
      /home/usr203227042/ImageMagick-4.2.9/bin/convert.bin $*&lt;br /&gt;
&lt;br /&gt;
   4. make script executable&lt;br /&gt;
&lt;br /&gt;
      chmod 755 convert&lt;br /&gt;
&lt;br /&gt;
   5. repeat steps 2.-4. for combine and identify and don&amp;#039;t forget to change convert.bin to the appropriate value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Trennung von Produktions und Live-Server (Bearbeitung der Seiten und Darstellung) ==&lt;br /&gt;
Für den Website-Betrieb sind die Verzeichnisse TSLib und T3Lib notwendig um eine Website auszuliefern.&lt;br /&gt;
&lt;br /&gt;
Für die Bearbeitung von Seiten sind die Dateien im Typo3 Verzeichnis zuständig. Ohne Typo3 Verzeichnis gibt es kein Backend aber die Seiten funktionieren trotzdem. Ein gutes Mittel um die Seiten vor Angreifern zu schützen.&lt;br /&gt;
&lt;br /&gt;
siehe auch [[Typo3 - Update]]&lt;br /&gt;
&lt;br /&gt;
== Zentrale Typo3-Installation vs mehrere Typo3 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verschiedene Gründe:&lt;br /&gt;
1. Es gibt aus Sicherheitsgründen keinen Remote Zugang für unseren Server. Das macht es etwas umständlicher.&lt;br /&gt;
&lt;br /&gt;
2. Von Version 3.7-3.8 gab es bei manchen Extensions Probleme mit Updates, bzw. es gab Extensions die das Typo auch mal aus dem Tritt brachten. Wenn wir alle Präsenzen auf einem Typo laufen lassen würden wären bei einem Fehler alle Homepages betroffen und Nebenwirkungen unter Umständen nicht so einfach zu sehen. Mit der getrennten Installation kann man auch bei sehr experimentellen Extensions relativ sicher updaten. Auch wenn wir verschiedene Datenbanken benutzen würden. Erst ab Version 4 gibt es außerdem die Möglichkeit Seiten vernünftig zu testen bevor Sie bei Änderungen Online gehen. Das war bisher nur mit einer ziemlich umständlichen Extension möglich.&lt;br /&gt;
&lt;br /&gt;
Manche würden das  vielleicht als Übervorsichtig auslegen. Im Endeffekt hat es nur den Nachteil der längeren Uploadzeiten. Speicherplatz spielt im Grunde kaum eine Rolle. Der Server wird auch nicht wesentlich mehr belastet. Weil die Skripte egal ob in einer oder in mehreren Typos ja immer für jede Anfrage abgearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
3. Wir haben den Kunden eine komplette Installation verkauft mit der Sie machen können was Sie wollen. Dafür bekommen Sie natürlich auch eine eigene Installation.&lt;br /&gt;
&lt;br /&gt;
Für die Miettypos werden wir allerdings eine einzelne Installation benutzen. Für eine Agentur bietet sich ebenfalls eine eigene Installation an auf der die betreuten Präsenzen laufen.&lt;br /&gt;
&lt;br /&gt;
4. Manche Typos laufen auf anderen Servern ;-) Z.T. mit Anpassungen im Quellcode vom Typo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Weitere Pro und Kontra Argumente ===&lt;br /&gt;
&lt;br /&gt;
* Zeitersparnis beim Update in zentraler Installation&lt;br /&gt;
* Ein Backend=&amp;gt;Admin Account unübersichtlich&lt;br /&gt;
&lt;br /&gt;
== automatische Installation ==&lt;br /&gt;
&lt;br /&gt;
Überlegungen zum automatischen Installieren:&lt;br /&gt;
&lt;br /&gt;
Ausgehend von einer fertigen Grundinstallation mit Benutzern und Rechten plus einigen Dummy-Seiten müßten sich per Knopfdruck Installationen anfertigen lassen.&lt;br /&gt;
&lt;br /&gt;
Einzelschritte:&lt;br /&gt;
* Notwendige Dateien (Typo3 System, Filadmin Ordner)&lt;br /&gt;
* Datenbank (inkl. Benutzer und Dummy Inhalten)&lt;br /&gt;
* Config-Datei (automatisiert ?)&lt;br /&gt;
&lt;br /&gt;
=== Vorstufen ===&lt;br /&gt;
1. Halbautomatisch&lt;br /&gt;
* komplettes DB Dump über phpMyAdmin o. mysqldump einspielen&lt;br /&gt;
* typo 3 Installieren &lt;br /&gt;
* fileadmin Ordner aufspielen&lt;br /&gt;
&lt;br /&gt;
2. Automatisch:&lt;br /&gt;
&lt;br /&gt;
* alle benötigten Dateien auf Server zum automatischen Download bereitstellen&lt;br /&gt;
* Batchdatei zum automatischen Ablauf&lt;br /&gt;
&lt;br /&gt;
3. Anpassungen:&lt;br /&gt;
* neuer Header&lt;br /&gt;
* Maße, Farben und Schrift im CSS&lt;br /&gt;
* Copyright anpassen&lt;br /&gt;
* Printversion anpassen&lt;br /&gt;
* Email Adresse in Kontaktformular&lt;br /&gt;
&lt;br /&gt;
== Typo3 - Update ==&lt;br /&gt;
=== 3.8 auf 4.0 ===&lt;br /&gt;
Ordner typo3, t3lib ersetzen&lt;br /&gt;
misc aufspielen&lt;br /&gt;
index.php ersetzen (root)&lt;br /&gt;
&lt;br /&gt;
Update Wizard im Install Tool ausführen&lt;br /&gt;
&lt;br /&gt;
Im Database Analyzer Compare und danach die erforderlichen Updates der Datenbanktabellen ausführen.&lt;br /&gt;
&lt;br /&gt;
Nicht benötigte Extensions entfernen und entsprechend Templates anpassen&lt;br /&gt;
&lt;br /&gt;
Alte Sprachpakete löschen und mit dem Translation Handling im Extension Manager die benötigten Sprachen aktualisieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kompatibilitätsmodus 3.8 für Version 4 ===&lt;br /&gt;
Nach Update von 3.8.x auf 4.0 läuft das Typo zunächst im Kompatibilitätsmodus.&lt;br /&gt;
&lt;br /&gt;
Folgendes sollte verändert werden damit die Ausgabe auch nach umschalten wieder geht.&lt;br /&gt;
The following updates will be performed:&lt;br /&gt;
&lt;br /&gt;
changeCompatibilityVersion&lt;br /&gt;
TYPO3 output is currently compatible to version 3.8. To use all the new features in the current TYPO3 version, make sure you follow the guidelines below to upgrade without problems.&lt;br /&gt;
&lt;br /&gt;
Follow the steps below carefully and confirm every step!&lt;br /&gt;
You will see this list again after you performed the update.&lt;br /&gt;
CMS Frontend&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Word separator character for simulateStaticDocument is changed from underscore (_) to hyphen (-) to make URLs more friendly for search enginesURLs that are already existing (e.g. external links to your site) will still work like before.&lt;br /&gt;
&lt;br /&gt;
      You can set the separator character back to an underscore by putting the following line into the Setup section of your Page TypoScript template:&lt;br /&gt;
&lt;br /&gt;
      config.simulateStaticDocuments_replacementChar = _&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      CSS Stylesheets and JavaScript are put into an external file by default.&lt;br /&gt;
&lt;br /&gt;
      Technically, that means that the default value of &amp;quot;config.inlineStyle2TempFile&amp;quot; is now set to &amp;quot;1&amp;quot; and that of &amp;quot;config.removeDefaultJS&amp;quot; to &amp;quot;external&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Acknowledged&lt;br /&gt;
CSS Styled Content: Accessibility improvements&lt;br /&gt;
&lt;br /&gt;
The rendering of the following elements will change:&lt;br /&gt;
&lt;br /&gt;
    * tt_content.menu (used f.e. for sitemaps): Instead of div-tags, lists are used now.&lt;br /&gt;
&lt;br /&gt;
    * tt_content.mailform: Mailforms do not use tables anymore, instead, they use the div-tag. Besides that, mailforms are accessible now.&lt;br /&gt;
&lt;br /&gt;
    * The p-tag has been removed from all table cells.&lt;br /&gt;
&lt;br /&gt;
    * CSS based &amp;quot;image&amp;quot; and &amp;quot;text with image&amp;quot;&lt;br /&gt;
      As the extension cron_cssstyledimgtext has been merged into the core, rendering of the content elements &amp;quot;image&amp;quot; and &amp;quot;text with image&amp;quot; has been changed to be CSS instead of table based. Read the 4.0 release notes for further information.&lt;br /&gt;
&lt;br /&gt;
You will have to update your stylesheets to comply with these changes.&lt;br /&gt;
&lt;br /&gt;
 Acknowledged&lt;br /&gt;
&lt;br /&gt;
 Check all (ignore selection above)&lt;br /&gt;
WARNING: this might break the output of your website.&lt;br /&gt;
Show database queries performed&lt;/div&gt;</summary>
		<author><name>91.47.59.186</name></author>
	</entry>
</feed>