Kategorie: Coding

PHP für Anfänger: Ein Leitfaden für Einsteiger in die PHP-Programmierung

Willkommen in der Welt der PHP-Programmierung! Wenn du dich auf das Abenteuer einlassen möchtest, eigene Webseiten und Anwendungen zu erstellen, bist du hier genau richtig. PHP, eine serverseitige Skriptsprache, ist ein wesentlicher Bestandteil vieler dynamischer Websites und Anwendungen im Internet. Es ist besonders beliebt, weil es leicht zu erlernen, flexibel und kompatibel mit vielen Betriebssystemen ist. Dieser Blog richtet sich an dich, wenn du noch keine oder nur wenig Erfahrung mit PHP hast. Dieser Beitrag hilft dir, die Grundlagen zu verstehen und deine PHP-Kenntnisse aufzubauen!

PHP Basics

PHP, eine serverseitige Skriptsprache, ist ein unverzichtbares Werkzeug in der Welt der Webentwicklung. Seine Hauptfunktion besteht darin, Webseiten dynamisch und interaktiv zu gestalten, indem es auf einem Webserver ausgeführt wird. Die Stärke von PHP liegt in seiner Fähigkeit, nahtlos in HTML integriert zu werden, was Entwicklern ermöglicht, komplexe Webanwendungen mit großer Einfachheit zu erstellen. Seine Flexibilität macht PHP zu einer idealen Wahl für Anfänger, die in die Entwicklung von Webanwendungen einsteigen möchten. Es ermöglicht dir eine schnelle Implementierung von Funktionen und ist gleichzeitig geeignet für komplexe Projekte.

Einrichtung einer PHP-Entwicklungsumgebung

Die Einrichtung einer PHP-Entwicklungsumgebung beginnt mit der Installation von PHP. Die Installationsschritte können je nach Betriebssystem variieren. Für Windows-Nutzer ist XAMPP eine beliebte Option, da es neben PHP auch MySQL und Apache enthält. MacOS-Nutzer können MAMP verwenden, während Linux-Nutzer PHP direkt über die Paketverwaltung ihres Systems installieren können.

Nach der Installation von PHP ist es wichtig, einen passenden Texteditor oder eine integrierte Entwicklungsumgebung (IDE) zu wählen. Einsteiger können mit einfachen Editoren wie Notepad++ oder Sublime Text beginnen. Fortgeschrittene Benutzer oder diejenigen, die eine umfassendere Entwicklungsumgebung suchen, könnten sich für IDEs wie PhpStorm oder Visual Studio Code entscheiden, die erweiterte Funktionen wie Debugging-Tools und Code Vervollständigung bieten. Diese Werkzeuge erleichtern das Schreiben und Testen von PHP-Code erheblich.

Erste PHP Schritte

Die ersten Schritte in PHP beginnen mit dem Schreiben eines einfachen Skripts. Ein grundlegendes PHP-Skript umfasst in der Regel die Ausgabe von Text. Dies dient als Einstiegspunkt, um zu verstehen, wie PHP-Code in den Server integriert und ausgeführt wird.

Wichtige Konzepte in PHP sind Variablen, Schleifen und Funktionen. Variablen werden verwendet, um Daten zu speichern, die während der Ausführung des Skripts verändert werden können. Schleifen, wie die ‘for’- und ‘while’-Schleifen, ermöglichen es, wiederholte Aufgaben effizient durchzuführen. Funktionen sind entscheidend, um Code zu organisieren und wiederverwendbar zu machen. Sie erlauben es, bestimmte Aufgaben in einem Programm zu kapseln und bei Bedarf aufzurufen. Diese Elemente bilden das Fundament für die Entwicklung komplexerer PHP-Anwendungen.

Die Rolle von VPNs in der PHP-Entwicklung

VPNs (Virtual Private Networks) spielen eine wesentliche Rolle für PHP-Entwickler, insbesondere bei der Arbeit mit entfernten Servern. Sie bieten eine sichere Verbindung, indem sie den Datenverkehr verschlüsseln, was für Entwickler, die auf entfernte Datenbanken oder Server zugreifen müssen, unerlässlich ist. Dies ist besonders relevant, wenn man in öffentlichen Netzwerken arbeitet, wo die Gefahr von Datendiebstahl höher ist. VPNs verbessern nicht nur die Sicherheit, sondern auch den Datenschutz, da sie die IP-Adresse des Benutzers verbergen und somit Anonymität gewährleisten. Dieser zusätzliche Schutz ist in der heutigen Zeit, in der Datenschutz und -sicherheit immer wichtiger werden, von großem Vorteil. Wenn du nach dem besten Anbieter für das beste VPN suchst, empfehlen wir dir diesen Beitrag.

Häufige Fehler und Problemlösung

In der PHP-Entwicklung können Anfänger einige häufige Fehler machen. Hier sind einige davon und Tipps zur Behebung:

  • Syntaxfehler: Einer der häufigsten Fehler ist die falsche Syntax, wie das Vergessen von Semikolons oder Klammern. Achte auf die korrekte Struktur und überprüfe den Code sorgfältig.
  • Fehler bei Variablen: Verwechslung von Variablennamen oder falsche Datentypen. Eine gute Übung ist es, klare und beschreibende Namen für Variablen zu verwenden.
  • Fehler beim Umgang mit Arrays: Schwierigkeiten beim Zugriff auf oder der Manipulation von Array-Elementen. Experimentiere mit verschiedenen Array-Funktionen und lese die Dokumentation, um ein besseres Verständnis zu entwickeln.
  • Datenbankfehler: Probleme beim Verbinden mit und Abfragen von Datenbanken. In diesem Fall überprüfe die Verbindung Strings und SQL-Abfragen auf Fehler.
  • Fehler im Umgang mit Formulardaten: Schwierigkeiten beim Empfangen und Verarbeiten von Daten aus HTML-Formularen. Stelle sicher, dass die Formularfelder korrekt mit dem PHP-Backend verknüpft sind.

Diese Tipps und Ressourcen können dir helfen, häufige Fehler zu vermeiden und deine Fähigkeiten in PHP zu verbessern.

Zusammenfassung

Mit deinem Einstieg in die PHP-Programmierung hast du die Türen zu einer Welt voller Möglichkeiten in der Webentwicklung geöffnet. Denke daran, dass das Erlernen einer neuen Programmiersprache Zeit und Geduld erfordert. Fehler sind ein natürlicher Teil des Lernprozesses, und jede Herausforderung verbessert dein Verständnis und deine Fähigkeiten.

Mit fortlaufender Übung wirst du bald in der Lage sein, komplexe Webanwendungen zu entwickeln. Deine Reise hat gerade erst begonnen, und jede Zeile Code, die du schreibst, bringt dich deinem Ziel, ein erfahrener PHP-Entwickler zu werden, einen Schritt näher!

WordPress REST-API deaktivieren reloaded

WordPress Logo

Vor einigen Jahren habe ich in einem Artikel aufgezeigt, wie ihr die WordPress REST-API deaktivieren könnt. Die damals vorgestellte Methode verändert die REST-API so, dass diese nur noch von angemeldeten Benutzern verwendet werden kann. Grundsätzlich eine gute Idee, da WordPress seit einigen Jahren im Core vermehrt auf die REST-API setzt und somit diese Funktionalität erhalten bleibt.

Problematisch bei dieser Variante ist, dass mittlerweile auch immer mehr Plugins von der REST-API abhängig sind und diese dann nicht mehr funktionieren. Beispielsweise gibt es Probleme mit Contact Form 7, Analytics Germanized for Google Analytics und vielen weiteren Plugins.

Ein besserer Ansatz ist daher nur die standardmäßig von WordPress verwendeten REST-API-Endpoints für nicht angemeldete User zu deaktivieren. Alle anderen Third-Party-Endpoints von Plugins funktionieren dann nach wie vor. Alles was ihr tun müsste ist folgenden Code in die “functions.php” eures Themes bzw. Child-Themes einzufügen:

