Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
21. Mrz 2010
Teaser

Spiele: Age of Empires II unter Windows 7

HINWEIS:

Beachten Sie unbedingt auch den neuen Artikel zu AoE2 inkl. einem Link zum Patch:
http://www.yourhelpcenter.de/2012/02/spiele-patch-fur-age-of-empires-ii-conquerors-edition

Wenn Sie den Spieleklassiker “Age of Empires II” (AoE 2) von MicroSoft auf Ihrem Windows7 System installieren und spielen möchten, werden Sie nach dem Start eine unangenehme Überraschung erleben:

Die Farbdarstellung ist nicht mehr richtig.
Das Wasser ist z.Bsp. violett.

Da MicroSoft keinen Support mehr für dieses (zugegeben alte) Spiel gibt, müssen wir selbst eine Lösung finden. Schuld an der Darstellung scheint der Windows Explorer zu sein. Schließen wir diesen und starten dann das Spiel, ist die Darstellung der Farben wieder ok.

Damit Sie sich umständliche Wege über den Task Manager ersparen können, bieten wir Ihnen folgendes Script an. Es “killt” Ihren laufenden Explorer, startet AoE und anschließend den Explorer wieder.

taskkill /IM explorer.exe /F
cd "C:\Program Files (x86)\Microsoft Games\Age of Empires II\age2_x1"
age2_x1.exe
explorer.exe

Bei Bedarf passen Sie bitten den Pfad zu Ihrer Installation in der zweiten Zeile an.

Natürlich übernehmen wir keine Garantie für die Korrektheit des Scriptes auf Ihrem System.

08. Mrz 2010
Teaser

PHP: Zufallszeichenkette erzeugen (random string)

Um eine Zeichenkette (string) mit zufälligen Zeichen zu erzeugen, können Sie folgende PHP Funktion nutzen:

// Zufallsgenerator schütteln
mt_srand((double) microtime() * 1000000); 
	
// Basiszeichenpool
$set = "ABCDEFGHIKLMNPQRSTUVWXYZ123456789";
$pin = "";
	
// 10 stelligen PIN aus den o.a. Zeichen erzeugen
for ($n=1;$n<=10;$n++)
	$pin .= $set[mt_rand(0,(strlen($set)-1))];

Natürlich geht das o.a. PHP Script auch für längere Zeichenketten. Ersetzen Sie einfach die "10" (Zeile 9) durch die gewünschte Anzahl an Zeichen.

In der Variablen "set" (Zeile 5) können Sie die Zeichen festlegen, aus denen der Zufallsgenerator Ihre Zeichenkette erstellen soll.

07. Mrz 2010
Teaser

.htaccess: Zugriff auf ein Unterverzeichnis erlauben

Es gibt Fälle, da möchte man ein Verzeichnis per .htaccess schützen – trotzdem aber den Zugriff auf ein Unterverzeichnis des geschützten Verzeichnisses wieder erlauben.

Praxis-Beispiel:

Um Ihre WordPress Installation zusätzlich zu sichern, sperren Sie das /wp-admin Verzeichnis durch eine .htaccess / .htpasswd Kombination. Dadurch werden aber andere Logins (z.Bsp. von normalen Benutzern auf der Webseite) auch blockiert, da bei die Loginmaske Dateien aus dem /wp-admin/css und /wp-admin/images Verzeichnis abruft.

Lösung:

Erstellen (der belassen) Sie den Schutz wie in unserem Artikel “WordPress: Schutz des Administrationsbereiches (wp-admin)/” beschrieben für den /wp-admin/ Ordner.

Erstellen Sie zusätzlich in den beiden Unterordnern “css” und “images” eine weitere .htaccess Datei mit diesem Inhalt:

Order Deny,Allow
Allow from all
Satisfy any

Nun werden Sie beim Zugriff auf “www.domain.de/wp-admin” nach Ihren Zugangsdaten gefragt. Möchte sich ein Benutzer jedoch normal über die Loginmaske anmelden, sieht er das bekannte Formular und wird nicht eingeschränkt.

07. Mrz 2010
Teaser

WordPress: Besucher protokollieren und auswerten

Für das WordPress Plugin “IP Logger” gibt es eine neue Version: 3.0

Neu in dieser Version ist die Möglichkeit, die Logs (= die protokollierten Besucherdaten) online auf den eigenen Computer herunterzuladen und dort weiter auszuwerten. Auch wird dadurch die meist vergleichsweise teure Onlinespeicherplatz geschont und die Logs auf dem lokalen PC gesammelt.

Das (ebenfalls kostenlose) Zusatztool hierfür heißt:
Nicht mehr verfügbar

