IP4 Adressen mit PHP und MySQL

December 27th, 2009 ron Posted in MySQL, PHP No Comments »

IP-Adressen vergleichen

Meist werden IP4-Adressen vermutlich in einem VARCHAR(15) Feld gespeichert in einer Datenbank gespeichert.
Man kann die IP-Adresse auch in einem INT Feld speichern. Dazu muss sie zuvor in das Format Long übertragen werden. In PHP übernimmt diese Aufgabe die Funktion ip2long(), in MySQL lautet die entsprechende Anweisung INET_ATON(). Der umgekehrte Weg funktioniert natürlich auch, sonst würde das ganze wenig sinnvoll sein, die PHP Funktionen long2ip(), bzw. INET_NTOA() in MySQL erledigen diese Aufgabe.

Read the rest of this entry »

AddThis Social Bookmark Button

Smarty 3 und __autoload()

November 27th, 2009 ron Posted in PHP 1 Comment »

Da das neue Smarty 3 komplett in PHP 5 neugeschrieben wurde, wird dort auch die Interzeptormethode __autoload() verwendet. Zumindest wird mit spl_autoload_register() ein eigener Autoloader festgelegt. Der Standard-Autloader steht damit nicht mehr zur Verfügung.

Um nun dennoch automatisch Klassen bei Bedarf einzubinden, kann man mit spl_autoload_register(’mein_autoloader’) einfach einen weiteren, eigenen Autoloader registrieren, den man dann noch im globalen Namensraum deklariert.

Kleiner Tipp von mir: nicht require() verwenden ;). Der spl_autoloader versucht nacheinenander mit den registrierten Loadern die benötigten Klassen einzubinden. Da er hier nach dem LiFo-Prinzip vorgeht, wird also der zuletzt registrierte Loader zuerst verwendet (also der eigene). Wenn dieser dann mit require() versucht eine Smarty-Klasse einzubinden, die er nicht findet, gibt es einen fatal-error. Mit @include() wird dann einfach mit dem nächsten Loader weitergemacht.

AddThis Social Bookmark Button

Zend Framework 1.8.1 veröffentlicht

May 15th, 2009 ron Posted in PHP No Comments »

Zend hat das erstes Maintenance Release für die 1.8-Entwicklungsschiene des Zend Framework herausgebracht. Die Version 1.8.1 des PHP-Frameworks bringt knapp 70 Bugfixes mit, nachzulesen im ZF Issue Tracker.
Das Anfang Mai veröffentlichte 1.8.0-Release wurde mit Version 1.2 der JavaScript-Bibliothek Dojo ausgeliefert , owohl der Changelog Dojo 1.3 ausgewiesen hatte. Die Nutzer finden nun das aktuellere Release der Bibliothek.

AddThis Social Bookmark Button

Kostenloses CakePHP E-Book

May 14th, 2009 ron Posted in PHP No Comments »

Im Pseudocoder.com Blog gibt es ein kostenloses CakePHP eBook, dass sich vor allem an  fortgeschritten PHP Entwickler richtet, die schon hinreichend Erfahrung mit dem Framework haben.

CakePHP Bücher auf Anfänger gibt es bereits genug, jedoch kaum welche für, die über die Grundlagen hinausgehen und tiefer in die Materie eindringen.
Das vorliegende E-Book soll diesen Mangel beheben.

Für alle, die noch keine Erfahrungen mit CakePHP haben werden in Kapitel 2 “How to Learn CakePHP” zwei Wege vorgestellt, um die Grundlagen des Cake-Frameworks zu erlernen, ein kostenloser und einer, der Geld kostet.

AddThis Social Bookmark Button

Smarty Counter

March 9th, 2009 ron Posted in PHP 2 Comments »

Heute habe ich mich etwas mit dem Counter von Smarty geprügelt. Ich bin irgendwie der Typ, der mit einem Beispiel 1000x mehr anfangen kann, als mit 100 Zeilen Erklärungen.

Daher habe ich dann wohl auch den mich interessierenden Teil in der Doku geflissentlich mehrmals übersehen.

Wenn man einen Counter in Smarty benutzt und diesen auswerten will, dann muss man den Wert mit “assign” einer Variablen zuweisen, sonst kann man zwar den Wert ausgeben aber nicht intern im Template für Vergleichsoperationen nutzen.

Read the rest of this entry »

AddThis Social Bookmark Button

PHPUnit 3.3 erschienen

September 16th, 2008 ron Posted in PHP No Comments »

Ab sofort steht die Verison 3.3 der Testsuite PHPUnit von Sebastian Bergman zum Download bereit.

Die neue Version ist laut Bergman nicht nur eine Bugfix-Version, sondern bringt auch neue Funktionen. So unterstützt PHPUnit nun Behavoir-Driven-Development und soll die  Code-Coverage-Analysen schneller und übersichtlicher gestalten.

Read the rest of this entry »

AddThis Social Bookmark Button

Filtererweiterung

August 3rd, 2008 ron Posted in PHP No Comments »

Leider sieht man immer wieder, dass völlig sorglos mit Usereingaben oder anderen Parametern, die an ein Skript übergeben werden, umgegangen wird. Selbst wenn man sich die größte Mühe gibt, wird man nie eine hundertprozentig sichere Anwendung haben, solange Userdaten verarbeitet werden müssen. Allerdings sieht man oft genug Skripte, in denen überhaupt keine Validierung stattfindet. Natürlich lässt sich eine Anwendung auf diese Weise um ein Vielfaches schneller fertigstellen, dies erkauft man aber mit einer hohen Anfälligkeit für Angriffe oder auch nur für Fehler.