/* ------------------------------------------------------------------------- *
* Disable some REST API endpoints for unauthenticated users
/* ------------------------------------------------------------------------- */
add_filter( 'rest_endpoints', 'disable_default_endpoints' );
function disable_default_endpoints( $endpoints ) {
    $endpoints_to_remove = array(
        '/oembed/1.0',
		'/wp-site-health',
        '/wp/v2',
        '/wp/v2/media',
        '/wp/v2/types',
        '/wp/v2/statuses',
        '/wp/v2/taxonomies',
        '/wp/v2/tags',
        '/wp/v2/users',
        '/wp/v2/comments',
        '/wp/v2/settings',
        '/wp/v2/themes',
	'/wp/v2/plugins',
        '/wp/v2/oembed',
        '/wp/v2/posts',
        '/wp/v2/pages',
	'/wp/v2/block-directory',
	'/wp/v2/block-renderer',
	'/wp/v2/block-types',
	'/wp/v2/blocks',
        '/wp/v2/search',
        '/wp/v2/categories'
    );

    if ( ! is_user_logged_in() ) {
        foreach ( $endpoints_to_remove as $rem_endpoint ) {
            // $base_endpoint = "/wp/v2/{$rem_endpoint}";
            foreach ( $endpoints as $maybe_endpoint => $object ) {
                if ( stripos( $maybe_endpoint, $rem_endpoint ) !== false ) {
                    unset( $endpoints[ $maybe_endpoint ] );
                }
            }
        }
    }
    return $endpoints;
}

Bei Bedarf kann das Array “$endpoints_to_remove” selbstverständlich ergänzt werden.

Eine Liste aller aktiven Endpoints erhaltet ihr mit diesem Link: http://www.MEINESEITE.de/wp-json/

Kategorien: Coding Wordpress

Die Sicherheitslücken von JavaScript: Fremdcodes und Bibliotheken

JavaScript-Bibliotheken sind unbestreitbar praktisch, doch ihre Sicherheit wird oft fahrlässig gehandhabt. Dabei gibt es ein paar simple Regeln, die man befolgen sollte, um seine Webseite vor Cyberattacken zu schützen.

JavaScript bietet vielfältige Möglichkeiten, dynamische und interaktive Webseiten-Inhalte zu kreieren. Im Laufe der Zeit hat sich die einst recht simple Skriptsprache an die gängigen Programmiersprachen angenähert und ist dadurch unweigerlich komplexer geworden. Zum Glück gibt es ja die zahlreichen JavaScript-Bibliotheken für nahezu jeden Zweck, in denen geübte Coder die am häufigsten verwendeten Funktionen und Anweisungen zusammengefasst haben – ein Segen für Einsteiger und diejenigen, die regelmäßig am DOM verzweifeln.

Was viele Webseiten-Designer und -betreiber aber gerne vergessen, ist die Tatsache, dass diese hilfreichen Programmierwerkzeuge auch das größte Sicherheitsproblem von JavaScript darstellen. Denn jeder Code, den man nicht selbst geschrieben hat, kann versehentliche oder gar beabsichtigte Fehlerstellen enthalten, die sich Hacker für Cyberangriffe zunutze machen können.

Vernachlässigte Problematik

Wie ernst das Problem ist, enthüllten im März dieses Jahres sechs Wissenschaftler von der Northeastern University of Boston in einer Studie: Von 133.000 untersuchten Webseiten verwendeten knapp 38% mindestens eine als verwundbar geltende JavaScript-Bibliothek, 10% sogar zwei oder mehr. Im Jahr 2014 hatte es bereits eine ähnliche Studie gegeben – mit noch schlechteren Ergebnissen.

Jüngste Ereignisse zeigen, wie problematisch sogenannter “third party code” für die Webseiten-Sicherheit sein kann. Im angefügten (englischsprachigen) YouTube-Video demonstriert Guy Podjarny von der Firma Snyk anschaulich einige solcher “vulnarability exploits” aus der realen Welt und macht damit deutlich, dass bereits kleinste Veränderungen des Codes ausreichen, um eine Webseite angreifbar zu machen.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Was man als Programmierer tun kann

