Überprüfen, ob mod_rewrite aktiviert ist

mod_rewrite ist die Rewrite-Engine des Apache Webservers und wird in vielen modernen Webanwendungen eingesetzt. Jedoch gibt es bisher keine zuverlässige Möglichkeit, um die Unterstützung von mod_rewrite via PHP zu ermitteln. Im Folgenden werde ich eine Möglichkeit erläutern, die Unterstützung von mod_rewrite trotzdem zuverlässig zu ermitteln.

Über die .htaccess-Datei ist es möglich Regeln für die Verwendung von mod_rewrite aufzustellen, allerdings könnte diese deaktiviert sein, weswegen das Workaround grundsätzlich auf die .htaccess-Datei abzielt.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/index.php     /index.php?mod_rewrite=1 [QSA]
</IfModule>

Das oben-stehende Snippet überprüft, ob mod_rewrite aktiviert ist und hängt einen unsichtbaren Parameter an die URL an. Via PHP ist es nun möglich diesen Parameter zu überprüfen. Natürlich kann mod_rewrite durch einen anderen Parameter-Namen ersetzt werden, damit er nicht bewusst (oder unbewusst) manipuliert werden kann. Bsp.:

if ($_GET['mod_rewrite'] == '1') {
    //Funktionen
}

PHP: global

Es gibt in PHP eine einfache Möglichkeiten Variablen, die außerhalb einer Funktion deklariert wurden, in einer Funktion zu verwenden. Das Schlüsselwort lautet global.

Um eine Variable in einer Definition zu verwenden reicht folgender Code:

global $variable;

Ein Anwendungsbeispiel:

<?php
$wert = 4;
echo "Davor: $wert<br />";
function quadrat() {
	global $wert;
	$wert = $wert * $wert;
}
quadrat();
echo "Danach: $wert";
?>

Hierbei wird die Variable $wert außerhalb der Funktion quadrat() deklariert und über global in die Funktion “importiert”.

PHP: number_format (Zahlen formatieren)

Um eine Zahl wie 100000000,92342 lesbar darzustellen, verwendet man gerne Punkte: 100.000.000,92342. Allerdings ist das bei Rechnungen in PHP nicht standard und so kommt man früher oder später zu einem Formatierungsproblem.

Doch die Funktion number_format schafft Abhilfe. Mit ihr kann man eine Zahl mit Tausender-Gruppierung formatieren. Der Aufbau der Funktion lautet:

number_format ($zahl, $nachkommastellen, $dezimal_zeichen, $tausender_trenner)
  • $zahl = die Zahl, die formatiert werden soll (in unserem Beispiel 100000000,92342)
  • $nachkommastellen = die Anzahl der Nachkommastellen
  • $dezimal_zeichen = mit diesem Zeichen werden die Nachkommastellen abgetrennt
  • $tausender_trenner = mit diesem Zeichen werden die Tausender voneinander getrennt

Ein Anwendungsbeispiel:

<?php
$zahl1 = 200.34;
$zahl2 = 18473.543;
$multiplikation = $zahl1 * $zahl2;
echo "Ergebnis <b>ohne</b> Formatierung: <b>$multiplikation</b><br />";
$multiplikation_formatiert = number_format($multiplikation, 2, ',', '.');
echo "Ergebnis <b>mit</b> Formatierung: <b>$multiplikation_formatiert</b>";
?>

UTF-8 und session_start() mit Webocton-Scriptly

Möchte man man in einem UTF-8 formatierten Dokument die PHP-Funktion session_start()ausführen, so kommt es manchmal zu folgender Fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at […]:X) in […] on line X

Um dieses Problem zu beheben, muss die BOM (Byte Order Mark) entfernt werden. Unter dem kostenlosen Allround-Editor Webocton Scriptly kann man dies folgendermaßen einstellen:

BOM entfernen unter Webocton Scriptly

Nach einem Klick auf UTF-8 und erneutem Speichern des Dokuments verschwindet die Fehlermeldung.

String in Kleinbuchstaben (strtolower)

In PHP kann man einen beliebige Wortfolge in Kleinbuchstaben umwandeln. Die benötigte Funktion lautet strtolower.

So kann man bspw. aus

ICH bIn KOMpletT DuRCHeiNANDER.

ich bin komplett durcheinander.

machen.

<?php
$string = "ICH bIn KOMpletT DuRCHeiNANDER.";
echo $string."<br />";
echo strtolower($string);
?>