PHP Workaround – file_get_contents() ohne allow_url_fopen nutzen

php_artikel_logoIch gebe zu, der Titel ist etwas irreführend. Die PHP-Funktion file_get_contents(), die dazu genutzt werden kann Dateien aus dem Internet in einen String zu lesen, um sie weiterzuverarbeiten, funktioniert bei deaktiviertem allow_url_fopen einfach nicht. Daran wird auch dieser Artikel nichts ändern.
Entwickelt man jedoch eine Anwendung/ein Script, das auf möglichst vielen Serverumgebungen funktionieren soll, so wie zum Beispiel ein WordPress-Plugin, so gibt es einen guten Workaround, um Nutzer, auf dessen Webservern allow_url_fopen deaktiviert ist, nicht auszuschließen.
Und genau dieses kleine Snippet möchte ich euch heute zeigen und erklären.

$datei = "http://www.beispiel.de/meine_seite.php";
if (function_exists(‘curl_version’))
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $datei);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($curl);
curl_close($curl);
}
else if (file_get_contents(__FILE__) && ini_get(‘allow_url_fopen’))
{
$content = file_get_contents($datei);
}
else
{
echo ‘Sie haben weder cURL installiert, noch allow_url_fopen aktiviert. Bitte aktivieren/installieren allow_url_fopen oder Curl!’;
}

Zuerst wird überprüft, ob auf dem Server die cURL Erweiterung zur Verfügung steht. Wenn dies […]

Einfacher Syntaxhighlighter in PHP

PHP SyntaxhighlighterIn folgendem Artikel möchte ich euch zeigen, wie ihr in wenigen Zeilen euren eigenen Syntaxhighlighter schreiben könnt. Mit Hilfe des folgenden PHP Snippets könnt ihr ohne Weiteres Quellcode, gut lesbar, auf eurer Homepage anzeigen lassen.
Das Ganze geht einfacher als ihr denkt. Die wesentliche Arbeit nimmt uns die interne PHP-Funktion highlight_file ab. Diese Funktion liest eine Datei ein und formatiert den Quelltext farbig. Wir müssen dann lediglich noch die Zeilen der Datei zählen und die Zeilennummern, sowie den vorformatierten Text in einem ansehnlichen Format ausgeben.
Da das Snippet nicht all zu lang ist, denke ich, dass die Kommentare im Snippet selber ausreichen. Solltet ihr dennoch Fragen haben, schreibt einfach einen Kommentar.

<?php
function highlight_quellcode($datei)
{
//Zeilen der Quellcode-Datei zählen
$anzahl_zeilen = count(file($datei));

//Liste mit Ziffern aller Zeilennummern erstellen
$liste_zeilennummern = range(1, $anzahl_zeilen);

//Zeilennummern als String formatieren. Hinter jede
//Zeilennummer einen Zeilenumbruch […]

Gzip-Komprimierung in WordPress aktivieren

Bisher habe ich mir über die Ladezeiten meiner Seite noch keine großen Gedanken gemacht. Bisher war ich auch der Überzeugung, dass WordPress von sich aus die Gzip-Komprimierung nutzen würde. Wie gesagt, bisher. Heute musste ich feststellen, dass WordPress genau jenes eben nicht tut.
Für all jene, die nichts mit Gzip anfangen können, noch eine schnelle Erklärung. Gzip ist ein Kompressionsverfahren, um die Größe einer Datei zu minimieren. Am populärsten ist es heutzutage auf Unix-Systemen. Verwendung im Webseitenbereich findet es, wenn es darum geht, die vom Server an den Nutzer zu sendenden Daten zu verkleinern. So wird der beim Aufruf entstehende Traffic vermindert, was gleichzeitig eine Verringerung der Ladezeit der Webseite mit sich bringt.
Langer Rede, kurzer Sinn. Wie bekomme ich denn nun die Gzip-Komprimierung in WordPress aktiviert? Eine Option in der Einstellungsseite von WordPress gibt es dafür leider nicht. Es bleiben also zwei Möglichkeiten. Zum einen die Nutzung eines Plugins wie z.B. […]

Zufallszahlen in PHP mit rand() oder mt_rand() erstellen?

Nachdem mich René in den Kommentaren zu meinem Artikel über die Generierung von unterschiedlichen Zufallszahlen in PHP darauf hingewiesen hat, dass es sinnvoller sei, die PHP-Funktion mt_rand() anstelle von rand() zur Erstellung von Zufallszahlen zu nutzen, habe ich beschlossen ein wenig nachzuforschen und einen Artikel darüber zu schreiben. Aber was ist mt_rand() eigentlich?
Mit mt_rand() kann man genauso wie mit rand() Zufallszahlen generieren. Der Aufruf der Funktion erfolgt genauso, wie mit der normalen rand() Funktion. Zusätzlich heißt es in der PHP-Doku, würde mt_rand() Zufallszahlen bis zu 4-mal schneller generieren und diese auch wesentlich willkürlicher Auswählen. Kurz: Die von rand() erstellten Zufallszahlen seien nicht wirklich zufällig.
Mir war die ganze “Problematik” bis dato nicht bekannt und schon nach kurzem googeln musste ich feststellen, dass René mit seiner Meinung nicht alleine ist. Allerdings muss man auch dazu sagen, dass die meisten Beiträge, die beklagen, dass rand() nicht sauber arbeitet schon “etwas älter” sind.
Oft zitiert […]

Unterschiedliche Zufallszahlen generieren in PHP

Manchmal kann es nötig sein eine Liste mit unterschiedlichen Zufallszahlen zu erstellen. Ein mögliches Anwendungsszenario hierfür könnte zum Beispiel ein Gewinnspiel sein, bei dem die Gewinner zufällig ausgewählt werden, ein einzelner Teilnehmer jedoch nicht mehr als einmal gewinnen soll. Wie das in PHP funktioniert, zeigt euch das nachfolgende Snippet.

<?php
//Wir legen eine Array mit den Zahlen an, aus denen
//die Zufallszahlen gewählt werden sollen
$array = range($minimum, $maximum);

//Wir initialisieren den Zufallszahlengenerator
srand ((double)microtime()*1000000);

//Die Schleife ermittelt in jedem Durchlauf eine Zufallszahl
for($x = 0; $x < $AnzahlDerZufallszahlen; $x++)
{
//Es wird eine Zufahlszahl generiert
$i = rand(1, count($array))-1;

//Die generierte Zufallszahl dient als Index für das Array
//mit den Zahlen aus denen wir wählen
$erg[] = $array[$i];

//Die gewählte Zufallszahl wird aus dem Auswahlzahlen-
//Array entfernt, damit Sie nicht […]