Die Komponenten mülauffäg sein. Auf deren Konfiguration wird nur eingegangen, wenn diese von der Standardkonfiguration abweicht.
Folgende PHP Module werden von den Quellcodes verwendet:
PHP muss mit CLI (Command Line Interface) installiert werden.
Zusälich wird noch eine pecl-Extension empfohlen, siehe "Konfiguration Cracklib".
User wwwrun
Group www
<Directory /wwwroot>
AllowOverride AuthConfig
Options -FollowSymLinks -SymLinksIfOwnerMatch
...
</Directory>
<VirtualHost ...>
...
DocumentRoot /wwwroot
DirectoryIndex index.php index.htm index.html
RewriteEngine On # vgl. "Konfiguration Statistikbilder"
</VirtualHost>
PHP kann im safe_mode ausgefüerden, ist fü Entwicklung jedoch oft hinderlich.
open_basedir muss dann neben /wwwroot auch den upload_tmp_dir enthalten
safe_mode_exec_dir muss definiert werden (vgl. "Installation phpzip")
Alle Quellcodes werden mit CVS verwaltet. Füeberechtigungen ist kein Benutzeraccount notwendig. Sollen spär geäerte Quellcodes in das CVS gespeichert werden, richten wir gernen einen Benutzeraccount ein (bitte im Entwicklerforum melden).
Auf der Linux-Kommandozeile:
cd /wwwroot
export CVSROOT=:pserver:anoncvs@devel.opencaching.de:2401/opencaching
cvs co html
Der Download kann eine Weile dauern, die Repository ist mittlerweile etwas grö. Die Opencaching Quellcodes befinden sich daraufhin im Unterverzeichnis html
Um Äderungen zu inspizieren haben wir einen WebCVS eingerichtet:
http://devel.opencaching.de/viewcvs/viewcvs.cgi/html/
Die Quellcodes benöen die MyISAM- und InnoDB-Engines und etwa 350 MB (Stand: Sept. 2007) um alle Opencaching-Daten zu laden.
Charset füe Datenbanken, Tabellen und Felder ist immer UTF8. Die Namen der Datenbanken und Benutzer kann frei gewät werden.
Es werden 2 Datenbanken benöt: Eine fü eigentlichen Daten und eine fü Erstellung von temporän Tabellen.
CREATE DATABASE `opencaching` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `oc_tmpdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Es werden 2 Benutzer benöt:
1. Mit geringen Berechtigungen fümale Ausfü
Im einzelnen:
| Datenbank | Berechtigungen |
| opencaching |
SELECT, INSERT, UPDATE, DELETE Solange das alte Template System nochgenutzt wird: CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES |
| oc_tmpdb |
SELECT, INSERT, UPDATE, DELETE CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES |
2. Mit SUPER-Berechtigungen, um Trigger und Stored Procedures anlegen zu kön
| Datenbank | Berechtigungen |
| <ALLGEMEIN> | SUPER |
| opencaching |
SELECT, INSERT, UPDATE, DELETE CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE |
| oc_tmpdb |
SELECT, INSERT, UPDATE, DELETE CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES |
SUPER-Berechtigungen entsprechen root-Berechtigungen fü Datenbank. Das Passwort wird spär 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.
Alle Tabellen sind als SQL-Datei im Verzeichnis doc/sql/tables abgelegt. Datensäe
füe leere Datenbank in doc/sql/static-data.
Trigger und Stored Procedures werden spär per PHP-Script angelegt.
cd doc/sql/tables
find . -maxdepth 1 -type f -name \*.sql -exec cat {} \; | mysql -uroot -p opencaching
cd ../static-data
find . -maxdepth 1 -type f -name \*.sql -exec cat {} \; | mysql -uroot -p opencaching
Alternativ köe auch jede Datei einzeln geöet werden und mit phpMyAdmin eingespielt werden.
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.
cd /wwwroot
chown -R wwwrun:www .
find . -type f -exec chmod 440 {} \;
find . -type d -exec chmod 550 {} \;
find cache -type f -exec chmod 660 {} \;
find cache -type d -exec chmod 770 {} \;
find cache2 -type f -exec chmod 660 {} \;
find cache2 -type d -exec chmod 770 {} \;
Ein späres CVS-Update muss mit dem wwwrun-Benutzer ausgefüerden, da sonst
der Dateibesitzer evtl. wieder wechselt!
Ausserdem müdann die Dateien und Verzeichnisse beschreibbar sein (im ersten
Schritt 660 und 770 verwenden).
Die Konfiguration der Quellcodes ist derzeit noch 2x notwendig (Stand: September 2007):
Das alte Template-System verwendet Verzeichnisse ohne 2 am Ende.
Das neue Template-System verwendet Verzeichnisse mit 2 am Ende.
Derzeit werden alle Skripte aus dem alten Template-System fü neue System umgeschrieben.
Skripts die bereits umgestellt wurden, kön in den Quellcodes an require('./lib2/...');
erkannt werden und im Browser an den Flaggen oben links.
Datei lib/settings-dist.inc.php nach nach lib/settings.inc.php kopieren.
Datei-Owner und Berechtigungen beachten!
Die Kopie kann bearbeitet werden, ohne dass bei einem spären CVS-Commit falsche
Daten zurüpielt werden.
Die Parameter sind soweit nö kommentiert. Besonderes Augenmerk sollte man folgenden Paramtern widmen:
$oc_nodeid
$absolute_server_URI
$dbusername
$dbname
$dbserver
$dbpasswd
$tmpdbname
Sowie die diversen E-Mail-Adressen.
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeäert
werden (templates2/stdstyle/articles/DE/impressum.tpl).
Datei config2/settings-dist.inc.php nach nach config2/settings.inc.php kopieren.
Datei-Owner und Berechtigungen beachten!
Die Kopie kann bearbeitet werden, ohne dass bei einem spären CVS-Commit falsche
Daten zurüpielt werden.
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.
Die Parameter sind soweit nö kommentiert. Besonderes Augenmerk sollte man folgenden Paramtern widmen:
$opt['db']['servername']
$opt['db']['username']
$opt['db']['password']
$opt['db']['placeholder']['db']
$opt['db']['placeholder']['tmpdb']
$opt['debug']
$opt['page']['absolute_url']
$opt['logic']['node']['id']
$opt['logic']['pictures']['url']
Sowie die diversen E-Mail-Adressen.
WICHTIG: die Paramtert im lib/settings.inc.php und config2/settings.inc.php mü ünstimmen. Insbesondere die Cookie-Einstellungen und die node-id.
Sollte die Website aus dem Internet erreichbar sein, MUSS das Impressum abgeäert werden (templates2/stdstyle/articles/DE/impressum.tpl).
Zunäst müdie Zugangsdaten fü Benutzer mit SUPER-Privilegien hinterlegt werden. Dazu muss im Datei util/mysql_root/settings-dist.inc.php nach util/mysql_root/settings.inc.php kopiert werden. Die Kopie muss angepasst werden.
Anschließn muss doc/sql/stored-proc/maintain.php als CLI-Skript (oder aus dem Browser) aufgerufen werden.
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.
Die Startseite (neues Templatesystem) und die Suchseite (altes Tempalte System,
Stand 6. September 2007) sollten nun im Browser aufrufbar sein.
Viele Kleinigkeiten funktionieren noch nicht, da dazu weitere Vorbereitungen notwendig
sind u.A. die PLZ-Suche, Ortssuche, der Benutzerlogin (noch keine Benutzer) ...
Wichtig: vor jeder Fehlersuche $opt['debug'] = DEBUG_DEVELOPER | DEBUG_TEMPLATES; setzen. Ansonsten werden die falschen Ausgaben gecacht und auch ausgegeben wenn der Fehler evtl. schon behoben ist.
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 werden. Unter Debian z.B. apt-get install locales-all. Danach Apache neu starten!
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.
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 nicht vom CVS-Client moniert werden.
Voraussetzung ist die "Installation von phpzip"
1. In das Verzeichnis util/ocxml11client wechseln und settings-dist.php nach settings.php kopieren und bearbeiten.
2. Folgende Parameter besonders beachten:
$opt['unzip']
$opt['pictures']['download']
$opt['pictures']['url']
3. Die Verzeichnisse tmp und data-files rekursiv mit Schreibrechten versehen.
4. Nun noch den Pfad zu dem php-Binary im Header von index.php abäern und der Datei Ausfürechte geben.
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 aufbereitet werden. Der Download und das Einspielen in die Datenbank dauert bis zu meherern Stunden.
Wird die Synchronisation nach dem Download abgebrochen, kann durch auskommentieren der entsprechenden Funktionsaufrufe in index.php mit den bereits heruntergeladenen Daten weitergearbeitet werden.
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.
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 entnommen werden (Stand: September 2007: noch in Entwicklung).
Fü Statistikbilder wird benöt:
Konfiguration:
1. Schreibrechte füages/statpics
2. Funnktion des PHP-Skript prü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.
3. Rewrite-Rule konfigurieren, damit das Bild als statische Datei referenziert werden kann (füen). In der Apache-Konfiguration:
<VirtualHost ...>
...
RewriteEngine On
...
<Directory /var/www/html/statpics>
AllowOverride FileInfo
Options FollowSymLinks SymLinksIfOwnerMatch
</Directory>
</VirtualHost>
Und die Datei /statpics/htaccess-dist nach .htaccess kopieren, sowie /ocstats.php den absoluten (http-)Pfad voranstellen.
RewriteRule ^([0-9]+)\.jpg$ /html/ocstats.php?userid=$1 [R,L]
Nun sollte beim Aufruf von /statpics/1.jpg auf ocstats.php weitergeleitet werden, das Bild erstellt und gleich weiter zu /images/statpics geleitet werden. Der Umweg ist notwenig, damit das Statistikbild ertellt und aktualisiert werden kann.Das neue Templatesystem kann prüob Passwör bestimmten Sicherheitsanforderungen genüazu ist eine pecl-Extension fücklib erforderlich. Je nach System fät die Installation allerdings unterschiedlich aus. Sollte die pecl-Extension nicht verfüsein, wird diese Prünicht durchgefüFüian kann folgendes verwendet werden:
apt-get install cracklib2
apt-get install php-pear
apt-get install php5-dev
Falls nicht als RPM verfü kön auch von http://sourceforge.net/projects/cracklib
die Sourcen verwendet werden.
Auf jeden Fall sollte das kleine Wörbuch verwendet werden, da sonst die Passwör
benutzerunfreundlich ausfallen mü
cd /usr/src
mkdir crack-0.4
wget http://pecl.php.net/get/crack-0.4.tgz
tar zxf crack-0.4.tgz
cd crack-0.4
phpize
./configure
make
copy crack.so to your php-extension directory
Wurde die Extension korrekt installiert, schlä eine Registrierung mit dem Passwort 123456 fehl.
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 hinterlegt werden:
[Crack]
crack.default_dictionary = "/usr/local/share/cracklib/pw_dict"
Weiter Informationen zur cracklib-Konfiguration kön hier gefunden werden:
http://www.php.net/manual/de/function.crack-check.php
http://www.phpbar.de/w/PECL
http://pecl.php.net/package/crack
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, 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.
1. Ein Verzeichnis suchen das nicht üas HTTP erreichbar ist z.B. /srv/www/bin
2. Die Dateien util/safemode_zip/phpzip.php und util/safemode_zip/phpunzip.php dort hinein kopieren
3. Owner und Group auf root setzen
4. Dateiberechtigungen auf der Dateien auf 755 setzen, der Webserver darf keinesfalls Schreibberechtigungen besitzen!
5. Im Kopf der beiden Dateien den Pfad fü php-Binary setzen (PHP muss mit --enable-cli
kompiliert sein). Den Pfad bekommt man mit "which php".
Z.B. #!/usr/bin/php -q
6. Sicherstellen, dass gzip, bzip2 und zip auf dem System installiert sind
7. phpzip.php und phpunzip.php öen und $basedir auf das root-Verzeichnis der Opencaching-Quellcodes setzen. Z.B. /var/www/html
8. Wird nun phpzip.php aufgerufen mit ./phpzip.php muss die Ausgabe "wrong parameter" erscheinen.
9. Den Pfad in safe_mode_exec_dir in der apache/php-Konfiguration aufnehmen
10. Die Parameter $safemode_zip, $zip_basedir und $zip_wwwdir in lib/settings.inc.php setzen
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.
1. Download der Dateien von http://earth-info.nga.mil/gns/html/namefiles.htm nach util/gns
2. Entpacken der ZIP-Dateien (gleiches Verzeichnis)
3. Sollen andere Dateien als sz.txt, gm.txt und au.txt importiert werden, muss gns_import.php entsprechend angepasst werden.
4. Importieren der Dateien mit "php gns_import.php"
Die CSV-Dateien werden daraufhin in die Tabelle gns_locations importiert.
Damit die Suche nach Ortsnamen zum einen schnell, zum anderen gegen Vertipper resistent
ist, wird ein Suchindex aufgebaut (gns_search).
Nach dem Laden oder Aktualisieren der GNS-Daten muss dazu "php mksearchindex.php"
ausgefüerden.
Bleibt der Import-Prozess mit einem Integer + Ortsname stehen, muss der Matching-Algorithmus an die neuen Daten angepasst werden, bitte im Forum melden.
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).
1.
Download der Daten von http://sourceforge.net/projects/opengeodb
Package Data
opengeodb-0.2.4d-UTF8-mysql.zip (ggf. eine neuere Version, falls Datenstruktur gleich)
2. Entpacken
3. Importieren
cat opengeodb-0.2.4d-UTF8-mysql.sql | mysql -uroot -p opencaching
Damit die Suche nach Ortsnamen zum einen schnell, zum anderen gegen Vertipper resistent
ist, wird ein Suchindex aufgebaut (geodb_search).
Nach dem Laden oder Aktualisieren der geodb-Daten muss dazu "php index.php" im Verzeichnis
util/geodb_searchindex ausgefüerden.
Bleibt der Import-Prozess mit einem Integer + Ortsname stehen, muss der Matching-Algorithmus an die neuen Daten angepasst werden, bitte im Forum melden.
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.
In cache_location wird Land > Regierungsbezirk > 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).
Das aktuelle XML-Interface ist /xml/ocxml11.php (Stand: September 2007).
phpzip muss vorher installiert werden.
TODO: phpzip-Konfiguration stimmt hier nicht ... falscher basedir!
Schreibrechte fünload/zip/ocxml11 fü Webserver-Prozess erteilen.
Templates werden immer in Englisch geschrieben. Die Üersetzung erfolgt durch translate.php
(Adminrechte fü Benutzer erforderlich).
TODO
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.
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 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".
Vorteil: CLI-Skripte haben kein Timeout. Apache und PHP haben verschiedene (einstellbare) Timeouts, die Skripte mit läeren Laufzeiten (>30 Sek.) behindern.
Nachteil: werden CLI-Skripte als cronjob aufgerufen, mürelative Pfade durch absolute Pfade ersetzt werden.
Alle angezeigten Meldungen von dem Commit beseitigen!
Um die Quellcodes zu bearbeiten ist ein UTF-8 fäger 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.
Um die Quellcodes korrekt zu speichern, kann in vielen Editoren unter "Speichern
unter ..." der Zeichensatz ausgewät werden.
Hier ist wichtig, dass Unicode (UTF-8 ohne Signatur) - Codepage 65001 o.äverwendet
wird.
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 falschen Browserausgaben.
Wer kein Texteditor hat, kann unter Windows Visual Studio 2005 Express Edition verwenden (kostenlos bei Microsoft). Dort Datei > Speichern unter ... > Speichern (auf den Pfeil nach unten) > Mit Codierung speichern > Codierung: Unicode (UTF-8 ohne Signatur) - Codepage 65001, Zeilenende: Unix (LF)
Zuerst muss in der Tabelle sys_menu ein neuer Menüag definiert werden und der (Menühe gelöt werden.
Folgender Header kann dann verwendet werden füe PHP-Dateien verwendet werden:
<?php
/***************************************************************************
* You can find the license in the docs directory
*
* Unicode Reminder ..
*
* Display some status information about the server and Opencaching
*
***************************************************************************/
$opt['rootpath'] = './';
require($opt['rootpath'] . '/lib2/web.inc.php');
$tpl->name = 'neuestemplate';
$tpl->menuitem = MNU_NEU;
...
[eigene Quellcodes]
...
$tpl->display();
Befindet sich das Skript in Basisverzeichnis der Quellcodes, muss $opt['rootpath']
nicht definiert werden.
$tpl->name gibt den Namen des Template im Verzeichnis /template2/design an. Diese
Templates enden mit .tpl (muss bei $tpl->name weggelassen werden).
$tpl ist eine Klasse vom Typ OcSmarty, die von Smarty vererbt ist.
Üer die Funktionen von Smarty hinaus gibt es folgende (wichtigen) Funktionen:
| Name | Funktion |
| error($id) | 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 sein. |
| redirect($page) |
Leitet den Browser an das angegebene Skript weiter und beendet die Skriptausfü. Kann ein absoluter oder relativer Pfad (zum Quellcode-Basisverzeichnis) sein. Paramter müurlencode() codiert sein. Beispiel: $tpl->redirect('viewcache.php?wp=' . urlencode($wp)); |
| assign_rs($name, $rs) | Erstellt ein 2-Dimensionales Array in das alle Datensäe des Recordset $rs gespeichert werden und weist der Smarty-Variable $name dieses Array zu. |
| Name | Funktion |
| $name | Name der .tpl-Datei im Verzeichnis /template2/design/ |
| $main_template | Normalerweise immer sys_main.tpl |
| $title | Seitentitel (wird auch durch menuitem gesetzt) |
| $menuitem | siehe oben "Neues Skript anlegen" |
| $popup |
Ist popup=false, wird die Menütur usw. nicht angezeigt. Beispiel siehe "weitere Koodinatensysteme" auf viewcache.php |
| $target | Ziel fü Login. Wird üerweise automatisch gesetzt. |
Alle SQL-Abfragen müdurch die Framework-Funktionen abgesetzt werden. Die Datenbankverbindung wird automatisch mit dem ersten SQL-Befehl aufgebaut.
Wichtige Funktionen (vollstäige Liste siehe lib2/db.inc.php):
| Name | Funktion |
| sql($sql, [parameters]) |
Wrapper füql_query() Parameter werden mit sql_escape() bearbeitet, dadurch sind bei konsquenter Verwendung keine SQL-Injections möch. Parameter kön entweder als Array angegeben werden, oder als normale Parameter beim Funktionsaufruf. Gibt ein Recordset zurür /> Aufrufbeispiel: sql("SELECT id FROM table WHERE a='&1' AND b='&2'", 12345, 'abc'); |
| sql_value($sql, default, [parameters]) |
Gleich wie sql(), es wird jedoch nur die erste Zelle der ersten Zeile zurüeben. Default gibt den Wert an, der verwendet wird wenn die erste Zelle NULL ist oder das Ergebnis der Abfrage keine Zeile zurüt. |
| sql_escape($value) | Ruft mysql_real_escape auf. |
| sql_escape_backtick($value) |
Escape fükticks. Kann verwendet werden um Feldname dynamisch zu setzen. Beispiel: sql("SELECT id FROM table WHERE `" . sql_escape_backtick('a') . "`='&1' AND b='&2'", 12345, 'abc'); |
| sql_fetch_assoc($rs) | Wrapper füql_fetch_assoc($rs) |
| sql_temp_table($table) |
Reserviert einen Namen füe Temporä 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. Beispiel siehe /tops.php |
| sql_drop_temp_table($table) | Löt die temporä Tabelle |
| sql_free_result($rs) | Wrapper füql_free_result() |
| sql_affected_rows() | Wrapper füql_affected_rows() |
| sql_insert_id() | Wrapper füql_insert_id() |
| sql_num_rows($rs) | Wrapper füql_num_rows() |
| sqlf() | wie sql(), die SQL-Befehle werden jedoch im SQL-Debugger unter Framework angezeigt. |
| sqlf_value() | wie sql_value(), die SQL-Befehle werden jedoch im SQL-Debugger unter Framework angezeigt. |
| sqll() | wie sql(), die SQL-Befehle werden jedoch im SQL-Debugger unter Business Layer angezeigt. |
| sqll_value() | wie sql_value(), die SQL-Befehle werden jedoch im SQL-Debugger unter Business Layer angezeigt. |
Um die Abarbeitung von SQL-Befehlen zu kontrollieren, muss in $opt['debug'] DEBUG_SQLDEBUGGER gesetzt sein. Wird daraufhin eine URL mit dem Parameter &sqldebug=1 aufgerufen, werden alle beteiligten SQL-Befehle angezeigt. Die Ausgabe entspricht EXPLAIN EXTENDED SELECT ... andere SQL-Befehle z.B. UPDATE und DELETE werden ebenfalls analysiert.
| Name | Funktion |
| $cookie |
Speichert einen Wert im Cookie. Generell sollten die Cookies so klein wie möch
gehalten werden. Lesen mit get($name, $default='') Setzen mit set($name, $value, $default=null) Löen mit un_set($name) Prüit is_set($name) |
| $login |
Aktueller Benutzer $userid gibt die Userid zurüalls nicht eingeloggt ist $userid=0 $username ist der Benutzername $admin gibt an, welche Admin-Rechte der Benutzer hat. |
| $translate |
Funktion t($value) ützt Strings Wann immer möch direkt in den Templates ützen! Nicht im Quellcode! |
Sollten die Quellcodes auf Produktivsystem eingesetzt werden, sollten einige Sicherheitsmaßahmen beachtet werden. Unter anderen: