HowTo

HowTos / Tutorials aus verschiedenen Bereichen der IT-Welt

php – Regular Expression Schnipsel – Escaping “/”

3

Hier 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 …

0

for 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

0

Habe 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-Logo

PHP-Sicherheit erhöhen – Teil 2

6

Kein 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 >

nginx_logo_klein2

Rewrite-Rules: Apache vs Nginx

1

Bei 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

 

Apa­che:

Redirect More >

Scrollen via jQuery

1

Hier 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

1

Falls 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

3

Das 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

3

Ich 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-Logo

PHP-Sicherheit erhöhen – Teil 1

10

 Jeder 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 >

Go to Top