Leider existieren bislang keine einheitlichen Datenbanken für Sicherheitslücken in JavaScript-Bibliotheken. Das ist besonders problematisch, wenn man bedenkt, dass zum Beispiel das vielseitig einsetzbare jQuery 37% der Sicherheitslücken in der genannten Studie ausmachte. Der Liebling eines jeden Coders und seine dazugehörige Erweiterung UI werden nämlich in vielen Webseiten verwendet, die mit weit verbreiteten CMS wie etwa WordPress programmiert wurden. jQuery Version 1 ist immer noch mit Abstand auf häufigsten im Einsatz, Version 2 und 3 werden kaum benutzt.

jQuery Versionsverteilung

jQuery Versionsverteilung (Quelle: W3Techs)

Das Bundesamt für Sicherheit in der Informationstechnik gibt zu diesem Thema ein paar Empfehlungen ab, die im Folgenden kurz zusammengefasst werden:

  • Drittanbieter-Bibliotheken weisen gemäß Studie tendenziell mehr Sicherheitslücken auf, da sie veränderten Code enthalten können, vor allem wenn sie aus vertrauensunwürdigen Quellen heruntergeladen werden. Es ist also empfehlenswert, die Reputation einer ausgewählten Seite vor dem Download zu überprüfen und im Zweifelsfall sämtliche Funktionen der Bibliothek selbst auszutesten.
  • Bei vielen der untersuchten Bibliotheken lag die letzte Software-Aktualisierung im Durchschnitt drei bis vier Jahre zurück! Dabei sind regelmäßige Updates eine unabdingbare Voraussetzung in jedem Aspekt der Webseiten-Security.
  • Es gilt die Faustregel: Je mehr Codes vorhanden sind, desto größer ist die Fehleranfälligkeit. Jedoch werden durchschnittlich 50% der Funktionen von „multipurpose libraries“ gar nicht verwendet. Man sollte sich also darüber klarwerden, welche Funktionen man wirklich benötigt, und im Anschluss gründlich ausmisten.
  • Egal, wie praktisch und bewährt sie sein mögen – veraltete Bibliotheken wie SWFObject erfahren schon lange keinen Support mehr und sollten deshalb gänzlich gemieden werden. Nicht umsonst verfielen beispielsweise 87% der Sicherheitslücken in der genannten Studie auf die Bibliothek YUI, von der keine aktuelle Version mehr existiert.

Javascript Code

Kategorien: Coding Internet

WordPress REST-API deaktivieren

WordPress Logo
Diese Methode ist mittlerweile nicht mehr zu empfehlen, da viele Plugins ebenfalls auf die REST-API setzen und dann teilweise nicht mehr funktionieren. Hier gehts zur neuen Methode: WordPress REST-API deaktivieren reloaded

Die WordPress REST-API ist ein spannendes Thema. Grundsätzlich soll die API eine einfach zu erweiternde Schnittstelle für die Kommunikation mit anderen Programmen bereitstellen. Mit WordPress Version 4.4 wurde die grundlegende REST-API-Infrastruktur in den WordPress-Core integriert. Die gestern veröffentlichte Version 4.7 integriert sogenannte Inhalts-Endpunkte, welche bisher nur über ein separates Plugin vorhanden waren. Durch die Endpoints können andere Programme mit WordPress interagieren und bestimmte Informationen ein- oder auslesen.

Die REST-API ist unter der URL “http://www.meine-seite.de/wp-json/” erreichbar. Das Auslesen der Artikel ist beispielsweise folgendermaßen möglich: “https://www.meine-seite.de/wp-json/wp/v2/posts”.

