HTML-Dateien mit korrektem Charset

This commit is contained in:
Oliver85
2012-05-14 22:32:29 +02:00
parent 67a725449c
commit 257034256f
3 changed files with 234 additions and 211 deletions

View File

View File

@@ -6,16 +6,16 @@
<body>
<h1>Dokumentation Opencaching XML-Interface Version 1.1</h1>
<p>
Das XML-Interface dient zum automatisierten abfragen aller Caches, Logeintr<74>,
Benutzer und/oder Bilder. Dieses Interface ist nicht f<>benutzer gedacht,
sondern prim<69>f<EFBFBD>site-Entwickler.
Das XML-Interface dient zum automatisierten abfragen aller Caches, Logeintr<74>ge,
Benutzer und/oder Bilder. Dieses Interface ist nicht f<>r Endbenutzer gedacht,
sondern prim<69>r f<>r Website-Entwickler.
</p>
<h2>Ausgabeformat</h2>
<p>
Die Ausgabe ist eine oder mehrere xml,zip,gz&nbsp;oder bz2-Dateien. Es stehen 2
<09>ertragungsmodi bereit: in Paketen zu&nbsp;je 500 Datens<6E>en&nbsp;oder in
<09>bertragungsmodi bereit: in Paketen zu&nbsp;je 500 Datens<6E>tzen&nbsp;oder in
einer Datei.
<P>Die folgenden XML-Abschnitte stehen zur Verf<72> Sie werden immer in dieser
<P>Die folgenden XML-Abschnitte stehen zur Verf<72>gung. Sie werden immer in dieser
Reihenfolge ausgegeben:
<ol>
<li>
@@ -25,28 +25,28 @@
<li>
cachedesc (Cachebeschreibungen)
<li>
cachelog (Logeintr<74>)
cachelog (Logeintr<74>ge)
<li>
picture (Bilder)
<li>
removedobject (gel<65>te Objekte)</li>
removedobject (gel<65>schte Objekte)</li>
</ol>
<P></P>
<h3>Allgemeine XML-Elemente</h3>
<h4>lastmodified</h4>
<p>Datum an dem dieser Datensatz zuletzt ge<67>ert wurde. Es werden keine
Abh<62>igkeiten ber<65>htigt. D.h. Wenn eine Cachebeschreibung ge<67>ert wird,
<09>ert sich nur deren lastmodified, nicht jedoch das des Caches. Datumsangaben
<p>Datum an dem dieser Datensatz zuletzt ge<67>ndert wurde. Es werden keine
Abh<62>ngigkeiten ber<65>cksichtigt. D.h. Wenn eine Cachebeschreibung ge<67>ndert wird,
<09>ndert sich nur deren lastmodified, nicht jedoch das des Caches. Datumsangaben
sind immer in der Form "yyyy-mm-dd hh:mm:ss" oder "yyyy-mm-dd"</p>
<h4>datecreated</h4>
<p>Datum an dem dieser Datensatz angelegt wurde.</p>
<h4>id</h4>
<p>Zu unterscheiden ist die id (identifier) und die uuid (universal unique
identifier). Die id (Zahl) ist ein nur auf der jeweiligen Webseite g<>r
identifier, w<>end die uuid (alphanumerische Folge) auf jeder Seite die
Opencaching-Daten verwendet g<>sein sollte. Beispiel: bei dem Datenabgleich
identifier). Die id (Zahl) ist ein nur auf der jeweiligen Webseite g<>ltiger
identifier, w<>hrend die uuid (alphanumerische Folge) auf jeder Seite die
Opencaching-Daten verwendet g<>ltig sein sollte. Beispiel: bei dem Datenabgleich
von www.opencaching.de und devel.opencaching.de wird auf devel.opencaching.de
eine neue id f<> Datensatz erzeugt und die uuid beibhalten.</p>
eine neue id f<>r den Datensatz erzeugt und die uuid beibhalten.</p>
<h3>Attributliste</h3>
<p>&lt;attrlist&gt;<br />
&nbsp; &lt;attr id="1" icon_large="http://www.opencaching.de/images/attributes/night.gif"<br />
@@ -67,7 +67,7 @@
&nbsp; &lt;attr id="8" icon_large="http://www.opencaching.de/images/attributes/letterbox.gif"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icon_no="http://www.opencaching.de/images/attributes/letterbox-no.gif"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icon_undef="http://www.opencaching.de/images/attributes/letterbox-undef.gif"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[Letterbox (ben<65>t Stempel)]]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[Letterbox (ben<65>tigt Stempel)]]&gt;<br />
&nbsp; &lt;/attr&gt;<br />
&lt;/attrlist&gt;<br />
</p>
@@ -82,7 +82,7 @@
<h4>username</h4>
<p>Benutzername</p>
<h4>pmr</h4>
<p>1: Der Benutzer hat angegeben ein PMR-Funkger<65>auf Kanal 2 mit auf Tour zu
<p>1: Der Benutzer hat angegeben ein PMR-Funkger<65>t auf Kanal 2 mit auf Tour zu
nehmen.<br>
0: Keine Angabe</p>
<h3>cache (Caches)</h3>
@@ -96,7 +96,7 @@
&nbsp; &lt;type id="2" short="Trad."&gt;&lt;![CDATA[normaler
Cache]]&gt;&lt;/type&gt;<br>
&nbsp; &lt;status id="2"&gt;&lt;![CDATA[Momentan nicht
verf<72>]&gt;&lt;/status&gt;<br>
verf<72>gbar]]&gt;&lt;/status&gt;<br>
&nbsp; &lt;country id="DE"&gt;&lt;![CDATA[Deutschland]]&gt;&lt;/country&gt;<br>
&nbsp; &lt;size id="2"&gt;&lt;![CDATA[mikro]]&gt;&lt;/size&gt;<br>
&nbsp; &lt;desclanguages&gt;DE&lt;/desclanguages&gt;<br>
@@ -133,7 +133,7 @@
&nbsp; &lt;lastmodified&gt;2005-12-24 14:38:13&lt;/lastmodified&gt;<br>
&lt;/cachedesc&gt;
</p>
<h3>cachelog (Logeintr<74>)</h3>
<h3>cachelog (Logeintr<74>ge)</h3>
<p>
&lt;cachelog&gt;<br>
&nbsp; &lt;id id="13037"&gt;F0DAC335-0FA6-3479-45AF-03E2F6BC28B9&lt;/id&gt;<br>
@@ -168,7 +168,7 @@
&nbsp; &lt;lastmodified&gt;2005-12-24 01:01:38&lt;/lastmodified&gt;<br>
&lt;/picture&gt;
</p>
<h3>removedobject (gel<65>te Objekte)</h3>
<h3>removedobject (gel<65>schte Objekte)</h3>
<p>
&lt;removedobject&gt;<br>
&nbsp; &lt;id id="748" /&gt;<br>
@@ -179,13 +179,13 @@
</p>
<h2>Datenauswahl</h2>
<p>Die Auswahl erfolgt zum einen durch den Paramter modifiedsince, mit dem
inkrementelle Updates gesteuert werden, zum anderen <20>ine Gebietsauswahl.</p>
<h3>Zu <20>agende Daten ausw<73>en</h3>
<P>Folgende Parameter stehen zur Verf<72>um die zu <20>agenden Daten
auszuw<75>en.</P>
<P>Die Werte d<>1 oder 0 sein, Default ist 0.<BR>
0=Datens<6E>e nicht <20>agen<BR>
1=Datens<6E>e <20>agen</P>
inkrementelle Updates gesteuert werden, zum anderen <20>ber eine Gebietsauswahl.</p>
<h3>Zu <20>bertragende Daten ausw<73>hlen</h3>
<P>Folgende Parameter stehen zur Verf<72>gung um die zu <20>bertragenden Daten
auszuw<75>hlen.</P>
<P>Die Werte d<>rfen 1 oder 0 sein, Default ist 0.<BR>
0=Datens<6E>tze nicht <20>bertragen<BR>
1=Datens<6E>tze <20>bertragen</P>
<UL>
<LI>
user
@@ -200,30 +200,30 @@
<LI>
removedobject</LI></UL>
<h3>modifiedsince</h3>
<p>Alle Datens<6E> <20>agen, die nach diesem Datum angelegt oder modifiziert
<p>Alle Datens<6E>tz <20>bertragen, die nach diesem Datum angelegt oder modifiziert
wurden. Das Datumsformat ist yyyymmddhhnnss</p>
<h3>Gebietsauswahl</h3>
<p>Es muss keine Gebietsauswahl getroffen werden. Eine Kombination von Land,
Koordinaten oder cacheid ist nicht m<>ch.</p>
Koordinaten oder cacheid ist nicht m<>glich.</p>
<h4>Nach Land</h4>
<p>Parameter country ... wird dieser Parameter angegeben, werden nur Datens<6E>
<09>agen, die mit Caches in Zusammenhang stehen, die in diesem Land versteckt
wurden. User-Records werden nicht <20>agen, removedobjects werden alle
<09>gen.</p>
<P>F<EFBFBD>der muss dabei angegeben werden, ob nur Bilder <20>agen werden die
<p>Parameter country ... wird dieser Parameter angegeben, werden nur Datens<6E>tz
<09>bertragen, die mit Caches in Zusammenhang stehen, die in diesem Land versteckt
wurden. User-Records werden nicht <20>bertragen, removedobjects werden alle
<09>betragen.</p>
<P>F<EFBFBD>r Bilder muss dabei angegeben werden, ob nur Bilder <20>bertragen werden die
von Caches stammen oder auch von Cachelogs:<BR>
Paramter: picturefromcachelog = 0/1, default 0</P>
<h4>Nach Koordinaten</h4>
<P>Parameter&nbsp;lat, lon, distance&nbsp;... werden diese Parameter angegeben,
werden nur Datens<6E> <20>agen, die mit Caches in Zusammenhang stehen, die in
diesem&nbsp;Gebiet versteckt wurden. User-Records werden nicht <20>agen,
removedobjects werden alle <20>gen.</P>
werden nur Datens<6E>tz <20>bertragen, die mit Caches in Zusammenhang stehen, die in
diesem&nbsp;Gebiet versteckt wurden. User-Records werden nicht <20>bertragen,
removedobjects werden alle <20>betragen.</P>
<h4>Nach cacheid</h4>
<P>Parameter&nbsp;cacheid&nbsp;... wird dieser Parameter angegeben,
werden nur Datens<6E> <20>agen, die mit Cache in Zusammenhang stehen.
User-Records werden nicht <20>agen,
removedobjects werden alle <20>gen.</P>
<P>F<EFBFBD>der muss dabei angegeben werden, ob nur Bilder <20>agen werden die
werden nur Datens<6E>tz <20>bertragen, die mit Cache in Zusammenhang stehen.
User-Records werden nicht <20>bertragen,
removedobjects werden alle <20>betragen.</P>
<P>F<EFBFBD>r Bilder muss dabei angegeben werden, ob nur Bilder <20>bertragen werden die
von Caches stammen oder auch von Cachelogs:<BR>
Paramter: picturefromcachelog = 0/1, default 0</P>
<h4>Nach Wegpunkt</h4>
@@ -247,7 +247,7 @@
sind<BR>
<A>http://www.opencaching.de/xml/ocxml11.php?modifiedsince=&lt;date&gt;&amp;picture=1&amp;country=DE</A>&amp;picturefromcachelog=1</P>
<P>Diese Anfragen werden mit einem kurzen XML-Stream beantwortet, der die
XML-Session-Id zur<75>t. Mit dieser Id k<>n dann die Daten abgerufen
XML-Session-Id zur<75>ckgibt. Mit dieser Id k<>nnen dann die Daten abgerufen
werden.</P>
<P>&lt;?xml version="1.0"?&gt;<BR>
&lt;ocxmlsession&gt;<BR>
@@ -255,12 +255,12 @@
&nbsp; &lt;records user="193" cache="211" cachedesc="235" cachelog="439"
picture="108" removeobject="19" /&gt;<BR>
&lt;/ocxmlsession&gt;</P>
<P>Die Sessionid ist 24h g<> danach muss eine neue sessionid angefordert
werden. Die Anzahl der Datens<6E> muss nicht exakt mit den <20>agenen
<09>nstimmen - mehr Datens<6E>e werden jedoch auf keinen Fall <20>agen. Die
Summe der Datens<6E>e ist in diesem Beispiel 1205 - es werden also 3 Aufrufe
ben<65>t (500, 500, 205 Datens<6E>e).</P>
<P>Die Daten k<>n dann mit folgender Anfrage abgerufen werden:<BR>
<P>Die Sessionid ist 24h g<>ltig, danach muss eine neue sessionid angefordert
werden. Die Anzahl der Datens<6E>tz muss nicht exakt mit den <20>bertragenen
<09>bereinstimmen - mehr Datens<6E>tze werden jedoch auf keinen Fall <20>bertragen. Die
Summe der Datens<6E>tze ist in diesem Beispiel 1205 - es werden also 3 Aufrufe
ben<65>tigt (500, 500, 205 Datens<6E>tze).</P>
<P>Die Daten k<>nnen dann mit folgender Anfrage abgerufen werden:<BR>
<A>http://www.opencaching.de/xml/ocxml11.php?sessionid=12345&amp;file=1</A><BR>
<A>http://www.opencaching.de/xml/ocxml11.php?sessionid=12345&amp;file=2</A><BR>
<A>http://www.opencaching.de/xml/ocxml11.php?sessionid=12345&amp;file=3</A></P>
@@ -270,14 +270,14 @@
<P>Beispeil:<BR>
<A>http://www.opencaching.de/xml/ocxml11.php?modifiedsince=&lt;date&gt;&amp;user=1&amp;cache=1&amp;cachedesc=1&amp;cachelog=1&amp;picture=1&amp;removedobject=1&amp;session=0</A></P>
<H3>Dateikomprimierung einstellen</H3>
<P>Dei Dateikomprimierung kann mit dem Paramter zip eingestellt weren. M<>che
<P>Dei Dateikomprimierung kann mit dem Paramter zip eingestellt weren. M<>gliche
Werte sind 0, zip, bzip2, gzip. Null bedeutet hier keine Kompression. Wird
keine Kompression angegeben, wird zip verwendet.</P>
<P>Beispeil:<BR>
<A>http://www.opencaching.de/xml/ocxml11.php?modifiedsince=&lt;date&gt;&amp;user=1&amp;cache=1&amp;cachedesc=1&amp;cachelog=1&amp;picture=1&amp;removedobject=1&amp;session=0&amp;zip=bzip2</A><BR>
<A>http://www.opencaching.de/xml/ocxml11.php?sessionid=12345&amp;file=1&amp;zip=gzip</A></P>
<H3>XML-Optionen</H3>
<P>Die folgenden XML-Optionen m<>bei jedem Aufruf <20>ben
<P>Die folgenden XML-Optionen m<>ssen bei jedem Aufruf <20>bergeben
werden.</P>
<P>xmldecl ... 0 = keine Xml-Deklaration / (Default) 1=Xml-Deklaration<br>
doctype ... 0 = keine Xml-Document-Type-Definition /
@@ -294,12 +294,12 @@
<H3>Sonstige Bemerkungen</H3>
<UL>
<LI>
F<> ersten Aufruf des Interface muss als modifiedsince das Datum 1.8.2005
um 00:00:00 Uhr angegeben werden. Es gibt keine Datens<6E>e die vor diesem Datum
F<>r den ersten Aufruf des Interface muss als modifiedsince das Datum 1.8.2005
um 00:00:00 Uhr angegeben werden. Es gibt keine Datens<6E>tze die vor diesem Datum
angelegt wurden.
<LI>
Um Probleme wegen Differenzen der Uhrzeit zwischen Client und Server zu
umgehen, muss f<> n<>sten Inkrementellen Abruf der Daten das Datum um Kopf
umgehen, muss f<>r den n<>chsten Inkrementellen Abruf der Daten das Datum um Kopf
der XML-Datei minus 1 Sekunde angeben werden:<BR>
<SPAN class="m"><BR>&lt;?</SPAN><SPAN class="pi">xml version="1.0" encoding="iso-8859-1"
standalone="no" </SPAN><SPAN class="m">?&gt;</SPAN>
@@ -311,14 +311,15 @@
22:02:42<SPAN class="m">"</SPAN><SPAN class="m">&gt;</SPAN>
<LI>
Zeitverschiebungen / unterschiedliche Zeitzonen zwischen Client und Server
werden nicht unterst<73> <LI>
Das XML-Dokument enth<74> folgende DTD (Document Type Definition):
werden nicht unterst<73>tzt.
<LI>
Das XML-Dokument enth<74>lt folgende DTD (Document Type Definition):
http://www.opencaching.de/xml/ocxml11.dtd
<LI>
<09>derungen werden des XML-Interface werden im Entwicklerforum bekanntgegeben:
<09>nderungen werden des XML-Interface werden im Entwicklerforum bekanntgegeben:
http://develforum.opencaching.de/viewforum.php?f=2
<LI>
Fragen zum Interface k<>n ebenfalls im Entwicklerforum&nbsp;gestellt werden: <A href="http://develforum.opencaching.de/viewforum.php?f=2">
Fragen zum Interface k<>nnen ebenfalls im Entwicklerforum&nbsp;gestellt werden: <A href="http://develforum.opencaching.de/viewforum.php?f=2">
http://develforum.opencaching.de/viewforum.php?f=2</A>
<LI>
Der Quellcode des Interface kann hier downgeloadet werden: <A href="http://devel.opencaching.de/viewcvs/viewcvs.cgi/html/xml/ocxml11.php?rev=1.2&amp;content-type=text/vnd.viewcvs-markup">
@@ -331,8 +332,9 @@
<LI>
der Quellcode steht unter der GNU Gerneral Public Licenses
<LI>
Fuer die Nutzung des XML-Interface ist eine gesonderte Nutzungserlaubnis durch den Betreiber von opencaching.de notwendig. Darin wird geregelt, auf welche Art und Weise die bezogenen Daten genutzt werden duerfen.
</LI></UL>
f<>r Daten die <20>ber das XML-Interface downgeloadet werden, gelten die
Nutzungsbedingungen von Opencaching.de <A href="http://www.opencaching.de/articles.php?page=impressum#tos">
http://www.opencaching.de/articles.php?page=impressum#tos</A></LI></UL>
<P>&nbsp;</P>
</SPAN>
</body>

