php
- Details
Manchmal benötigt man Pfade der aktuellen Datei. Absolut, relativ, auch von inkludierten Dateien.
Dieser Codeschnippsel ist sehr hilfreich:
$pathVars['baseDir'] = __DIR__; $pathVars['baseDir'] = __DIR__; $pathVars['docRoot'] = filter_input(INPUT_SERVER, 'DOCUMENT_ROOT'); $pathVars['baseUrl'] = preg_replace('!^' . $pathVars['docRoot'] . '!', '', __DIR__); $pathVars['protocol'] = empty(filter_input(INPUT_SERVER, 'HTTPS')) ? 'http' : 'https'; $pathVars['file'] = __FILE__; $pathVars['fileUrl'] = preg_replace('!^' . $pathVars['docRoot'] . '!', '', __FILE__); $pathVars['fileName'] = preg_replace('!^' . __DIR__ . '/!', '', __FILE__); $pathVars['port'] = filter_input(INPUT_SERVER, 'SERVER_PORT'); $pathVars['uri'] = filter_input(INPUT_SERVER, 'REQUEST_URI'); $pathVars['viewedPort'] = ''; if ($pathVars['protocol'] == 'http' && $pathVars['port'] != 80 || $pathVars['protocol'] == 'https' && $pathVars['port'] != 443) { $pathVars['viewedPort'] = ':' . $pathVars['port']; } $pathVars['domain'] = filter_input(INPUT_SERVER, 'SERVER_NAME'); $pathVars['url'] = $pathVars['protocol'] . '://' . $pathVars['domain'] . filter_input(INPUT_SERVER, 'REQUEST_URI'); $pathVars['fullUrl'] = $pathVars['protocol'] . '://' . $pathVars['domain'] . $pathVars['viewedPort'] . $pathVars['baseUrl']; echo '<pre>'; print_r($pathVars); echo '</pre>';
Ausgabebeispiel:
Array ( [baseDir] => /www/htdocs/username/www/tipps.4uweb.de/dev/pathVars [docRoot] => /www/htdocs/username/www/tipps.4uweb.de/ [baseUrl] => dev/pathVars [protocol] => https [file] => /www/htdocs/username/www/tipps.4uweb.de/dev/pathVars/index.php [fileUrl] => dev/pathVars/index.php [fileName] => index.php [port] => 443 [port] => /dev/pathVars [viewedPort] => [domain] => tips.4uweb.de [url] => https://tips.4uweb.de/dev/pathVars/index.php [fullUrl] => https://tips.4uweb.dedev/pathVars )
- Details
Soll die Funktion innerhalb der Funktion (rekursiv) aufgerufen werden darf das return nicht vergessen werden.
- Details
Es ist manchmal sehr praktisch um direkt auf das Rootverzeichnis der Website über eine Variable zuzugreifen.
- Details
ill man Informationen z.B. über den User temporär speichern, empfielt es sich hierfür Session-Variablen, Session-Cookies oder Cookies zu verwenden.
DIE UNTERSCHIEDE
Session Variable (serverseitig)
Die Session Variable wird so angelegt:
$_SESSION['sessionVar'] = 'sessionVal';
und z.B. so wieder ausgegeben.
echo $_SESSION['sessionVar'];
Gründe für ein Ableben der Session Variable:
1. Die eingestellte session.gc_maxlifetime ist abgelaufen. Der default Wert ist üblicherweise 1440 Sekunden (24 Min).
2. Ein unset($_SESSION['sessionVar']); löscht diese Session Variable.
3. Ein session_destroy(); killt die komplette Session.
4. Abhängig von den Browsereinstellungen, wenn der Browser geschlossen wird.
ACHTUNG: Ist bei Joomla das Sessionhandling auf Datenbank eingestellt, werden nach Ablauf der session.gc_maxlifetime die Sessionvaraiblen wieder aus den Datenbankeinträgen in die Session zurückgeschrieben und bleiben so lange am Leben bis der Browser geschlossen wird.
Session Cookie (clientseitig)
Das Session Cookie wird so angelegt.
setcookie('cookieName', 'cookieValue', 0, '/');
Das sieht aber verdächtig nach einem normalen Cookie aus? Richtig nur die Null als dritter Parameter macht das Cookie zu einem Session Cookie.
Die Lebenszeit eines Session Cookies ist unabhängig von der Lebensspanne der eigentlichen Session und wird nur von der Dauer der Browsersitzung begrenzt.
Cookie (clientseitig)
Ein normales Cookie zeichnet sich dadurch aus dass der dritte Parameter einen positiven Wert aufweist.
z.B. so: setcookie('cookieName', 'cookieValue', time()+3600, '/'); Dieses Cookie hat eine Lebensspanne von einer Stunde.