Wer eine Webseite mit WordPress betreibt und die REST-API nicht nutzt, möchte die API vielleicht lieber deaktivieren. Die API komplett zu deaktivieren ist keine gute Idee, da mittlerweile immer mehr Funktionen im Backend die REST-API benötigen. Allerdings lässt sich die API so umbiegen, dass sie nur von angemeldeten Benutzern verwendet werden kann. Dies ist relativ einfach möglich und erfordert nur ein paar Zeilen Code, die in der “functions.php” eures Themes bzw. Child-Themes eingefügt werden müssen.

/* ------------------------------------------------------------------------- *
* Returning an authentication error if a user who is not logged in tries to query the REST API
/* ------------------------------------------------------------------------- */
function only_allow_logged_in_rest_access( $access ) {
    if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_API_cannot_access', 'Only authenticated users can access the REST API.', array( 'status' => rest_authorization_required_code() ) );
    }
    return $access;
}
add_filter( 'rest_authentication_errors', 'only_allow_logged_in_rest_access' );

remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );

Die unteren drei Zeilen sorgen dafür, dass der Ausgangspunkt der REST-API nicht im Quellcode, Header und unter der XMLRPC-Schnittstelle publiziert wird.

In den Kommentaren wurde ich darauf hingewiesen, dass Contact Form 7 ab Version 4.8 bei deaktivierter REST-API nicht mehr richtig funktioniert. In diesem Fall kann aber auf das Plugin “Disable REST API” zurückgegriffen werden, welches das Whitelisting bestimmter Routen erlaubt. Damit können dann die für Contact Form 7 benötigten Routen erlaubt werden, während alles andere deaktiviert ist.

Kategorien: Coding Wordpress

Amazon Web Services Tutorials

Unter dem Namen Amazon Web Services (AWS) bietet der weltbekannte Internetshop eine Sammlung verschiedener Webservices als Cloud-Lösung an. Viele Entwickler setzen auf die recht günstigen und vor allem zuverlässigen Dienste von Amazon.

In seinem Amazon Web Services Blog hat der Internetriese nun eine Übersicht mit Artikeln, Tutorials und Videos zusammengestellt, die im Jahr 2012 veröffentlicht wurden. Ein Muss für Cloud-Entwickler und welche, die es noch werden wollen.

Kategorien: Coding Internet

Mit w3af Webseiten auf Schwachstellen untersuchen

Das “Web Application Attack and Audit Framework” (w3af) ist ein kostenloses Tool, um Webseiten auf Sicherheitslücken und Schwachstellen zu untersuchen. Beispielsweise kann mit w3af SQL-Injection, Remote File Inclusion und Cross-Site-Scripting (XSS) getestet werden. Das Tool ist in Python geschrieben und kann sowohl per Kommandozeile, als auch mit einer grafischen Benutzeroberfläche bedient werden. w3af ist modular aufgebaut und beinhaltet mehr als 130 Plugins. Die integrierte Updatefunktion hält das Programm immer auf dem aktuellsten Stand.

Download w3af
w3af GUI

Tutorial Kommandozeile

Nachfolgend eine kurze Anleitung, wie eine Webseite mit w3af untersucht werden kann und die Ergebnisse als HTML-Datei ausgegeben werden.

  1. Zuerst muss das Ziel definiert werden.
    w3af>>> target
    w3af/config:target>>> set target http://localhost
    w3af/config:target>>> back
  2. Jetzt müssen die gewünschten Plugins ausgewählt werden. In meinem Beispiel nutze ich je zwei Plugins aus dem audit- bzw. discovery-Bereich. Außerdem definiere ich HTML als Ausgabeformat für die Ergebnisse.
    w3af>>> plugins
    w3af/plugins>>> audit htaccessMethods buffOverflow
    w3af/plugins>>> discovery phpinfo serverHeader
    w3af/plugins>>> output htmlFile
    w3af/plugins>>> back
  3. Anschließend wird der Scan gestartet.
    w3af>>> start
  4. Die Ergebnisse werden in der Datei “report.html” gespeichert. In Windows ist die Datei unter dem Pfad “C:\Programme (x86)\w3af\w3af” zu finden.

Durch die vielen verfügbaren Plugins lassen sich auch deutlich komplexere Untersuchungen durchführen. Eine genaue Erklärung würde jedoch die Länge des Artikels sprengen.

