PHP

Beispiel und Anleitungen rund um PHP

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 >

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 >

Monatsnamen / Wochentagsnamen in deutsch via PHP

3

“Gibt einen String zurück, der den angegebenen Formatierungs-Merkmalen entspricht. Dabei wird der gegebene Timestamp/ Zeitstempel oder – falls dieser fehlt – die momentane lokale Zeit benutzt. Der Monats- und Wochentagsname wird entsprechend des per setlocale() eingestellten Wertes gesetzt.” - php.net/manual/de/function.strftime.php

 

setlocale(LC_TIME, "de_DE"); echo strftime("%A"); // Wochentagsname echo strftime("%B"); // Monatsname
Konsolen-Logo

unoconv: umwandlung zwischen allen Dokument-Formaten von OpenOffice

0

Mit unoconv kann man viele Dokument-Formate konvertieren, unterstützte Formate sind unter anderem das  “Open Document Format” (.odt), “MS Word” (.doc), “MS Office Open/MS OOXML” (.xml), “Portable Document Format” (.pdf), “HTML”, “XHTML”, “RTF”, “Docbook” (.xml)…  

Funktionen:
  • konvertiert alle Formate die OpenOffice unterstützt
  • OpenOffice unterstützt bis zu 100 Dokument Formate
  • kann genutzt werden um Vorgänge zu automatisieren (Skripte -> z.B. shell oder php)
  • unterstützt weitere Tools -> “asciidoc”, “docbook2odf/xhtml2odt”
  • kann Style-Vorlagen (templates) während der Konvertierung anwenden (corporate identity)
  • kann sowohl als Server, als auch als Client fungieren

Formate:

Es folgt eine Liste von Ausgabe-Formaten von OpenOffice (und somit auch von unoconv), die Eingabe-Formate können More >

nginx_logo_klein2

Nginx + PHP5-fpm auf Debian/Ubuntu

22
Zurück zur “Webseiten beschleunigen” – Übersicht 5.3) Nginx als Webserver

Wer komplett auf nginx als Webserver umsteigen will kann dies auch sehr einfach bewerkstelligen. Ich persönlich nutzte diese Methode und es laufen mehrere WordPress-Webseiten, e107, DokuWiki u.s.w. tadellos mit diesem System.

Als erstes müssen wir unsere sources.list ein wenig erweitern… um php5-fpm direkt mit dem Projektmanager installieren zu können, wie dies Funktioniert habe ich bereits in einem anderen Beitrag beschreiben: php-5-FPM

Danach installieren wir nginx (Webserver) + PHP, wenn du noch apache2 oder einen anderen Webserver, welcher auf Port 80 lauscht installiert hast, musst du diesen nun deinstallieren bzw. erst einmal stoppen und ggf. einige libraries nachinstallieren, falls du Ubuntu und nicht More >

PHP 5.3.3

3

Auf Dotdeb.org gibt es PHP in Version 5.3.3 im .deb-Format. Das nachfolgende kleine HowTo zeigt wie du dies auf Debian installieren kannst. Es gibt Pakete für Debian (Lenny), sowohl für amd64 als auch i386 Architekturen.

Install:

1.) als erstes benötigen wir eine Root-Shell

sudo bash

2.) nun können wir die zusätzlichen Quellen einfügen

echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list echo "deb-src http://php53.dotdeb.org stable all" >> /etc/apt/sources.list

3.) diese einmal aktualisieren

apt-get update

4.) und schon können wir PHP 5.3 installieren

aptitude safe-upgrade

Migration von PHP 5.2.x zu PHP 5.3.x: de.php.net/migration53

Falls man bereits mit Debian (Squeeze) arbeitet oder die Lenny-Backports in den Quellen eingefügt hat und daher das Paket libtool > 2.2 More >

Go to Top