View File

@@ -1,4 +1,4 @@
<html>
<html>
<head>
<title>Installationsanleitung Opencaching Quellcode</title>
<style type="text/css">
@@ -35,7 +35,7 @@ td
<li>PHP</li>
</ul>
<p>
Die Komponenten mülauffäg sein. Auf deren Konfiguration wird nur eingegangen,
Die Komponenten müssen lauffähig sein. Auf deren Konfiguration wird nur eingegangen,
wenn diese von der Standardkonfiguration abweicht.</p>
<h3>
Empfohlene Versionen</h3>
@@ -44,8 +44,8 @@ td
<li>PHP 5.2.2</li>
<li>MySQL 5.0.27</li>
</ul>
Möcherweise funktioniert der Quellcode auch mit äeren Releases, dann sind jedoch
fü Produktiveinsatz stäere Tests erforderlich.<br />
glicherweise funktioniert der Quellcode auch mit älteren Releases, dann sind jedoch
r den Produktiveinsatz stärkere Tests erforderlich.<br />
<br />
<h3>
PHP Module</h3>
@@ -66,7 +66,7 @@ td
</ul>
<p>
PHP muss mit CLI (Command Line Interface) installiert werden.<br />
Zusälich wird noch eine pecl-Extension empfohlen, siehe "Konfiguration Cracklib".</p>
Zusätzlich wird noch eine pecl-Extension empfohlen, siehe "Konfiguration Cracklib".</p>
<h3>
Empfohlene Software</h3>
<ul>
@@ -98,10 +98,10 @@ td
RewriteEngine On # vgl. "Konfiguration Statistikbilder"<br />
&lt;/VirtualHost&gt;
</p>
Der Pfad /wwwroot kann beliebig gewät werden, ebenso User und Group.<h4>
Der Pfad /wwwroot kann beliebig gewählt werden, ebenso User und Group.<h4>
Konfigration safe_mode</h4>
<p>
PHP kann im safe_mode ausgefüerden, ist fü Entwicklung jedoch oft hinderlich.</p>
PHP kann im safe_mode ausgeführt werden, ist für die Entwicklung jedoch oft hinderlich.</p>
<p>
open_basedir muss dann neben /wwwroot auch den upload_tmp_dir enthalten</p>
<p>
@@ -109,8 +109,8 @@ td
<h3>
Download der CVS Quellcodes</h3>
<p>
Alle Quellcodes werden mit CVS verwaltet. Füeberechtigungen ist kein Benutzeraccount
notwendig. Sollen spär geäerte Quellcodes in das CVS gespeichert werden, richten
Alle Quellcodes werden mit CVS verwaltet. Für Leseberechtigungen ist kein Benutzeraccount
notwendig. Sollen später geänderte Quellcodes in das CVS gespeichert werden, richten
wir gernen einen Benutzeraccount ein (bitte im Entwicklerforum melden).</p>
<p>
Auf der Linux-Kommandozeile:</p>
@@ -119,27 +119,27 @@ td
export CVSROOT=:pserver:anoncvs@devel.opencaching.de:2401/opencaching<br />
cvs co html</p>
<p>
Der Download kann eine Weile dauern, die Repository ist mittlerweile etwas grö.
Der Download kann eine Weile dauern, die Repository ist mittlerweile etwas größer.
Die Opencaching Quellcodes befinden sich daraufhin im Unterverzeichnis html</p>
<p>
Um Äderungen zu inspizieren haben wir einen WebCVS eingerichtet:</p>
Um Änderungen zu inspizieren haben wir einen WebCVS eingerichtet:</p>
<p>
http://devel.opencaching.de/viewcvs/viewcvs.cgi/html/</p>
<h3>
Konfiguration MySQL</h3>
<p>
Die Quellcodes benöen die MyISAM- und InnoDB-Engines und etwa 350 MB (Stand:
Die Quellcodes benötigen die MyISAM- und InnoDB-Engines und etwa 350 MB (Stand:
Sept. 2007) um alle Opencaching-Daten zu laden.</p>
<p>
Charset füe Datenbanken, Tabellen und Felder ist immer
Charset für alle Datenbanken, Tabellen und Felder ist immer
UTF8. Die Namen der
Datenbanken und Benutzer kann frei gewät werden.</p>
Datenbanken und Benutzer kann frei gewählt werden.</p>
<h4>
Datenbankem anlegen</h4>
<p>
Es werden
2 Datenbanken benöt: Eine fü eigentlichen Daten und eine fü Erstellung
von temporän Tabellen.</p>
2 Datenbanken benötigt: Eine für die eigentlichen Daten und eine für die Erstellung
von temporären Tabellen.</p>
<p class="code">
CREATE DATABASE `opencaching` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
CREATE DATABASE `oc_tmpdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;<br />
@@ -149,9 +149,9 @@ td
</span>Benutzer anlegen</span></span></h4>
<p>
<span class="syntax"><span class="syntax_punct syntax_punct_queryend">Es werden 2
Benutzer benöt:</span></span></p>
Benutzer benötigt:</span></span></p>
<p>
1. Mit geringen Berechtigungen fümale Ausfü</p>
1. Mit geringen Berechtigungen für normale Ausführung</p>
<p>
Im einzelnen:</p>
<p>
@@ -181,7 +181,7 @@ td
</table>
</p>
<p>
2. Mit SUPER-Berechtigungen, um Trigger und Stored Procedures anlegen zu kön</p>
2. Mit SUPER-Berechtigungen, um Trigger und Stored Procedures anlegen zu können</p>
<p>
<table>
<tr>
@@ -213,16 +213,16 @@ td
</tr>
</table>
<p>
SUPER-Berechtigungen entsprechen root-Berechtigungen fü Datenbank. Das Passwort
wird spär als Klartext in einer php-Datei gespeichert. Wem das zu unsicher ist,
SUPER-Berechtigungen entsprechen root-Berechtigungen für die Datenbank. Das Passwort
wird später als Klartext in einer php-Datei gespeichert. Wem das zu unsicher ist,
kann auch den normalen root-Account nehmen und das Passwort in die php-Datei nur
bei Bedarf schreiben und danach wieder löen.</p>
bei Bedarf schreiben und danach wieder löschen.</p>
<h3>
Anlegen der Tabellen</h3>
<p>
Alle Tabellen sind als SQL-Datei im Verzeichnis doc/sql/tables abgelegt. Datensäe
füe leere Datenbank in doc/sql/static-data.<br />
Trigger und Stored Procedures werden spär per PHP-Script angelegt.</p>
Alle Tabellen sind als SQL-Datei im Verzeichnis doc/sql/tables abgelegt. Datensätze
r eine leere Datenbank in doc/sql/static-data.<br />
Trigger und Stored Procedures werden später per PHP-Script angelegt.</p>
<p class="code">
cd doc/sql/tables<br />
find . -maxdepth 1 -type f -name \*.sql -exec cat {} \; | mysql -uroot -p opencaching<br />
@@ -230,13 +230,14 @@ td
cd ../static-data<br />
find . -maxdepth 1 -type f -name \*.sql -exec cat {} \; | mysql -uroot -p opencaching</p>
<p>
Alternativ köe auch jede Datei einzeln geöet werden und mit phpMyAdmin eingespielt
Alternativ könnte auch jede Datei einzeln geöffnet werden und mit phpMyAdmin eingespielt
werden.</p>
<h3>
Verzeichnisrechte vergeben</h3>
<p>
Generell sollten so wenig Rechte wie möch vergeben werden. In diesem Beispiel
gehen wir davon aus, dass die Dateien nicht von Hand editiert werden sollen. Füdie Entwicklung muss der Entwickler natü Schreibrechte fü Dateien haben.</p>
Generell sollten so wenig Rechte wie möglich vergeben werden. In diesem Beispiel
gehen wir davon aus, dass die Dateien nicht von Hand editiert werden sollen. Für
die Entwicklung muss der Entwickler natürlich Schreibrechte für die Dateien haben.</p>
<p class="code">
cd /wwwroot<br />
chown -R wwwrun:www .<br />
@@ -251,9 +252,9 @@ td
find cache2 -type d -exec chmod 770 {} \;<br />
</p>
<p>
Ein späres CVS-Update muss mit dem wwwrun-Benutzer ausgefüerden, da sonst
Ein späteres CVS-Update muss mit dem wwwrun-Benutzer ausgeführt werden, da sonst
der Dateibesitzer evtl. wieder wechselt!<br />
Ausserdem müdann die Dateien und Verzeichnisse beschreibbar sein (im ersten
Ausserdem müssen dann die Dateien und Verzeichnisse beschreibbar sein (im ersten
Schritt 660 und 770 verwenden).</p>
<h3>
Konfiguration der Quellcodes</h3>
@@ -264,18 +265,18 @@ td
Das alte Template-System verwendet Verzeichnisse ohne 2 am Ende.<br />
Das neue Template-System verwendet Verzeichnisse mit 2 am Ende.</p>
<p>
Derzeit werden alle Skripte aus dem alten Template-System fü neue System umgeschrieben.<br />
Skripts die bereits umgestellt wurden, kön in den Quellcodes an require('./lib2/...');
Derzeit werden alle Skripte aus dem alten Template-System für das neue System umgeschrieben.<br />
Skripts die bereits umgestellt wurden, können in den Quellcodes an require('./lib2/...');
erkannt werden und im Browser an den Flaggen oben links.</p>
<h4>
Altes Templatesystem</h4>
<p>
Datei lib/settings-dist.inc.php nach nach lib/settings.inc.php kopieren.<br />
Datei-Owner und Berechtigungen beachten!<br />
Die Kopie kann bearbeitet werden, ohne dass bei einem spären CVS-Commit falsche
Daten zurüpielt werden.</p>
Die Kopie kann bearbeitet werden, ohne dass bei einem späteren CVS-Commit falsche
Daten zurückgespielt werden.</p>
<p>
Die Parameter sind soweit nö kommentiert. Besonderes Augenmerk sollte man folgenden
Die Parameter sind soweit nötig kommentiert. Besonderes Augenmerk sollte man folgenden
Paramtern widmen:</p>
<p class="code">
$oc_nodeid<br />
@@ -287,23 +288,23 @@ td
$tmpdbname</p>
<p>
Sowie die diversen E-Mail-Adressen.<br />
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeäert
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeändert
werden (templates2/stdstyle/articles/DE/impressum.tpl).</p>
<h4>
Neues Templatesystem</h4>
<p>
Datei config2/settings-dist.inc.php nach nach config2/settings.inc.php kopieren.<br />
Datei-Owner und Berechtigungen beachten!<br />
Die Kopie kann bearbeitet werden, ohne dass bei einem spären CVS-Commit falsche
Daten zurüpielt werden.</p>
Die Kopie kann bearbeitet werden, ohne dass bei einem späteren CVS-Commit falsche
Daten zurückgespielt werden.</p>
<p>
Es werden jedoch beide Dateien von den Quellcodes verwendet: Zuerst werden Vorgabewerte
mit settings-dist.inc.php gesetzt und diese dann (wo nö) mit settings.inc.php
ührieben. Falls also ein Vorgabewert in den Einstellungen beibehalten werden
soll, kann die entsprechende Zeile aus settings.inc.php gelöt werden. Ädert
sich spär der Vorgabewert im CVS ist keine manuelle Anpassung notwendig.</p>
mit settings-dist.inc.php gesetzt und diese dann (wo nötig) mit settings.inc.php
überschrieben. Falls also ein Vorgabewert in den Einstellungen beibehalten werden
soll, kann die entsprechende Zeile aus settings.inc.php gelöscht werden. Ändert
sich später der Vorgabewert im CVS ist keine manuelle Anpassung notwendig.</p>
<p>
Die Parameter sind soweit nö kommentiert. Besonderes Augenmerk sollte man folgenden
Die Parameter sind soweit nötig kommentiert. Besonderes Augenmerk sollte man folgenden
Paramtern widmen:</p>
<p class="code">
$opt['db']['servername']<br />
@@ -317,23 +318,24 @@ td
$opt['logic']['pictures']['url']</p>
<p>
Sowie die diversen E-Mail-Adressen.<br />
WICHTIG: die Paramtert im lib/settings.inc.php und config2/settings.inc.php mü ünstimmen. Insbesondere die Cookie-Einstellungen und die node-id.</p>
WICHTIG: die Paramtert im lib/settings.inc.php und config2/settings.inc.php müssen
übereinstimmen. Insbesondere die Cookie-Einstellungen und die node-id.</p>
<p>
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeäert
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeändert
werden (templates2/stdstyle/articles/DE/impressum.tpl).</p>
<h3>
Anlegen der Trigger und Stored Procedures</h3>
<p>
Zunäst müdie Zugangsdaten fü Benutzer mit SUPER-Privilegien hinterlegt
Zunächst müssen die Zugangsdaten für den Benutzer mit SUPER-Privilegien hinterlegt
werden. Dazu muss im Datei util/mysql_root/settings-dist.inc.php nach &nbsp;util/mysql_root/settings.inc.php
kopiert werden. Die Kopie muss angepasst werden.</p>
<p>
Anschließn muss doc/sql/stored-proc/maintain.php als CLI-Skript (oder aus dem Browser)
Anschließen muss doc/sql/stored-proc/maintain.php als CLI-Skript (oder aus dem Browser)
aufgerufen werden.</p>
<p>
Um zu prüb das Skript erfolgreich ausgefüurde, kann der SQL-Befehl SHOW
TRIGGERS und SHOW PROCEDURE STATUS verwendet werden. Beide Befehle mümehere
Zeilen zurüen.</p>
Um zu prüfen ob das Skript erfolgreich ausgeführt wurde, kann der SQL-Befehl SHOW
TRIGGERS und SHOW PROCEDURE STATUS verwendet werden. Beide Befehle müssen mehere
Zeilen zurückgeben.</p>
<h3>
Testen der Installation</h3>
<p>
@@ -350,21 +352,21 @@ td
<h5>
Die Seiten werden nur auf Englisch angezeigt</h5>
<p>
Dann liegt ein Fehler bei gettext vor. Zunäst einmal das Caching abschalten. Dann
mit locale -a prüb z.B. de_DE vorhanden ist. Fehlt das, muss es nachinstalliert
Dann liegt ein Fehler bei gettext vor. Zunächst einmal das Caching abschalten. Dann
mit locale -a prüfen ob z.B. de_DE vorhanden ist. Fehlt das, muss es nachinstalliert
werden. Unter Debian z.B. apt-get install locales-all. Danach Apache neu starten!</p>
<h5>
Das Menü nur auf Englisch angezeigt</h5>
Das Menü wird nur auf Englisch angezeigt</h5>
<p>
Wenn die Inhalte bereits richtig ützt werden, das Menü noch auf Englisch
angezeigt wird, muss die Datei cache2/menu-DE.inc.php gelöt werden. Mit dem nästen
Aufruf wird diese neu erstellt und dabei mit gettext das Menüsetzt.</p>
Wenn die Inhalte bereits richtig übersetzt werden, das Menü aber noch auf Englisch
angezeigt wird, muss die Datei cache2/menu-DE.inc.php gelöscht werden. Mit dem nächsten
Aufruf wird diese neu erstellt und dabei mit gettext das Menü übersetzt.</p>
<h3>
Laden der Opencaching-Daten</h3>
<p>
Damit die Opencaching.de-Daten in die Datenbank gelangen, muss der XML-Client konfiguriert
werden. Die dann geladenen Daten kön als Testdaten verwendet werden. Die Installation
kann auch in ein anderes Verzeichnis gemacht werden, damit die geäerten Dateien
werden. Die dann geladenen Daten können als Testdaten verwendet werden. Die Installation
kann auch in ein anderes Verzeichnis gemacht werden, damit die geänderten Dateien
nicht vom CVS-Client moniert werden.</p>
<p>
Voraussetzung ist die "Installation von phpzip"</p>
@@ -380,8 +382,8 @@ td
<p>
3. Die Verzeichnisse tmp und data-files rekursiv mit Schreibrechten versehen.</p>
<p>
4. Nun noch den Pfad zu dem php-Binary im Header von index.php abäern und der
Datei Ausfürechte geben.</p>
4. Nun noch den Pfad zu dem php-Binary im Header von index.php abändern und der
Datei Ausführungrechte geben.</p>
<p>
Die Synchronisation kann nun mit ./index.php gestartet werden. Der Start kann ein
paar Sekunden dauern, da erst auf dem opencching.de-Server die entsprechenden Daten
@@ -395,35 +397,35 @@ td
Eigene Zugangsdaten hinterlegen</h3>
<p>
Damit man selbst auf der Webseite einloggen kann, muss nach dem Laden der Daten
von Opencaching.de nur util/ocxml10client/newuser.php aufgerufen und bestägt werden.</p>
von Opencaching.de nur util/ocxml10client/newuser.php aufgerufen und bestätigt werden.</p>
<h4>
Ich bin root und ich darf alles</h4>
<p>
Füche Funkionen sind admin-Rechte auf der Webseite notwendig. Die kön gesetzt
werden, indem in der user-Tabelle der admin-Wert fü entsprechenden Benutzer
auf 255 gesetzt wird. Einzelne Admin-Rechte kön aus lib2/logic/const.inc.php
r manche Funkionen sind admin-Rechte auf der Webseite notwendig. Die können gesetzt
werden, indem in der user-Tabelle der admin-Wert für den entsprechenden Benutzer
auf 255 gesetzt wird. Einzelne Admin-Rechte können aus lib2/logic/const.inc.php
entnommen werden (Stand: September 2007: noch in Entwicklung).</p>
<h2>
Konfiguration von einzelnen Komponenten</h2>
<h3>
Konfiguration Statistikbilder</h3>
<p>
Fü Statistikbilder wird benöt:</p>
r die Statistikbilder wird benötigt:</p>
<ul>
<li>rewrite-Modul des Apache</li>
<li>GD-Modul fü</li>
<li>GD-Modul für PHP</li>
</ul>
<p>
Konfiguration:</p>
<p>
1. Schreibrechte füages/statpics</p>
1. Schreibrechte für /images/statpics</p>
<p>
2. Funnktion des PHP-Skript prüocstats.php?userid=1 aufrufen. Statt der userid
2. Funnktion des PHP-Skript prüfen: ocstats.php?userid=1 aufrufen. Statt der userid
kann eine beliebige andere verwendet werden. Nun muss ein Bild in /images/statpics
erstellt werden und auf dieses Weitergeleitet.</p>
<p>
3. Rewrite-Rule konfigurieren, damit das Bild als statische Datei referenziert werden
kann (füen). In der Apache-Konfiguration:</p>
kann (für Foren). In der Apache-Konfiguration:</p>
<p class="code">
&lt;VirtualHost ...&gt;<br />
&nbsp;&nbsp; ...<br />
@@ -444,10 +446,10 @@ td
ist notwenig, damit das Statistikbild ertellt und aktualisiert werden kann.<h3>
Installation Cracklib</h3>
<p>
Das neue Templatesystem kann prüob Passwör bestimmten Sicherheitsanforderungen
genüazu ist eine pecl-Extension fücklib erforderlich. Je nach System fät
Das neue Templatesystem kann prüfen, ob Passwörter bestimmten Sicherheitsanforderungen
genügt. Dazu ist eine pecl-Extension für cracklib erforderlich. Je nach System fällt
die Installation allerdings unterschiedlich aus. Sollte die pecl-Extension nicht
verfüsein, wird diese Prünicht durchgefüian kann folgendes
verfügbar sein, wird diese Prüfung nicht durchgeführt. Für Debian kann folgendes
verwendet werden:</p>
<p class="code">
apt-get install cracklib2<br />
@@ -455,10 +457,10 @@ td
apt-get install php5-dev<br />
</p>
<p>
Falls nicht als RPM verfün auch von http://sourceforge.net/projects/cracklib
Falls nicht als RPM verfügbar, können auch von http://sourceforge.net/projects/cracklib
die Sourcen verwendet werden.<br />
Auf jeden Fall sollte das kleine Wörbuch verwendet werden, da sonst die Passwör
benutzerunfreundlich ausfallen mü</p>
Auf jeden Fall sollte das kleine Wörterbuch verwendet werden, da sonst die Passwörter
benutzerunfreundlich ausfallen müssen.</p>
<p class="code">
cd /usr/src<br />
mkdir crack-0.4<br />
@@ -470,18 +472,18 @@ td
make<br />
copy crack.so to your php-extension directory</p>
<p>
Wurde die Extension korrekt installiert, schlä eine Registrierung mit dem Passwort
Wurde die Extension korrekt installiert, schlägt eine Registrierung mit dem Passwort
123456 fehl.</p>
<p>
In den Cracklib-Sourcen befindet sich auch eine Wörbuchdatei (cracklib-small).
Diese kann mit mkdict präriert werden und in der php.ini als Default-Wörbuch
In den Cracklib-Sourcen befindet sich auch eine Wörterbuchdatei (cracklib-small).
Diese kann mit mkdict präpariert werden und in der php.ini als Default-Wörterbuch
hinterlegt werden:</p>
<p class="code">
[Crack]<br />
crack.default_dictionary = "/usr/local/share/cracklib/pw_dict"
</p>
<p>
Weiter Informationen zur cracklib-Konfiguration kön hier gefunden werden:<br />
Weiter Informationen zur cracklib-Konfiguration können hier gefunden werden:<br />
http://www.php.net/manual/de/function.crack-check.php<br />
http://www.phpbar.de/w/PECL<br />
http://pecl.php.net/package/crack
@@ -490,13 +492,14 @@ td
Installation phpzip</h3>
<p>
Um ZIP, BZ2 und GZIP-Dateien zu erstellen werden die entsprechenden Unix-Programme
verwendet. Da diese jedoch nicht den Einschräungen des safe_mode unterliegen,
köe damit leicht /etc/passwd oder schlimmeres gezipt und heruntergeladen werden,
verwendet. Da diese jedoch nicht den Einschränkungen des safe_mode unterliegen,
nnte damit leicht /etc/passwd oder schlimmeres gezipt und heruntergeladen werden,
falls in den (Opencaching-)Quellcodes ein Sicherheitsloch ist. Deshalb werden die
Programme üinen Wrapper aufgerufen, der die übenen Pfadangaben prü phpzip wird fü XML-Client, das XML-Interface und fü Download von Suchergebnissen
benöt.</p>
Programme über einen Wrapper aufgerufen, der die übergebenen Pfadangaben prüft.
phpzip wird für den XML-Client, das XML-Interface und für den Download von Suchergebnissen
benötigt.</p>
<p>
1. Ein Verzeichnis suchen das nicht üas HTTP erreichbar ist z.B. /srv/www/bin</p>
1. Ein Verzeichnis suchen das nicht über das HTTP erreichbar ist z.B. /srv/www/bin</p>
<p>
2. Die Dateien util/safemode_zip/phpzip.php und util/safemode_zip/phpunzip.php dort
hinein kopieren</p>
@@ -506,13 +509,13 @@ td
4. Dateiberechtigungen auf der Dateien auf 755 setzen, der Webserver darf keinesfalls
Schreibberechtigungen besitzen!</p>
<p>
5. Im Kopf der beiden Dateien den Pfad fü php-Binary setzen (PHP muss mit --enable-cli
5. Im Kopf der beiden Dateien den Pfad für das php-Binary setzen (PHP muss mit --enable-cli
kompiliert sein). Den Pfad bekommt man mit "which php".<br />
Z.B. #!/usr/bin/php -q</p>
<p>
6. Sicherstellen, dass gzip, bzip2 und zip auf dem System installiert sind</p>
<p>
7. phpzip.php und phpunzip.php öen und $basedir auf das root-Verzeichnis der
7. phpzip.php und phpunzip.php öffnen und $basedir auf das root-Verzeichnis der
Opencaching-Quellcodes setzen. Z.B. /var/www/html</p>
<p>
8. Wird nun phpzip.php aufgerufen mit ./phpzip.php muss die Ausgabe "wrong parameter"
@@ -525,9 +528,9 @@ td
<h3>
Laden der gns-Datenbank</h3>
<p>
Die GNS-Datenbank enthä Koordinaten füe rund um die Welt und wird fü
Suchfunktion verwendet. Auf Opencaching.de sind die Dateien fütschland (GM),
Öterreich (AU) und die Schweiz (SZ) geladen.</p>
Die GNS-Datenbank enthält Koordinaten für Orte rund um die Welt und wird für die
Suchfunktion verwendet. Auf Opencaching.de sind die Dateien für Deutschland (GM),
Österreich (AU) und die Schweiz (SZ) geladen.</p>
<p>
1. Download der Dateien von http://earth-info.nga.mil/gns/html/namefiles.htm nach
util/gns</p>
@@ -546,7 +549,7 @@ td
Damit die Suche nach Ortsnamen zum einen schnell, zum anderen gegen Vertipper resistent
ist, wird ein Suchindex aufgebaut (gns_search).<br />
Nach dem Laden oder Aktualisieren der GNS-Daten muss dazu "php mksearchindex.php"
ausgefüerden.</p>
ausgeführt werden.</p>
<p>
Bleibt der Import-Prozess mit einem Integer + Ortsname stehen, muss der Matching-Algorithmus
an die neuen Daten
@@ -554,9 +557,9 @@ td
<h4>
Administrations-Texte aufbauen</h4>
<p>
Um bei der Ortssuche den Landkreis, Regierungsbezirk und das Land anzeigen zu kön
muss der Befehel "php mkadmtxt.php" ausgefüerden. Hierzu muss allerdings er
die geodb geladen werden (siehe näster Abschnitt).</p>
Um bei der Ortssuche den Landkreis, Regierungsbezirk und das Land anzeigen zu können
muss der Befehel "php mkadmtxt.php" ausgeführt werden. Hierzu muss allerdings er
die geodb geladen werden (siehe nächster Abschnitt).</p>
<h3>
Laden der geodb-Datenbank</h3>
<p>
@@ -576,22 +579,23 @@ td
Damit die Suche nach Ortsnamen zum einen schnell, zum anderen gegen Vertipper resistent
ist, wird ein Suchindex aufgebaut (geodb_search).<br />
Nach dem Laden oder Aktualisieren der geodb-Daten muss dazu "php index.php" im Verzeichnis
util/geodb_searchindex ausgefüerden.</p>
util/geodb_searchindex ausgeführt werden.</p>
<p>
Bleibt der Import-Prozess mit einem Integer + Ortsname stehen, muss der Matching-Algorithmus
an die neuen Daten angepasst werden, bitte im Forum melden.</p>
<h3>
Volltext-Suchindex aufbauen</h3>
<p>
Fü Volltextsuche von Cachebeschreibungen und Logeinträn ist die Tabelle search_index
zustäig. Diese wird mit "php util/search_index/fill_search_index.php" inkrementell
gefüDie erste Fü dauert allerdings einige Zeit.</p>
r die Volltextsuche von Cachebeschreibungen und Logeinträgen ist die Tabelle search_index
zuständig. Diese wird mit "php util/search_index/fill_search_index.php" inkrementell
gefüllt. Die erste Füllung dauert allerdings einige Zeit.</p>
<h3>
cronjob fühe_location einrichten</h3>
cronjob für cache_location einrichten</h3>
<p>
In cache_location wird Land &gt; Regierungsbezirk &gt; Landkreis fü Anzeige
gespeichert. Gefüird die Tabelle mit "php util/cron/runcron.php". Üer dieses
Skript kön auch weitere Skripte angesteuert werden, die regelmäg ausgefü werden (Unterverzeichnis modules).</p>
In cache_location wird Land &gt; Regierungsbezirk &gt; Landkreis für die Anzeige
gespeichert. Gefüllt wird die Tabelle mit "php util/cron/runcron.php". Über dieses
Skript können auch weitere Skripte angesteuert werden, die regelmäßig ausgeführt
werden (Unterverzeichnis modules).</p>
<h3>
Konfiguration XML-Interface</h3>
<p>
@@ -600,36 +604,53 @@ td
<br />
TODO: phpzip-Konfiguration stimmt hier nicht ... falscher basedir!<br />
<br />
Schreibrechte fünload/zip/ocxml11 fü Webserver-Prozess erteilen.</p>
<h2>
Üersetzen von neuen Templates</h2>
Schreibrechte für download/zip/ocxml11 für den Webserver-Prozess erteilen.</p>
<h3>
Konfiguration von PROJ.4</h3>
<p>
Templates werden immer in Englisch geschrieben. Die Üersetzung erfolgt durch translate.php
(Adminrechte fü Benutzer erforderlich).<br />
PROJ.4 ist eine Bibliothek mit Geografiefunktionen und beinhaltet unter anderem
das Programm cs2cs, das wir für die Umrechnung von und in verschiedene Koordinatensysteme
verwenden.<br />
<br />
1. Download der Version 4.5.0 (nicht alle Versionen beinhalten cs2cs) von
http://download.osgeo.org/proj/ nach /usr/src und nach /usr/src/PROJ.4 entpacken<br />
<br />
2. ./configure aufrufen<br />
<br />
3. make<br />
<br />
3. make install<br />
</p>
<h2>
Übersetzen von neuen Templates</h2>
<p>
Templates werden immer in Englisch geschrieben. Die Übersetzung erfolgt durch translate.php
(Adminrechte für den Benutzer erforderlich).<br />
<br />
TODO</p>
<h2>
Update der Quellcodes</h2>
<p>
Werden Quellcodes per CVS aktualisiert, sollte immer die CVS-Clientausgabe inspiziert
werden. Gibt es Äderungen im Verzeichnis /doc/sql oder /util/ocxml11client mü diese entsprechend nachgepflegt werden.</p>
werden. Gibt es Änderungen im Verzeichnis /doc/sql oder /util/ocxml11client müssen
diese entsprechend nachgepflegt werden.</p>
<h2>
Anhang</h2>
<h3>
PHP-CLI</h3>
<p>
CLI (Command Line Interface) ist eine Erweiterung von PHP, damit PHP-Skripte wie
Bash-Skripte von der Kommandozeile aus aufgerufen werden kön. Entweder muss im
Bash-Skripte von der Kommandozeile aus aufgerufen werden können. Entweder muss im
Header der Skripte dazu das php-Binary angegeben werden z.B. #!/usr/bin/php -q oder
man ruft die PHP mit dem Skript als Argument auf "php skript.php".</p>
<p>
Vorteil: CLI-Skripte haben kein Timeout. Apache und PHP haben verschiedene (einstellbare)
Timeouts, die Skripte mit läeren Laufzeiten (&gt;30 Sek.) behindern.</p>
Timeouts, die Skripte mit längeren Laufzeiten (&gt;30 Sek.) behindern.</p>
<p>
Nachteil: werden CLI-Skripte als cronjob aufgerufen, mürelative Pfade durch
Nachteil: werden CLI-Skripte als cronjob aufgerufen, müssen relative Pfade durch
absolute Pfade ersetzt werden.</p>
<h3>
Konfiguration füwicklung</h3>
Konfiguration für Entwicklung</h3>
<ul>
<li>
(php.ini) display_errors = true</li>
@@ -643,18 +664,18 @@ td
<h3>
Bearbeiten der Quellcodes</h3>
<p>
Um die Quellcodes zu bearbeiten ist ein UTF-8 fäger Texteditor zu benutzen. Dies
Um die Quellcodes zu bearbeiten ist ein UTF-8 fähiger Texteditor zu benutzen. Dies
kann man erkennen, indem in den PHP-Dateien in den ersten Zeilen hinter dem Unicode
Reminder japanische Textzeichen zu sehen sind. Sind diese nicht zu erkennen, sollte
der Texteditor nicht zur Bearbeitung verwendet werden.</p>
<p>
Um die Quellcodes korrekt zu speichern, kann in vielen Editoren unter "Speichern
unter ..." der Zeichensatz ausgewät werden.<br />
Hier ist wichtig, dass Unicode (UTF-8 ohne Signatur) - Codepage 65001 o.äverwendet
unter ..." der Zeichensatz ausgewählt werden.<br />
Hier ist wichtig, dass Unicode (UTF-8 ohne Signatur) - Codepage 65001 o.ä. verwendet
wird.</p>
<p>
Signatur bedeutet, dass der Editor 3 Bytes zu Beginn der Textdatei schreibt, die
die Datei als Unicode-Datei identifizieren. Mit PHP füdiese Bytes jedoch zu
die Datei als Unicode-Datei identifizieren. Mit PHP führen diese Bytes jedoch zu
falschen Browserausgaben.</p>
<p>
Wer kein Texteditor hat, kann unter Windows Visual Studio 2005 Express Edition verwenden
@@ -664,16 +685,16 @@ td
<h3>
Neues Skript anlegen</h3>
<p>
Zuerst muss in der Tabelle sys_menu ein neuer Menüag definiert werden und der
(Menühe gelöt werden.</p>
Zuerst muss in der Tabelle sys_menu ein neuer Menüeintrag definiert werden und der
(Menü-)Cache gelöscht werden.</p>
<p>
Folgender Header kann dann verwendet werden füe PHP-Dateien verwendet werden:</p>
Folgender Header kann dann verwendet werden für neue PHP-Dateien verwendet werden:</p>
<p class="code">&lt;?php<br />
/***************************************************************************<br />
&nbsp;* You can find the license in the docs directory &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
*<br />
&nbsp;* Unicode Reminder .. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;* Unicode Reminder メモ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
*<br />
@@ -699,7 +720,7 @@ td
<p>
$tpl ist eine Klasse vom Typ OcSmarty, die von Smarty vererbt ist.</p>
<p>
Üer die Funktionen von Smarty hinaus gibt es folgende (wichtigen) Funktionen:</p>
Über die Funktionen von Smarty hinaus gibt es folgende (wichtigen) Funktionen:</p>
<p>
<table>
<tr>
@@ -713,23 +734,23 @@ td
error($id)</td>
<td style="width: 768px; height: 21px">
Zeigt ein Template mit der Fehlermeldung an. $id ist eine Konstant die in lib2/error.inc.php
definiert ist. In /template2/design/error.tpl muss der Text fü Fehlermeldung
definiert ist. In /template2/design/error.tpl muss der Text für die Fehlermeldung
definiert sein.</td>
</tr>
<tr>
<td style="width: 198px">
redirect($page)</td>
<td style="width: 768px">
Leitet den Browser an das angegebene Skript weiter und beendet die Skriptausfü.<br />
Leitet den Browser an das angegebene Skript weiter und beendet die Skriptausführung.<br />
Kann ein absoluter oder relativer Pfad (zum Quellcode-Basisverzeichnis) sein.<br />
Paramter müurlencode() codiert sein.<br />
Paramter müssen urlencode() codiert sein.<br />
Beispiel: $tpl-&gt;redirect('viewcache.php?wp=' . urlencode($wp));</td>
</tr>
<tr>
<td style="width: 198px; height: 21px">
assign_rs($name, $rs)</td>
<td style="width: 768px; height: 21px">
Erstellt ein 2-Dimensionales Array in das alle Datensäe des Recordset $rs gespeichert
Erstellt ein 2-Dimensionales Array in das alle Datensätze des Recordset $rs gespeichert
werden und weist der Smarty-Variable $name dieses Array zu.</td>
</tr>
</table>
@@ -772,24 +793,24 @@ td
<td style="width: 197px">
$popup</td>
<td style="width: 769px">
Ist popup=false, wird die Menütur usw. nicht angezeigt.<br />
Ist popup=false, wird die Menüstruktur usw. nicht angezeigt.<br />
Beispiel siehe "weitere Koodinatensysteme" auf viewcache.php</td>
</tr>
<tr>
<td style="width: 197px">
$target</td>
<td style="width: 769px">
Ziel fü Login. Wird üerweise automatisch gesetzt.</td>
Ziel für den Login. Wird üblicherweise automatisch gesetzt.</td>
</tr>
</table>
</p>
<h3>
SQL-Abfragen</h3>
<p>
Alle SQL-Abfragen müdurch die Framework-Funktionen abgesetzt werden. Die Datenbankverbindung
Alle SQL-Abfragen müssen durch die Framework-Funktionen abgesetzt werden. Die Datenbankverbindung
wird automatisch mit dem ersten SQL-Befehl aufgebaut.</p>
<p>
Wichtige Funktionen (vollstäige Liste siehe lib2/db.inc.php):</p>
Wichtige Funktionen (vollständige Liste siehe lib2/db.inc.php):</p>
<p>
<table>
<tr>
@@ -802,12 +823,12 @@ td
<td style="width: 246px">
sql($sql, [parameters])</td>
<td style="width: 720px">
Wrapper füql_query()<br />
Wrapper für mysql_query()<br />
Parameter werden mit sql_escape() bearbeitet, dadurch sind bei konsquenter Verwendung
keine SQL-Injections möch. Parameter kön entweder als Array angegeben werden,
keine SQL-Injections möglich. Parameter können entweder als Array angegeben werden,
oder als normale Parameter beim Funktionsaufruf.<br />
<br />
Gibt ein Recordset zurür />
Gibt ein Recordset zurück.<br />
<br />
Aufrufbeispiel:<br />
sql("SELECT id FROM table WHERE a='&amp;1' AND b='&amp;2'", 12345, 'abc');</td>
@@ -816,9 +837,9 @@ td
<td style="width: 246px">
sql_value($sql, default, [parameters])</td>
<td style="width: 720px">
Gleich wie sql(), es wird jedoch nur die erste Zelle der ersten Zeile zurüeben.<br />
Gleich wie sql(), es wird jedoch nur die erste Zelle der ersten Zeile zurückgegeben.<br />
Default gibt den Wert an, der verwendet wird wenn die erste Zelle NULL ist oder
das Ergebnis der Abfrage keine Zeile zurüt.</td>
das Ergebnis der Abfrage keine Zeile zurückgibt.</td>
</tr>
<tr>
<td style="width: 246px">
@@ -830,7 +851,7 @@ td
<td style="width: 246px">
sql_escape_backtick($value)</td>
<td style="width: 720px">
Escape fükticks. Kann verwendet werden um Feldname dynamisch zu setzen.<br />
Escape für Backticks. Kann verwendet werden um Feldname dynamisch zu setzen.<br />
<br />
Beispiel:<br />
sql("SELECT id FROM table WHERE `" . sql_escape_backtick('a') . "`='&amp;1' AND
@@ -840,16 +861,16 @@ td
<td style="width: 246px">
sql_fetch_assoc($rs)</td>
<td style="width: 720px">
Wrapper füql_fetch_assoc($rs)</td>
Wrapper für mysql_fetch_assoc($rs)</td>
</tr>
<tr>
<td style="width: 246px">
sql_temp_table($table)</td>
<td style="width: 720px">
Reserviert einen Namen füe Temporä Tabelle. Wird mysql_pconnect() verwendet
Reserviert einen Namen für eine Temporäre Tabelle. Wird mysql_pconnect() verwendet
um die Datenbankverbindung aufzubauen (siehe config2/settings.inc.php), werden diese
Tabellen korrekt gelöt. Ansonsten besteht die Möchkeit, dass temporä Tabellen
üehere Skriptaufrufe existent bleiben.<br />
Tabellen korrekt gelöscht. Ansonsten besteht die Möglichkeit, dass temporäre Tabellen
über mehere Skriptaufrufe existent bleiben.<br />
<br />
Beispiel siehe /tops.php</td>
</tr>
@@ -857,31 +878,31 @@ td
<td style="width: 246px">
sql_drop_temp_table($table)</td>
<td style="width: 720px">
Löt die temporä Tabelle</td>
scht die temporäre Tabelle</td>
</tr>
<tr>
<td style="width: 246px">
sql_free_result($rs)</td>
<td style="width: 720px">
Wrapper füql_free_result()</td>
Wrapper für mysql_free_result()</td>
</tr>
<tr>
<td style="width: 246px">
sql_affected_rows()</td>
<td style="width: 720px">
Wrapper füql_affected_rows()</td>
Wrapper für mysql_affected_rows()</td>
</tr>
<tr>
<td style="width: 246px">
sql_insert_id()</td>
<td style="width: 720px">
Wrapper füql_insert_id()</td>
Wrapper für mysql_insert_id()</td>
</tr>
<tr>
<td style="width: 246px">
sql_num_rows($rs)</td>
<td style="width: 720px">
Wrapper füql_num_rows()</td>
Wrapper für mysql_num_rows()</td>
</tr>
<tr>
<td style="width: 246px">
@@ -931,13 +952,13 @@ td
<td style="width: 166px; height: 21px">
$cookie</td>
<td style="width: 808px; height: 21px">
Speichert einen Wert im Cookie. Generell sollten die Cookies so klein wie möch
Speichert einen Wert im Cookie. Generell sollten die Cookies so klein wie möglich
gehalten werden.<br />
<br />
Lesen mit get($name, $default='')<br />
Setzen mit set($name, $value, $default=null)<br />
Löen mit un_set($name)<br />
Prüit is_set($name)</td>
schen mit un_set($name)<br />
Prüfen mit is_set($name)</td>
</tr>
<tr>
<td style="width: 166px">
@@ -945,7 +966,7 @@ td
<td style="width: 808px">
Aktueller Benutzer<br />
<br />
$userid gibt die Userid zurüalls nicht eingeloggt ist $userid=0<br />
$userid gibt die Userid zurück, falls nicht eingeloggt ist $userid=0<br />
$username ist der Benutzername<br />
$admin gibt an, welche Admin-Rechte der Benutzer hat.</td>
</tr>
@@ -953,8 +974,8 @@ td
<td style="width: 166px">
$translate</td>
<td style="width: 808px">
Funktion t($value) ützt Strings<br />
Wann immer möch direkt in den Templates ützen!<br />
Funktion t($value) übersetzt Strings<br />
Wann immer möglich direkt in den Templates übersetzen!<br />
Nicht im Quellcode!</td>
</tr>
</table>
@@ -967,16 +988,16 @@ td
<h3>
Einsatz auf Produktivsystemen</h3>
<p>
Sollten die Quellcodes auf Produktivsystem eingesetzt werden, sollten einige Sicherheitsmaßahmen
Sollten die Quellcodes auf Produktivsystem eingesetzt werden, sollten einige Sicherheitsmaßnahmen
beachtet werden. Unter anderen:</p>
<ul>
<li>safe_mode von PHP aktivieren</li>
<li>Lesezugriff füzeichnisse sperren. Unter anderem: doc (insb. doc/sql), doc2,
<li>Lesezugriff für Verzeichnisse sperren. Unter anderem: doc (insb. doc/sql), doc2,
util (mit Ausnahmen z.B. util/google_earth), util2, cache, cache2 (ohne cache2/captcha),
config2, lang, lib (ohne lib/tinymce), lib2, templates2 (wenn das neue Templatesystem
config2, lang, lib, lib2, templates2 (wenn das neue Templatesystem
fertig ist, wird das Verfahren vereinfacht).</li>
<li>$opt['debug'] auf DEBUG_NO setzen</li>
</ul>
</body>
</html>
</html>