PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


PHPStorm 20% Rabatt Code noch bis zum 01.09.2011

with 69 comments

20% Rabatt auf die aktuell beste PHP Entwicklungsumgebung (IDE) gibts mit einem Rabatt-Code den ich euch geben kann und der noch bis zum 1. September gültig ist. Seit März habe ich mehr als 250 Coupons rausgeben können, und es soll sich natürlich niemand beschweren dass er es vergessen oder nicht mitbekommen hat, deshalb hier nochmal die Erinnerung.

Dazu einfach hier einen Kommentar hinterlassen, ihr erhaltet dann hoffentlich innerhalb von 24 Stunden eine E-Mail mit dem Code.

Achso, ihr könnt PHPStorm natürlich vorher testen, braucht nicht die Katze im Satz kaufen. Aber es gibt wenige Leute, die sich PHPStorm einige Stunden angeschaut haben und nicht überzeugt waren 😉

Written by Michael Kliewe

August 18th, 2011 at 10:38 am

Posted in PHP

Tagged with , , , ,

Manipulationen erkennen – Bemerken dass man gehackt wurde

with 38 comments

In viele Webseiten wird heutzutage eingebrochen und es werden Änderungen an der Webseite durchgeführt. Das kann die selbst programmierte Webseite sein bei der man eine Lücke eingebaut hat, das kann aber auch ein installiertes WordPress oder Joomla sein.

Häufig sind solche Angriffe nicht geziehlt, sondern werden mittels automatischer Scripte durchgeführt, die dann auf allen anfälligen Servern kleine Änderungen an den Dateien durchführen:

– Phishing Webseiten werden auf den Server gelegt
– in die Webseite wird bösartiger Code eingebaut der mittels Flash, Javascript, Windows Media Player oder anderen Techniken versucht einen Drive-By-Download bei den Besuchern zu platzieren
– die Webseite wird „nur“ defaced, sprich ein witziges Bild wird auf die Webseite gesetzt die den Besitzer blossstellen soll
– an strategisch gut platzierte Stellen im Code werden mail() Aufrufe eingefügt die beispielsweise die Klartextpasswörter an den Angreifer senden
– es werden kleine Scripte abgelegt wie beispielsweise PHProxy oder ein Spam-Mail-Script
– heutzutage wird auch gern die .htaccess Datei verändert, mit der der Suchmachinen-Traffic auf eine andere Seite umgeleitet wird, beispielsweise so:

Weiterlesen »

Written by Michael Kliewe

August 17th, 2011 at 9:42 am

Linkpool Nummer 20

without comments

Serverseitige interne Informationen aus PHP-Applikationen im Client anzeigen, .NET macht vor was möglich ist:

PHP Sessions in node.js speichern:

Verteiltes Map-Reduce:

Cross Browser Test Tool Übersicht

HTML5 und CSS3 Features schön animiert gezeigt:

Ausflug in die Spieleentwicklung mit Javascript und dem Canvas Element:

Gute Zusammenfassung zu sicheren Login-Formularen und Dingen drumherum wie Passwort vergessen Funktionen etc:

Written by Michael Kliewe

August 14th, 2011 at 3:05 pm

Posted in Javascript,PHP

Tagged with , ,

PDFs dynamisch generieren: viele Möglichkeiten

with 35 comments

Oft hat man eine Webseite in die man auch eine Export-Möglichkeit einbauen möchte, scheut aber den großen Aufwand, PDFs etc. zu generieren. Doch es gibt auch einfache schnelle Lösungen, die meistens ausreichen. Hier möchte ich einige im Überblick aufzählen.

  • Einfach HTML nehmen und daraus ein PDF basteln. Viele Daten, die wir bereits auf der Webseite darstellen, sollen so oder ähnlich in das PDF fließen. Mit geeigneter Strukturierung verhindert man somit doppelten Code. Meine aktuellen Lieblinge für diese Aufgabe sind dompdf und WkhtmlToPDF (siehe Blogartikel). Es gibt aber noch einige mehr, beispielsweise mPDF, das intern FPDF und HTML2FPDF nutzt. Ein älterer Vertreter dieser Spezies ist HTML_ToPDF. Doch diese Lösungen haben einige Probleme, beispielsweise hängt die Ausgabe häufig stark von den Daten ab: HTML ist nicht seitenorientiert, sodass es sehr schwer sein kann ein mehrseitiges PDF zu erzeugen (wo der Seitenumbruch an der korrekten Stelle ist). Auch lässt die Unterstützung von CSS oder nicht-W3C-konformen HTML häufig zu wünschen übrig. Für einfache Einseiter jedoch gut geeignet.
    <?php
    require_once("dompdf_config.inc.php");
    
    $html =
      '<html><body>'.
      '<p>Put your html here, or generate it with your favourite '.
      'templating system.</p>'.
      '</body></html>';
    
    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    $dompdf->stream("sample.pdf");

Weiterlesen »

Written by Michael Kliewe

August 12th, 2011 at 12:16 pm

Posted in PHP

Tagged with , , , , ,

Der Stand von HTML5

with 4 comments

Da viele von uns wahrscheinlich bereits HTML5 Webseiten erstellen oder ältere Seiten um HTML5-Features erweitern ist es wichtig zu wissen welcher Browser welches Feature unterstützt, um abschätzen zu können wieviel Prozent der Besucher das neue Feature nutzen können und wie viele nicht.

Die wohl korrekteste Methode das herauszufinden ist auf die aktuelle Webseite ein paar Javascript-Zeilen hinzuzufügen die die entsprechende Feature-Unterstützung testet, die sogenannte Feature Detection. Die Liste mit unterstützten bzw. nicht unterstützten Features schickt man via AJAX zum Server zurück. Nur so hat man aktuelle und auf die eigenen Besucher abgestimmte Zahlen.

Man müßte also ähnlich wie hier für das canvas-Element einen Test schreiben:

function supports_canvas() {
  return !!document.createElement('canvas').getContext;
}

Aber es gibt schon große Bibliotheken, die hunderte von solchen Tests kennen und wo man einfach eine Funktionalität testen kann, wie hier beispielsweise mit Modernizr:

if (Modernizr.canvas) {
  // let's draw some shapes!
} else {
  // no native canvas support available :(
}

Modernizr ist der bekannteste Vertreter, es ist auch möglich die unterstützten Codecs des <video> und <audio> Tags abzufragen und vieles mehr.

Es gibt aber auch Webseiten und Tabellen, die allgemein darstellen welche Browser-Versionen welche Features unterstützen. Wenn man diese Tabellen nimmt und ungefähr mit der Browser-Verteilung der eigenen Besucher verrechnet kommt man auch zu einem Ergebnis.

Die bekanntesten Seiten sind:

Wenn man nun das Ergebnis erhält dass bereits 85% der Besucher das Feature X unterstützt gilt es Entscheidungen zu treffen. Ist es noch zu früh, das Feature einzubauen? Was macht man mit denjenigen, die noch einen alten Browser haben? Versucht man das fehlende Feature nachzubilden? Für diese Nachbildungen gibt es Sammlungen von sogenannten Polyfills und Shims. Wenn der Browser also beispielsweise das placeholder-Attribut noch nicht unterstützt ist trotzdem möglich, sie mittels Javascript hinzuzufügen. Das geht natürlich nicht für alle neuen Features, aber für viele gibt es Nachbauten. Aber dieses zusätzliche Javascript bläht natürlich die Webseite auf und es ist auch nicht so schnell wie die native Unterstützung des Browsers. Aber was tut man nicht alles dafür, neue Features nutzen zu können ohne einen Teil seiner Besucher zu verärgern.

Hier eine schöne Liste der aktuell verfügbaren Polyfills und Shims:

Written by Michael Kliewe

August 10th, 2011 at 9:44 am