Archive for the Category »PHP «

Joomla 2.5 mit neuen Funktionen

Das Open Source CMS Joomla kommt in der neuen Version 2.5 mit einigen Neuerungen daher. Dazu gehört zum Beispiel die erweiterte Suchfunktion, die nun mit Wortstämmen und automatischer Vervollständigung arbeiten kann. Die Suche an sich soll auch deutlich schneller geworden sein und dabei auch natürliche Sprache erkennen können.

Für den Webseitenersteller könnte interessant sein, dass Joomla jetzt nicht mehr nur MySQL unterstützt. Version 2.5 arbeitet auch mit dem Microsoft SQL-Server, in Kürze sollen auch PostgresSQL, SQLite, Oracle und PDO mit Joomla zusammenarbeiten.

Die mit Joomla 1.6 eingeführten automatischen Updates informieren den Admin jetzt auch, wenn ein Update zur Installation bereitsteht. Im Joomla-Blog findet man weitere Details.

POST-Anfragen können Internetserver lahmlegen

Auf dem Kongress des Chaos Computer Clubs wurde eine neue Schwachstelle von Internetservern offengelegt. Die Entwickler Alexander Klink und Julian Wälde haben das Problem entdeckt und beschrieben.

Über POST-Requests kann man gezielt Hash-Kollisionen auslösen, die die Last eines Internetservers drastisch erhöhen, und so eine DoS-Angriff fahren. Das klappt im Grunde bei allen Webservern, denn das Problem liegt in den verwendeten Scriptsprachen wie PHP, ASP oder Javascript.

Durch solche provozierten Hash-Kollisionen braucht man weniger als 100 kBit/s Bandbreite, um eine moderne CPU komplett auszulasten und einen Internetserver in die Knie zu zwingen. Als bestes Mittel dagegen gilt es, die Hash-Funktion zu randomisieren.

Einige Hersteller haben schon auf die Angriffsmöglichkeit reagiert. Microsoft bietet einen Patch für ASP.Net an, der heute erscheinen soll. Bei PHP empfiehlt sich die Absicherung mit Suhosin an. Für Tomcat gibt es ein Workaround und für Ruby einen Patch.

Ein einfacher Wechsler für Werbung in PHP

In den meisten Online-Verkaufsstellen hat man gerade in der Vorweihnachtszeit mehr Werbung unterzubringen, als Platz dafür vorhanden ist. Und da die ja zum Beispiel in der Sidebar möglichst weit oben stehen soll, liegt der Gedanke nahe, einen einfachen, zufälligen Wechsler zu verwenden, um abwechselnd die eine oder die andere Werbung an der besten Stelle zu zeigen.

Dazu reicht ein einfaches Programm in PHP:

<?php
$wechsel=rand(1,2);
If ($wechsel==1) {
?>
<div id=”Werbung”>
Unser Klassiker: Modell 1
</div>
<?php } else { ?>
<div id=”Werbung”>
Unser Neuester: Modell 2
</div>
<?php } ?>

Die Variable $wechsel wird von der Zufallsfunktion rand() auf einen Wert von 1 oder 2 gesetzt und eine If-Else-Verzweigung zeigt je nach Wert die erste oder die zweite Werbung. Das lässt sich natürlich auch auf mehr als zwei Werbemessages erweitern

Webbasierter Cloud-Editor ACE 0.2.0 mit neuen Sprachen

ACE ist ein webbasierter Programmeditor mit einem Funktionsumfang, der einem normalen Editor schon ziemlich nahe kommt. Es ist ein Nachfolge-Projekt von Mozilla Bespin. Die neue Version 0.2.0 bringt eine vertikal oder horizontal geteilte Ansicht des Editors, Code-Folding und einen Syntax-Check während der Eingabe.

An Sprachen werden aktuell PHP, Java, Javascript, Ruby, C++, Python, HTML und CSS unterstützt. In Arbeit ist die Sprachunterstützung für Scala, C#, Perl, Groovy und JSON.

Der Cloud-Editor ACE ist komplett in JavaScript geschrieben. Weitere Informationen und einen Download-Link findet man auf der ACE-Homepage.

Neues Javascript-SDK bei Facebook

Nach dem überarbeiteten PHP-SDK, das unter Anderem auch die Anpassungen für das neue Cookie-Format von Facebook beinhaltet, brachte Facebook jetzt auch ein aktualisiertes Developer-Kit für Javascript, das OAuth 2.0 unterstützt. Das ist der aktuelle Standard zur Freigabe des Zugriffs auf Benutzer-Daten für Dritte und wird zum Beispiel von mobilen Apps oder von Webservices genutzt.

In diesen Tagen bringt Facebook neue Sicherheitsmechanismen auf seiner Plattform. Wer seine Zugriffsfunktionen jetzt noch nicht auf das neue OAuth 2.0 umgestellt hat, wird jetzt feststellen, dass es nicht mehr funktioniert.

Gleichzeitig wird die Ausgabe der Daten auch von http: auf HTTPS: umgestellt, was bedeutet, dass alle Facebook-Apps ein Zertifikat brauchen.

Probleme mit PHP – Updates gelöst

Erst vor Kurzem wurde die neue PHP-Version 5.3.7 veröffentlicht. Dann hat man festgestellt, dass insbesondere ein Fehler bei der Funktion crypt() beim Hash-Algorithmus dazu, dass gerade im Bereich von Authentifizierungen die PHP-Programme nicht mehr funktionieren. Die PHP-Entwickler rieten vorgestern davon ab, das Update einzuspielen.