Ein Grund, warum man derart ungesicherte Skripte immer wieder antrifft, ist wohl auch der leichten Erlernbarkeit von PHP zuzuschreiben. Die Lernkurve ist recht flach und so kann man mit relativ wenig Kenntnissen schon recht beeindruckende Ergebnisse abliefern. Wie es tatsächlich um den Code bestellt ist, sieht der Anwender oder schlimmer noch, der Auftraggeber oft gar nicht.

Read the rest of this entry »

AddThis Social Bookmark Button

SQLite

July 30th, 2008 ron Posted in PHP No Comments »

Seit einiger Zeit wird PHP im Bundle mit dem Datenbanksystem SQLite ausgeliefert. Anders als MySQL ist SQLite kein Datenbankserver, somit wird beim Betrieb auch kein eigener Prozess für SQLite ausgeführt. Stattdessen handelt es sich um eine Bibliothek ohne externe Abhängigkeiten, die direkt im PHP-Prozess ausgeführt wird. Daher gibt es hier auch keinen Kommunikationsweg zwischen PHP und der Datenbank. Datentransfers innerhalb eines Prozesses sind immer schneller, als Interprozess-Kommunikation beziehungsweise die Kommunikation zwischen unterschiedlichen Servern. Also ein klarer Vorteil für SQLite. Auf der anderen Seite kann die Datenbank auf diese Weise so natürlich nicht auf einen dedizierten Server ausgelagert werden, was bei zunehmender Last zu einem Problem werden kann.

Read the rest of this entry »

AddThis Social Bookmark Button

__autoload

July 28th, 2008 ron Posted in PHP No Comments »

Eine weitere magic-Function ist die __autoload() Funktion.

Sie ermöglicht das automatische Nachladen von Dateien und soll den Einsatz von inlcude() und require() ablösen. Die Voraussetzung für den Einsatz von __autoload() ist eine objektorientierte Programmierung mit einer klaren und stringenten Strukturierung.

Wird ein Objekt einer Klasse instanziiert, welche nicht eingebunden ist, wir die __autoload()-Funktion aufgerufen, gleiches gilt für extends und implements. Als Parameter bekommt Sie den Klassennamen übergeben.

function __autoload($s_klassenname)
{
    require($s_klassenname.'php');
}

Aus dem übergebenen Klassennamen werden nun entsprechend der Programmierung der Funktion der Pfad und der Name der zu inkludierenden Quelldatei genieriert und diese eingebunden.

Hierbei muss der Programierer dafür Sorge tragen, dass dies nicht zu unerwünschten Ergebnissen führt, so kann zum Beispiel bei mangelhafter Prüfung auch eine URL übergeben und so eine Datei von einem fremden Server inkludiert werden, was eine nicht unterhebliche Gefährdung der Webanwendung nach sich zieht.

Hier sind also die üblichen Vorsichtsmaßnahmen zu treffen: Gültigkeitsprüfung mit Regulären Ausdrücken, Existenzprüfung z.Bsp. mit file_exists() und Kontrolle, ob die einzubindende Datei auch die Klassendefinition enthält class_exists().

try
{
    if(FALSE === RegEx)
    {
        throw new Exception("Klassenname $s_klassenname ist ungültig");
    }
    else
    {
        require_once($s_klassenname);
    }
}
catch(Exception $e)
{
    die($e->getMessage());
}

Diese Art der Programmierung erfordert jedoch ein hohes Maß an Organisation, durch unbedachtes Bennenen von Dateien und Klassen kann die Fehlersuche deutlich erschwert werden. Außerdem muss darauf geachtet werden gewissen Konventionen beim Anlegen und Verwenden von Pfaden eingehalten werden, die jedem Programmierer in einem Projekt bekannt sein müssen. Auch in Hinblick auf die möglichen Sicherheitsimplikationen sollte die Verwendung von __autoload() gut überdacht werden.

AddThis Social Bookmark Button

UTF-8 Probleme

July 25th, 2008 ron Posted in PHP 3 Comments »

Manchmal kommt man mit utf8_decode nicht weiter, zum Beispiel dann, wenn man nicht weiß, in welchem Format die Daten angeliefert werden, und diese sowohl in UTF8 als auch in ISO-8859-1 hereinkommen können. Es passiert zum Beispiel manchmal bei Eingabefeldern in Webseiten, dass ein Browser UTF8-Daten schickt, obwohl die Seite in ISO ausgeliefert wurde.
Würde man nun einfach alle hereinkommenden Daten mit utf8_decode bearbeiten, käme es zuweilen zu seltsamen Ergebnissen.

Da ist es manchmal einfach sinnvoller mit”Suchen und Ersetzen” zu arbeiten.

Dieses kleine Codesnippet does the trick:

< ?php

       $trans = array("ä" => "ä", "Ä" => "Ä", "ü" => "ü", "Ü" => "Ü", "ö" => "ö",
      "Ö" => "Ö", "ß" => "ß");
      $string = strtr($string, $trans);
?>

So wird sichergestellt, dass am Ende auch wirklich die Umlaute herauskommen, die man haben wollte.

AddThis Social Bookmark Button




Amazon Bookshop