HowTo
HowTos / Tutorials aus verschiedenen Bereichen der IT-Welt
php – Regular Expression Schnipsel – Escaping “/”
3Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den Delimiter “#” verbessern kann …
$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123"; #$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/"; $suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#"; preg_match($suchmuster, $zeichenkette, $treffer); print_r($treffer);
Ausgabe:
Array ( [0] => suckup.de Informationen / test, lall / Linux / )
UTF-8 Byte Order Mark (BOM) in php-Dateien …
0for Linux (shell):
BOM aus allen PHP-Dateien entfernen:
find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;
PHP-Dateien mit BOM anzeigen:
find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;
mehr Infos:
sed – suckup.de/linux/streameditor-sed
find – suckup.de/linux/find-linux
Byte Order Mark – http://de.wikipedia.org/wiki/Byte_Order_Mark
php – Regular Expression Schnipsel – Links aus <a>-Tags
0Habe zu dem Thema (“Reguläre Ausdrücke”) bereits ausführlicher geschrieben -> http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/ <- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann …
<?php $lall =' lall lall123 <a style="gfsedfd;" href="http://test1.de">test <a style="gfsedfd;" href="test2.php" target="_blank>test</a> dsadsa <a style="gfsedfd;" href="http://test3.de" target="_blank>test</a> dsads '; $lall = str_ireplace("\r", '', $lall); $lall = str_ireplace("\n", '', $lall); $lall = str_ireplace("\t", '', $lall); preg_match_all('/<a [^>].*href="(.*)".*>/i', $lall, $lall_new); $allLinks = explode("</a>", $lall_new[0][0]); foreach ($allLinks as $key => $val) { $val = trim($val); if ($val != '') { $data More >
PHP-Sicherheit erhöhen – Teil 2
6Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte PHP-Version auf dem aktuellen Stand ist und somit weniger Angriffsfläche bietet. -> PHP-Sicherheit erhöhen – Teil 1
1.) “register_globals” sollten deaktiviert sein!!!Falls diese Option aktiv ist, ist das Überschreiben lokaler Variablen via GET / POST möglich z.B.:
test.php:——— <?php if (!isset($test)) { $test = 1; } echo 'Der Wert von test ist: '.$test; ?>
Browser:——–…/test.php?test=2
Ab PHP 4.2 ist diese Option (php.ini -> register_globals = Off) jedoch bereits standardmäßig auf “Off” gesetzt.
2.) “Type Casting” verwenden
Casting bedeutet so viel wie Umwandeln einer More >
Rewrite-Rules: Apache vs Nginx
1Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via .htaccess gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine solche Datei geprüft, diese anschließend eingelesen und verarbeitet werden muss, macht es Sinn wie z.B. beim Nginx Webserver diese in die Konfiguration des Webs aufzunehmen. Leider ist die Syntax und Logik dieser beiden Rewrite-Rules nicht kompatibel, daher folgt eine Einführung in dieses Thema … außerdem habe ich auf github.com/voku/ meine kompletten Konfigurationsdaten für Nginx + PHP + MySQL hochgeladen.
Erklärung: einfache Weiterleitung
Apache:
Redirect More >
Scrollen via jQuery
1Hier ein kurzes Beispiel, wie man via jQuery die Position eines Elements herausfindet und automatisch an diese Stelle scrollen kann. Wer sich noch nicht so gut mit jQuery- / CSS-Selektoren auskennt, sollte sich einmal folgenden Beitrag durchlesen. -> http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/
.scrollTop() -> gibt die Scrollbar Position eines bestimmten Elements zurück
.scroll() -> wird ausgeführt, wenn gescrollt wird (event handler)
.animate() -> erzeugt animations Effekte via numerischer CSS-Einstellungen
.offset() -> gibt die Koordinaten (x,y) eines Elements zurück
.height() -> gibt die Höhe eines Elements zurück
Beispiel: jQuery_scroll.html
onClick=”$(‘#box’).show(); $(‘html,body’).stop(true,true); var target = $(‘#box’); var bottom = More >
MySQL: Zahl in Datum umwandeln
1Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann “CONVERT” bzw. “CAST” weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass “date” / “datetime” / … / als Datentyp verwendet wird.
Beispiel-Datenbank: CREATE TABLE `lall` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IntDate` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `lall` VALUES (1,201001); INSERT INTO `lall` VALUES (2,201002); INSERT INTO `lall` VALUES (3,201003); INSERT INTO `lall` VALUES (4,0); INSERT INTO `lall` VALUES (5,201011); INSERT INTO `lall` VALUES (6,201012); INSERT INTO `lall` VALUES (7,201205);
SQL: SELECT * FROM lall WHERE ((CONVERT(CONCAT(IntDate, '01'), datetime))>NOW() - INTERVAL 12 MONTH OR IntDate=0) More >
Cross-Compiling Android Kernel – Samsung GalaxyS2
3Das GalaxyS2 läuft ziemlich gut mit dem neuen nightly-builds von CM9 (Android 4.0.4) & den neusten Google-Apps & dem SiyahKernel.
Ich möchte hier kurz erklären, wie du einen Kernel für das Samsung S2 (CM9) auf Basis vom SiyahKernel kompilierst.
1.) Installiere Linux + Cross-Compiler
Als erstes solltest du Linux bereits installiert haben (z.B. Ubuntu, Debian …) ggf. einfach auf einen virtuellen PC z.B. via VirtualBox. Für Ubuntu gibt es bereits ab Werk GCC für ARM, bei Debian habe ich bisher folgende Paket-Quellen ( /etc/apt/sources.list ) mit aufgenommen und anschließend gcc-4.6-arm installiert, jedoch bisher nur mit Debian *sid* getestet.
deb http://www.emdebian.org/debian/ unstable main
Install:
sudo apt-get install build-essential git gcc-4.5-arm-linux-gnueabi wget More >
C-Programm & Cflags
3Ich habe vor einiger Zeit das Prinzip von Makefiles anhand eines kleines Beispiels gezeigt -> http://suckup.de/howto/c/c-programm-primzahlen-makefiles/ <- den selben Quelltext kompilieren wir heute mit verschiedenen C-Flags und 1000000 Schleifendurchläufen …
1.) ohne C-Flags
gcc -lm primzahlen.c -o primzahlen_slow
Output: time ./primzahlen_slow
[...] 999961 999979 999983 real 0m1.760s user 0m1.420s sys 0m0.164s
2.) ohne C-Flags & ohne “math.h” (sqrt)
gcc primzahlen.c -o primzahlen_slow
Output: time ./primzahlen_slow
[...] 999961 999979 999983 real 0m1.407s user 0m0.988s sys 0m0.192s
3.) -O2 & ohne “math.h” (sqrt)
gcc -O2 primzahlen.c -o primzahlen_2
Output: time ./primzahlen_slow
[...] 999961 999979 999983 real 0m1.405s user 0m0.976s sys More >
PHP-Sicherheit erhöhen – Teil 1
10Jeder Server welcher PHP-Skripte verarbeitet, sollte zumindest zwei Sicherheitsschlösser eingebaut haben, so dass man nicht jedem Tür & Tor öffnet.
1.) suPHP oder suexec + fcgid
Wir sollten PHP-Skript nicht alle mit dem selben User-Berechtigungen (z.B. apache) laufen lassen, daher empfiehlt es sich auf kleinen Webservern suPHP und auf Webseiten mit mehr Traffic “Fast CGI” zu installieren. Alternativ kann man PHP mit “PHP-FPM“ (FastCGI Process Manager) auch jeweils als eigenständigen Prozess laufen lassen.
2.) Suhosin
Da einige PHP-Projekte nicht wirklich für Ihre Sicherheit bekannt sind, empfiehlt es sich zudem die “Suhosin” Erweiterung für PHP zu installieren. “Es wurde entworfen, um den Server und die Benutzer vor bekannten und unbekannten Fehlern in PHP-Anwendungen und im PHP-Kern More >

0 */2 * * * wget -q -O /dev/null[…] 1 month ago