PHP 5.4.x Handbuch
Verschiedene Fragen
Es gibt diverse Fragen, die in keine andere Kategorie passen.
Diese Fragen finden Sie hier.
-
Wie entpacke ich Manuals unter Windows, die mit bz2 komprimiert wurden?
-
Wenn Sie keinen Entpacker haben, der bz2 entpacken kann,
» laden Sie sich das Kommandozeilenprogramm
von Redhat herunter (siehe Informationen weiter unten).
Wenn Sie nicht das Kommandozeeilenprogramm verwenden wollen, dann können Sie
kostenlose Tools wie den » Stuffit Expander,
» UltimateZip,
» 7-Zip, oder
» Quick Zip verwenden. Wenn Sie
» WinRAR oder
» Power Archiver haben, können Sie
die bz2-Dateien damit entpacken. Sollten Sie Total Commander (ehemals
Windows Commander) verwenden, so gibt es dafür ein
kostenloses bz2 Plugin auf der
» Total Commander-Seite.
Das bzip2-Kommandozeilenprogramm von Redhat:
Benutzer von Win2k SP2 verwenden die aktuelle Version 1.0.2, alle
anderen Windows-Benutzer sollten Version 1.00 nehmen. Nach dem Download sollten Sie die
Datei in bzip2.exe umbenennen. Kopieren Sie diese zur leichteren Handhabung in ein Verzeichnis im Windows-Pfad,
z.B. C:\Windows, wobei C: das Laufwerk Ihrer Windows Installation ist.
Anmerkung: lang steht für die Sprache und x für das Format, z.B. pdf.
Zum entpacken von php_manual_lang.x.bz2 folgen Sie diesen einfachen Schritten:
-
öffenen Sie die Eingabeaufforderung
-
Springen Sie mit cd in das Verzeichnis, in dem Sie
die heruntergeladene Datei php_manual_lang.x.bz2 gespeichert haben
-
Mit bzip2 -d php_manual_lang.x.bz2, entpacken Sie die Datei
php_manual_lang.x im selben Verzeichnis
Wenn Sie die Datei php_manual_lang.tar.bz2 heruntergeladen haben, die viele HTML-Dateien
enthält, gehen Sie genauso vor. Der einzige Unterschied ist, dass Sie eine Datei namens
php_manual_lang.tar erhalten. Die meisten Entpacker unter Windows verstehen das tar Format wie z.B.
» WinZip.
-
Was bedeutet & vor einem Parameter in eine Funktionsdeklarations
wie z.B. bei asort()?
-
Es bedeutet, dass eine Variable als
Referenz
übergeben wird und die Funktion höchstwahrscheinlich
den Inhalt der übergebenen Variablen gemäß ihrem
dokumentierten Zweck verändern wird. Sie können solchen
Parameter nur Variablen übergeben und Sie müssen dem
Parameter im Funktionsaufruf kein & vorausstellen
(dieses Vorgehen ist sogar
veraltet).
-
Wie gehe ich mit register_globalsi um?
-
Informationen zu den sicherheitsrelevanten Aspekten von
register_globals finden Sie im Sicherheitskapitel
unter
Nutzung von register_globals.
Es wird empfohlen die
Superglobalen
Variablen zu benutzen und sich nicht darauf zu verlassen, dass
register_globals aktiviert ist.
Wenn Sie auf einem Shared Host alte Applikationen einsetzen müssen, die
erwarten, dass register_globals aktiv ist, obwohl es
abgeschaltet ist, oder wenn es aktiv ist, Sie aber die damit verbundenen
Sicherheitsrisiken vermeiden wollen, dann müssen Sie eventuell die
jeweils andere Einstellung mit PHP emulieren. Es empfiehlt sich jeweils
zunächst nachzufragen, ob die Einstellungen irgendwie geändert werden
können, ist dies aber nicht möglich so können Sie die folgenden
Kompatibilitätsbausteine verwenden.
Beispiel #1 Register Globals emulieren
Der folgende Code emuliert register_globals=On. Wenn Sie die
variables_order
Konfiguration ändern, sollten Sie in der Regel auch die
$superglobals entsprechend anpassen.
<?php // Emulate register_globals on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } ?>
Der folgende Code emuliert register_globals=Off. Beachten Sie, dass
dieser Code entweder direkt am Anfang Ihres Scripts ausgeführt werden
sollte oder nach dem Aufruf von session_start(),
wenn Sie damit Ihre Sessions starten.
<?php // Emulate register_globals off function unregister_GLOBALS() { if (!ini_get('register_globals')) { return; }
// Might want to change this perhaps to a nicer error if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) { die('GLOBALS overwrite attempt detected'); }
// Variables that shouldn't be unset $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES');
$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array()); foreach ($input as $k => $v) { if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) { unset($GLOBALS[$k]); } } }
unregister_GLOBALS();
?>
Anmerkungen zum PHP Handbuch
|
Neue Anmerkung schreiben
|
|