Java – was sind Filter und Listener?

Wer sich mit Webprogrammierung in Java beschäftigt, wird früher oder später auf die Begriffe Filter und Listener stoßen. Ich möchte euch ganz kurz erklären, wobei es sich darum handelt.

Filter

Filter werden bei jedem Request vor und nach dem Servlet durchlaufen und können auf die Werte des Requests und der Response zugreifen und diese auch verändern. Dabei können mehrere Filter hintereinander geschaltet werden, die dann eine Filterkette bilden.

Anwendungsbeispiele:

  • Logging (welche Ressource wurde angesprochen, wie lange hat die Bereitstellung der Ressource gedauert)
  • korrektes Encoding für einen Request festlegen
  • Request entschlüsseln, Response verschlüsseln
  • Response komprimieren (deflate, gzip)
  • Transformation von XML mit Hilfe von XSLT

Listener

Listener sind Programmteile, die bei bestimmten Ereignissen automatisch aufgerufen werden.

Anwendungsbeispiele:

  • aktive Sessions verfolgen
  • herausfinden, wenn ein Attribut an eine Session gebunden wird

Kategorien: Coding

Basis Theme für WordPress

Es existieren verschiedene Möglichkeiten ein eigenes Themes für WordPress zu entwickeln. Vom komplett eigenen Aufbau über die Verwendung von Frameworks und die Modifikation bestehender Themes, ist so gut wie alles möglich. Eine sinnvolle Alternative ist das WordPress Basis Theme.

Wie der Name schon vermuten lässt, stellt das Basis Theme ein schlankes Grundgerüst für einen einfachen Start bereit. Die Vorlage lässt sich leicht den eigenen Bedürfnissen anpassen und bietet auch schon einige wichtige Grundfunktionen.

Das Basis Theme wird regelmäßig aktualisiert und ist bereits in HTML5 verfasst. Auch CSS3 Media Queries, um das Design automatisch auf mobile Endgeräte anzupassen, sind bereits definiert.

Download WordPress Basis Theme (automatisch die aktuellste Vesion)
Homepage des WordPress Basis Theme

Kategorien: Coding Wordpress

RailsInstaller 2 für Windows

Vor ein paar Monaten habe ich beschrieben, wie ihr Ruby on Rails 3 unter Windows von Hand installieren könnt.

Mittlerweile ist Version 2 des RailsInstallers erschienen. Im Regelfall würde ich das Tool der manuellen Installation von Ruby on Rails 3 vorziehen. Neben dem Update auf Ruby 1.9.2 ist in der neuen Version auch bereits Rails 3.1 enthalten. Außerdem ist TinyTDS enthalten, wodurch mittels FreeTDS eine MSSQL-Datenbank genutzt werden kann. Alternativ kann auch das integrierte SQLite in Version 3.7.3 verwendet werden.

Download RailsInstaller

Java 7: Verbesserungen an der Programmiersprache

Nach mehr als fünf Jahren Entwicklungszeit erschien vor kurzem Java in Vesion 7. Insgesamt enthält die neue Version rund 9.500 Verbesserungen. Nachfolgend eine Liste der wichtigsten Neuerungen:

  • neue API für Dateisystem-Operationen (NIO.2)
  • neue API für Multi-Core-Systeme
  • neuer Garbage Collector (G1)
  • verbesserten Unterstützung von dynamischen Programmiersprachen (Ruby, Python und Javascript)
  • Unterstützung von Unicode 6.0
  • Überarbeitung zahlreicher Bibliotheken

Eine detaillierte Übersicht aller Neuerungen findet ihr in den Release Notes.

Programmieren in Java soll leichter werden

Zu den oben genannten großen Änderungen kommen noch einige kleinere Verbesserungen, die vor allem das Programmieren in Java erleichtern sollen. Nachfolgend ein paar Beispiele.

Numerische Literale lassen sich nun neben der dezimalen (36), hexadezimalen (0x24) sowie oktalen (044) auch in der binären (0b100100) Schreibweise definieren.