Neben dem normalen protokollieren Ihrer Webseitenbesucher haben Sie die Möglichkeit, Ihre Webseite vor unerwünschten Besuchern zu schützen. Die enthaltene Option “Unerwünschte Besucher blockieren” können Sie einfach in den Einstellungen des Plugins aktivieren und dann definieren, welchen Besucher Sie nicht Ihre Webseite zeigen wollen:

  • Filterung nach dem 3 stelligen Ländercode (Code3) ist möglich. Wenn Sie z.Bsp. alle Besucher aus China sperren wollen, fügen Sie einen Filter für “Code3” mit dem Text “CHN” (= ISO Code für China) hinzu. Besucher aus dem Land sehen ab sofort nurnoch eine Meldung, dass Sie leider keine Zugriffsrechte besitzen. Die Meldung liegt in einem Template und kann frei angepasst werden.
  • Filterung nach IP: Sie möchten eine bestimmte IP Adresse nicht zulassen.
  • Filterung nach Hostnamen: Wenn Sie den Namen des Computers kennen (und dieser sich nicht ständig ändert)
  • Filterung nach dem genutzten Browser: Hier können Sie z.Bsp. festlegen, für welche Browsertypen Ihre Internetseiten gesperrt sein sollen.

Diese Technik hilft auch, die meisten sog. Bots (= Automatische Suchprogramme, die meist Ihre komplette Webseite versuchen zu katalogisieren) auszusperren. Auch gegen “Spider” Software (= Herunterladen Ihrer kompletten Webseite auf einen PC, Offline verfügbar machen) hilft die Option zuverlässig.

Mehr Informationen auf der Webseite des Autors.

07. Mrz 2010
Teaser

mySQL: Update if exists else insert record (SQL statement)

Wenn Sie einen Datensatz in eine Datenbanktabelle einfügen möchten (wenn er noch nicht existiert) oder diesen updaten möchten (wenn er existiert), hilft dieser SQL Befehl:

INSERT INTO table (fields) VALUES (values) ON DUPLICATE KEY UPDATE field = value

Dieses Statement prüft, ob der Primary Key (PK) für den einzufügenden Datensatz bereits besteht, nutzt dann ein Update Befehl und ansonsten Ihren angegeben Insert Befehl.

Beispiel

Wir haben eine Tabelle “Test” mit den Feldern “A”, “B” (je vom Typ varchar) und “C” (integer). Die Felder “A” und “B” sind unser PK.

Ein normales SQL Insert Statement in die leere Tabelle:

insert into Test (A,B,C) values ('Testtext A1','Texttext B1', 110);
insert into Test (A,B,C) values ('Testtext A2','Texttext B2', 250);

Danach stehen folgende Daten in der Tabelle “Test”:

A B C
Testtext A1 Texttext B1 110
Testtext A2 Texttext B2 250

Nun möchten wir einen weiteren Datensatz einfügen. Werden unter dem PK Daten gefunden, sollen diese überschrieben (aktualisiert) werden – ansonsten wird der Datensatz normal eingefügt:

insert into Test (A,B,C) values ('Testtext A2','Texttext B2', 285) 
    ON DUPLICATE KEY UPDATE C = 285;
INSERT into Test (A,B,C) values ('Testtext A3','Texttext B3', 310) 
    ON DUPLICATE KEY UPDATE C = 310;

Jetzt sieht der Inhalt der Tabelle “Test” wie folgt aus:

A B C
Testtext A1 Texttext B1 110
Testtext A2 Texttext B2 285
Testtext A3 Texttext B3 310

Die roten Texte sind im Gegensatz zur ersten Ansicht verändert.

insert into Test (A,B,C) values (‘Testtext A2′,’Texttext B2’, 285) ON DUPLICATE KEY UPDATE C = 28
06. Mrz 2010
Teaser

mySQL: In PHP vor SQL Injection schützen

Wie wir in unserem Artikel “mySQL: Schutz vor Angriffen in Datenbankabfragen (SQL Injection)” bereits erklärt haben, ist es vergleichsweise einfach möglich, durch ungesicherte bzw. ungeprüfte Parameter schadhaften oder zerstörenden Code in Ihre SQL Statements einzufügen.

Wie Sie sich z.Bsp. in PHP einfach und schnell gegen solche Angriffe schützen können, zeigt folgender Codeausschnitt:

foreach ($_REQUEST as $key => $val)
  $_REQUEST["$key"] = mysql_real_escape_string($val);

Es werden alle übergebenen Parameter (GET und POST) durch die mySQL Funktion “mysql_real_escape_string” überarbeitet. Dadurch werden die für eine Injektion benötigten Zeichen unschädlich gemacht und der Datenbankserver wird im Normalfall mit der “kaputten” SQL Anweisung nichts anfangen können.

Für weitere Informationen zum Thema SQL Injektion besuchen Sie bitte unseren o.a. Artikel.