Danach reagierten sie aber sehr schnell: Seit gestern steht das Update PHP 5.3.8 zum Download bereit. Dieses Update lässt die Funktion crypt() wieder korrekt arbeiten. Dabei wurde auch gleich die Behandlung von Timeouts bei SSL-Verbindungen wieder auf die Funktionalität vor dem Update 5.3.7 gesetzt, auch dort gab es Probleme durch Aufhänger.

PHP: Festplatten-Speicher des Webservers abfragen

Ausgabe des Codeschnipsels

Gelegentlich kann es wichtig werden, zu wissen, wie viel Speicherplatz man noch auf der Festplatte des Webservers zur Verfügung hat. Gerade bei einer Internetpräsenz mit vielen Digitalfotos in voller Größe sind schnell die Grenzen der Kapazität erreicht.

Der folgende PHP-Schnipsel gibt die Gesamtgröße der Festplatte und den freien Speicherplatz darauf aus. Auch die im aktuellen Verzeichnis benutzte Kapazität wird angezeigt, das hilft zu erkennen, ob es wirklich die Fotos sind, oder ob ein anderer Bereich die Ressourcen belastet. Der Code dazu:

<?PHP

$path = “./”;
$free = round(disk_free_space  ($path) / 1024 / 1024, 3);
$disk = round(disk_total_space ($path) / 1024 / 1024, 3);

printf (‘<p>Von insgesamt %s GB sind noch %s GB frei.</p>’,
number_format ( $disk, 0, ‘,’, ‘.’),
number_format ( $free, 0, ‘,’, ‘.’)
);

define (‘_size’, 4096);

function dir_size($DIR = FALSE) {
if ( ! $DIR OR ! is_dir($DIR)) return;

if (substr($DIR,-1) != “/”) $DIR .= “/”;
if ($d = dir($DIR)) {
$size = _size;
while ($n = $d->read()) {
if ($n == “.” OR $n == “..”) continue;
$SIZE += (is_dir($DIR . $n))
? dir_size($DIR . $n) + $size
: ceil(filesize($DIR . $n) / $size) * $size;
}
$d->close();
}
return $SIZE;
}

printf(‘<p>Im Verzeichnis sind %s Bytes in Benutzung</p>’,
dir_size(dirname(__file__)));
?>

PHP: Alle Meta-Tags einer Internetseite anzeigen

Wer Internetseiten erstellt, muss häufiger alle Meta-Tags einer Seite auslesen. Das kann man natürlich über die Quellcode-Anzeige des Browsers machen, es kann aber relativ umständlich sein. Die PHP-Funktion get_meta_tags() macht es sehr einfach, alle Meta-Tags auf einmal auszulesen und anzuzeigen. Das sieht dann so aus:

// Meta-Tags auslesen
$seite = “www.homepage-anleitung.de”;
$mtarray = get_meta_tags($seite);

// Meta-Tags ausgeben
foreach ($mtarray as $key => $wert) {
echo $key.”: “.$wert.”<br />”;
}

Das Programm gibt alle Meta-Tags der Seite mit einem Tag pro Zeile aus. Wenn man das Script um ein Formular zur Eingabe einer Webseiten-Adresse erweitert, hat man ein Werkzeug, mit dem man schnell und einfach alle Meta-Tags beliebiger Internetseiten anzeigen kann.

PHP: Erreichbarkeit von Internetseiten prüfen

Wer mehrere Internetpräsenzen auf verschiedenen Servern betreuen muss, möchte vielleicht wissen, ob auch wirklich alle online sind und gegebenenfalls einen Hinweis bekommen, wenn eine davon aus irgendeinem Grunde nicht mehr erreichbar ist.

Dazu muss man einfach nur eine Verbindung zu der Website öffnen und schauen ob das klappt. Der Code dazu lautet zum Beispiel:

<?php
$url = “www.homepage-anleitung.de”;
$online = @fsockopen (“$url”, 80);
if (!$online) {
echo “Seite $url ist nicht erreichbar”;
} else {
echo “Seite $url ist erreichbar”;
}
?>

Dies einfache Beispiel zeigt das Prinzip einer Online/Offline-Prüfung. Wenn man mehrere Seiten zu überwachen hat, sollte man die am besten in einer Schleife nacheinander testen und statt der einfachen Textausgabe über eine Email nachzudenken, zumindest für den Fall, dass die Seite nicht mehr erreichbar ist.

PHP: Dateien in einem Verzeichnis zählen

Häufig muss man bei der Programmierung wissen, wie viele Dateien in einem Verzeichnis sind. Wenn man keinen Zähler hat, der bei jeder neuen oder gelöschten Datei angepasst wird, hilft nur das Zählen der aktuell im Verzeichnis befindlichen Dateien. Und das geht so:

<?php
$pfad = “.”;
$i = 0;
$dh = opendir($pfad);
while ($datei = readdir($dh)) {
if($datei !== “” &&
$datei !== “.” &&
$datei !== “..” &&
!is_dir($datei)) {
$i++;
}
}
echo “$i Dateien im Verzeichnis”;
?>

Die Verzeichniseinträge “.” und “..” werden nicht mit gezählt. Die Variable $pfad enthält das Verzeichnis, das durchsucht wird, im Beispiel wird mit dem Punkt das aktuelle Verzeichnis durchsucht. Hier kann man natürlich auch ein anderes Verzeichnis einstellen, z.B. $pfad=”../bilder”;.

Category: PHP  Tags: , , ,  Leave a Comment