[sourcecode language=”java”]public static final float PI = 3.141592f;
int decimal = 36;
int hex = 0x24;
int octal = 044;
int binary = 0b100100;
[/sourcecode]

Zur besseren Lesbarkeit dürfen numerische Literale nun mit Unterstrichen versehen werden. Allerdings nicht am Anfang oder am Ende und an zweideutigen Stellen, wie beispielsweise vor oder nach dem “x” in der hexadezimalen Schreibweise. Der Compiler entfernt beim Parsen die Unterstriche.

[sourcecode language=”java”]int longBinary = 0b1001_0011_0110_1011;
int longHex = 0xAA33_BE41;
int million = 1_000_000;[/sourcecode]

Das Anlegen von Objekten mit generischen Parametern wurde durch die Einführung des Diamond-Operators (<>) erleichtert. Auf der rechten Seite muss die Zuweisung nicht mehr wiederholt werden. Dadurch spart man sich Tipparbeit und der Quellcode wird kürzer und übersichtlicher.

[sourcecode language=”java”]HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
HashMap<String, List<Integer>> map = new HashMap<>(); // kürzere Schreibweise
ArrayList<String> liste = new ArrayList<String>();
ArrayList<String> liste = new ArrayList<>() // kürzere Schreibweise;[/sourcecode]

Switch-Case-Anweisungen funktionieren ab Java 7 neben primitiven Datentypen nun auch mit Zeichenketten. Dabei wird der String im Switch-Ausdruck mit der Methode “equals” mit dem Case-Fall verglichen. Anschließend gibt er die entsprechende Zahl zurück.

[sourcecode language=”java”]public static int getDay(String day) {
int dayNumber = 0;
if (day == null) { return dayNumber; }
switch (day.toLowerCase()) {
case "montag": dayNumber = 1; break;
case "dienstag": dayNumber = 2; break;
case "mittwoch": dayNumber = 3; break;
case "donnerstag": dayNumber = 4; break;
case "freitag": dayNumber = 5; break;
case "samstag": dayNumber = 6; break;
case "sonntag": dayNumber = 7; break;
default: dayNumber = 0; break;
}
return dayNumber;
}[/sourcecode]

Bei den Exceptions gibt es nun die Möglichkeit mehrere Exceptions in einem Catch-Block zu fangen. Zwischen den verschiedenen Typen steht dann jeweils ein OR-Zeichen (|). Sehr hilfreich um eine Aneinanderreihung von Catch-Blöcken zu vermeiden.

[sourcecode language=”java”]
try{
// …
} catch (IOException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
} catch (ParseException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
}

try {
// …
} catch (IOException | ParseException e) {
System.out.println("Operation xyz fehlgeschlagen: " + e);
}[/sourcecode]

IE cached AJAX-Requests

Beim Test eines AJAX-Requests ist mir aufgefallen, dass dieser im IE nicht immer funktionierte. Nach kurzer Fehlersuche habe ich herausgefunden, dass der Internet Explorer AJAX-Requests ziemlich aggressiv cached. Bei jQuery gibt es die Möglichkeit das Caching für den AJAX-Aufruf explizit zu deaktivieren:

[sourcecode language=”javascript”]$.ajax({
url: "ajax.php",
type: "GET",
data: ({id : this.getAttribute(‘id’)}),
cache: false
}[/sourcecode]

Kategorien: Coding

PHP: cURL als Alternative für allow_url_fopen

Gestern bekam ich eine Mail von meinem Webhoster, dass ab sofort die aktuellste PHP-Version 5.3.6 zur Verfügung steht. Die neue Version ist nun direkt als Modul in Apache integriert, anstatt wie früher als CGI-Programm. Dadurch sollen sich spürbare Geschwindigkeitsverbesserungen ergeben. Tatsächlich muss ich sagen, dass mein Blog deutlich schneller lädt, vor allem der Admin-Bereich.

Allerdings wurde aus Sicherheitsgründen auch die Funktion “allow_url_fopen” standardmäßig deaktiviert. Damit funktioniert mein kürzlich vorgestelltes Skript zum RSS-Feeds auslesen leider nicht mehr. Den Code habe ich auch zum Anzeigen der “Hartware News” in der Sidebar ganz unten auf der Startseite verwendet. Also was tun? Zurück auf die alte PHP-Version und die bessere Performance herschenken? Nein, kommt nicht in Frage. Also musste mein Skript angepasst werden. War sogar deutlich einfacher als ich anfangs dachte.

Anstatt des bisherigen Codes zum Laden des RSS-Feeds

$xml =simplexml_load_file('http://www.hartware.net/xml/news.rdf

hier die Lösung mit cURL:

$url = "http://www.hartware.de/xml/news.rdf";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($xml_raw)

Kategorien: Coding Internet

MySQL Workbench – Datenbankdesign, Modellierung, Erstellung und Bearbeitung

MySQL Workbench ist eine umfangreiche Software für Entwickler und Datenbankadministratoren, welche unter anderem Datenbankdesign, Modellierung, Erstellung und Bearbeitung von MySQL-Datenbanken unterstützt. Die kostenlose “Community Version” von MySQL Workbench ist für Windows, Linux und Mac OS verfügbar. Unter Windows wird ein installiertes .NET Framework 4.0 von Microsoft benötigt.

Das letzte Mal habe ich die Software vor rund drei Jahren eingesetzt. Damals war MySQL Workbench noch ziemlich instabil und war auch sehr langsam. Seitdem hat sich viel getan. Die aktuellste Version wurde optisch komplett neu gestaltet und es kamen viele neue Funktionen hinzu. Auch die Stabilität und Performance ist mittlerweile auf einem ganz anderen Niveau. Wirklich geniale Software, die sich jeder anschauen sollte, der sie noch nicht kennt

Anbei noch zwei Screenshots, um die Möglichkeiten zu verdeutlichen.

Download MySQL Workbench

Burp Suite – abfangen und modifizieren von HTTP-Headern

Das kostenlose Java-Tool Burp Suite bietet verschiedene Möglichkeiten, um Web-Applikationen auf Sicherheitslücken zu überprüfen. Sehr interessant für selbst programmierte Skripte ist die integrierte Proxy-Funktionalität. Der interaktive HTTP(S)-Proxy schaltet sich zwischen Browser und Server. Somit kann der gesamte Datenverkehr untersucht, analysiert und modifiziert werden. Beispielsweise lassen sich HTTP-Header oder POST-Daten abfangen, ändern und anschließend an den Server weiterschicken.

Dazu muss lediglich Burp Suite gestartet und im Browser als Proxy “localhost” mit Port 8080 eintgetragen sein. Nun kann man die gewünschte Homepage ansurfen und die gesamte Kommunikation verfolgen bzw. ändern.

Download Burp Suite

PHP Benchmark-Klasse

In manchen Situationen kann eine kleine Benchmark-Klasse für PHP ganz sinnvoll sein. Beispielsweise kann man damit sehen, wie lange die Laufzeit bestimmter Codeabschnitte ist.
Hier die Klasse:

/**
 * Benchmark-Klasse um Laufzeit von PHP-Code zu überprüfen
 */

class Benchmark {
	private $starttime;
	private $stoptime;
	private $resulttime;

	public function start() {
		$this->starttime = microtime(true);
	}

	public function stop() {
		$this->stoptime = microtime(true);
	}

	public function result() {
		$this->resulttime = $this->stoptime-$this->starttime;
		return $this->resulttime;
	}
}

Hier noch eine kleine Erklärung, wie man die Klasse nutzt:


// Objekt erzeugen
$Benchmark = new Benchmark();

// Startzeit festlegen
$Benchmark->start();

// Endzeit festlegen
$Benchmark->stop();

// Laufzeit mit vier Nachkommastellen ausgeben
echo 'Laufzeit: '.number_format($Benchmark->result(),4).' sec.';

Kategorien: Coding