php

PHP-Datenbankzugriff über PDO

Wednesday, March 3rd, 2010

Wie in einem anderen Posting erklärt ( http://donauweb.at/ebusiness-blog/2009/11/15/sicherheit-security-eines-webshops-verbessern/ ), gibt es bei PHP keine 100% Maßnahmen gegen SQL-Injection mit konventionellem Datenbankzugriff. Nur parametrisierte SQL-Befehle bieten mehr Sicherheit. Es ist daher empfehlenswert, nur noch PDO für Datenbankzugriffe zu verwenden.

Um Datenbankzugriffe mit PDO zu vereinfachen habe ich eine Bibliothek-Klasse geschrieben für den Zugriff auf eine Datenbank mittels PDO. Diese Klasse bietet Funktionalitäten wie bei ADODB. Die wichtigsten sind:

  • pdoGetAll($sql, $data) und pdoGetRow($sql, $data) liefern ein oder mehrere Datensätze als Array zurück.
    Der SQL-Befehl kann Parameter beinhalten, deren Werte in $data mitgeliefert werden.
    zB $sql = “select * from table where id=:id”
  • pdoGetAssoc($sql, $data) holt das gleiche Resultat wie pdoGetAll, jedoch wird die erste Spalte zum Index vom Array. Dadurch ist das Lesen von zB definierten ID-Werten nachher wesentlich einfacher.
  • pdoInsUpd($table, $data, $insert_or_update, $where) erstellt einen INSERT oder UPDATE SQL-Befehl an Hand der übergebenen Parameter und führt diesen Befehl aus.

Die Klasse kann als OpenSource downgeloadet werden.

Warum PDF mit PHP erstellen?

Saturday, January 9th, 2010

Und warum sollte man ein PDF denn mit PHP erstellen? Man hat ja üblicherweise sein PDF aus einer anderen Applikation erstellt und will es nur auf den Webserver hochladen …

Google kann PDF-Dateien lesen und da PDF-Dateien meistens langlebiger sind als Webseiten werden diese PDF-Dateien von Google relativ hoch bewertet. Also gelten für PDF-Dateien die gleichen Regeln wie für HTML-Dateien:

Wichtige Stichwörter öfters verwenden, Links zur Website angeben, gerne auch Deeplinks (denn in Deeplink-URLs kommen die Stichwörter wieder vor).

Weiters will auch der Kunde vielleicht eine allgemeine Info zur Firma, wenn er ein PDF liest. Vielleicht holt er das PDF ja nicht von der Website der betreffenden Firma sondern über einen anderen Link (zB Google).

Aus obenstehenden Gründen macht es Sinn, PDF-Dateien, die man erstellt hat, mit PHP am Server nachzubearbeiten. Dabei werden neue Seiten mit diesen Informationen zugefügt.

PDF erstellen mit PHP

Saturday, January 9th, 2010

Am besten geht das mit TCPDF. TCPDF kann aus HTML ein PDF erstellen und das erleichtert die Sache sehr. Natürlich kann TCPDF nicht alle HTML-Tags und Attribute, aber da man in PHP das HTML selber erstellen kann, ist das leicht zu berücksichtigen.

Wenn zusätzlich PDF-Dateien eingelesen werden müssen, um neue Seiten einzubinden, oder PDF-Dateien zu mergen, dann kann zusätzlich PDI verwendet werden. PDI kann PDF-Dateien einlesen. Das Zusammenspiel von PDI mit TCPDF ist problemlos. Wenn TCPDF inkludiert wird, bevor man ein PDI-Objekt instanziert, dann ist PDI automatisch von TCPDF vererbt.

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
http://www.setasign.de/products/pdf-php-solutions/fpdi/

Sicherheit/Security eines Webshops verbessern

Sunday, November 15th, 2009

Wenn man einen Webshop laufend beobachtet, dann findet man immer wieder Angriffe auf den Webshop. Hacker versuchen, Schwachstellen des Webshops auszunutzen. Hier folgen einige Methoden, wie Hacker versuchen einzubrechen und was man dagegen unternehmen kann.

Angriffe auf Webshops und Schutz dagegen

Erklärung von Anriffsmöglichkeiten
http://www.suspekt.org/2009/06/16/dutch-php-conference-the-slides/

Viele interessatnte Artikel über Sicherheit
http://entwickler.de/zonen/portale/psecom,id,125,nodeid,.html
http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Wie funktioniert SQL-Injection genau?
http://www.securiteam.com/securityreviews/5DP0N1P76E.html
http://unixwiz.net/techtips/sql-injection.html

Angriffserkennung in PHP
http://php-ids.org/

XSS-Tricks
http://ha.ckers.org/xss.html

XSS-Schutz in PHP
http://wiki.flux-cms.org/display/BLOG/XSS+Prevention

Die wohl beste Bibliothek zur Prüfung von Form-Eingaben
HtmlPurifier

top-15-free-sql-injection-scanners

Sicherheitsberater, die Angriffstests durchführen (Penetration Test)
(ich habe einige kontaktiert, bei diesen hatte ich ein gutes Gefühl)

http://www.redteam-pentesting.de
https://www.mark-semmler.de
http://www.internet-sicherheit.de
http://www.it-sec.de/

Titanium bringt das Web in den Desktop

Saturday, October 24th, 2009

Desktop-Applikationen schreiben mit Web-Technologie:

Applikation schreiben in JavaScript, HTML, CSS, Python, Ruby und bald PHP
und laufen lassen auf Windows, Mac OS and Linux

Titanium ist ein Framework mit inkludiertem Browser und Zugriff auf alle Betriebssystem-Funktionen.

Titanium Desktop
Mehr Info auf http://www.codestrong.com/
Slideshow Intro
Diskussionsforum http://support.appcelerator.net/home

PHP beschleunigen

Saturday, June 20th, 2009

Hier gibt es einige Tipps zum beschleunigen von PHP-Code:
http://reinholdweber.com/?p=3
http://www.hm2k.com/posts/50-php-optimisation-tips-revisited

Aber … manche Maßnahmen zur Beschleunigung reduzieren die Lesbarkeit der Applikation. Das macht dann die Wartung zeit- und kostenintensiver und aus diesem Grund muss man immer überlegen, was in welchem Fall wichtig ist.

Caching

Saturday, June 20th, 2009

Caching kann die Response des Browsers sehr beschleunigen. Grundsätzlich gibt es 2 Ansätze:

  1. Caching im Browser
    Der Server muss dem Browser Anweisungen senden, damit der Browser ganze Dateien cacht.
  2. Caching im Server
    Der Server cacht HTML von Teilen von Webseiten. Diese Teile müssen dann nicht mehr für jeden Aufruf neu generiert werden. Die gesamte Seite kann personalisiert sein, denn es kann auch Seitenteile geben, die nicht gecacht werden.

Caching ist sehr gut erklärt in diesem Artikel (ist von Nov. 2007 aber immer noch aktuell):
http://www.sitepoint.com/article/caching-php-performance/

Eine weitere Art des Cachings, die (1) und (2) kombiniert:
Die Teile einer Seite, die aktuell sein müssen, werden mit AJAX inkludiert. Dann kann die gesamte HTML-Seite im Browser gecached werden. Bei einem erneuten Aufruf der Seite im Browser wird die Seite aus dem Cache geladen, der AJAX-Aufruf findet aber erneut statt und dieser Teil der Seite ist somit immer aktuell.

Ein Nachteil dieser Methode ist, dass auch beim 1. Aufruf der Seite 2 http-Requests erforderlich sind um die gesamte Seite anzuzeigen.

PDF erstellen un bearbeiten mit PHP

Sunday, March 15th, 2009

1) PDF erstellen: FPDF

2) Portable Document Markup Language ist eine Markup-Sprache mit der PDF-Dokumente mittels FPDF erstellt werden.

3) UTF-8 Support für FPDF: UFPDF

4) xhtml2pdf erstellt PDF-Dateien aus XHTML mittels FPDF

5) PDF erstellen mit einem PDF als Hintergrund: FPDI

6) 2 PDF-Dateien in eine mergen bzw. eine PDF-Datei in 2 Dateien splitten: SetaPDF (kommerziell)

Turnover statistics plugin for OsCommerce

Friday, January 16th, 2009

A new plugin for OsCommerce creates nice turnover statistics.

Graphical in Flash and in a table.

More info and download:
http://synctables.com/turnover-statistics-for-oscommerce.php

oscommerce turnover statistics plugin

Comments for the developer of this plugin
can be entered on this page.

HTMLSQL

Wednesday, November 5th, 2008

HTMLSQL extrahiert Teile aus einer HTML-Seite, wie SQL Teile aus einer Datenbank extrahiert. Interessante Idee!

SELECT href,title from a WHERE $class=’list’

http://www.jonasjohn.de/lab/htmlsql.htm

Sofortüberweisung

Tuesday, September 9th, 2008

Sofortüberweisung (http://sofortueberweisung.de) ist ein neuer Dienst, der in Webshops integriert werden kann. Nach der Bestellung wird der Kunde auf Seite von Sofortüberweisung umgeleitet. Dort gibt er die Daten seiner Bankverbindung an und überweist den Betrag wie im Internetbanking üblich mit dem TAN-Code der eigenen Bank. Das Geld wird also sofort überwiesen. Der Webshop erhält unmittelbar eine Bestätigung über die Durchführung der Überweisung.

Die Überweisung funktioniert von und nach Deutschland, Österreich und Schweiz.

Es gibt Schnittstellen für verschiedene Shops, die allerdings unterschiedlich programmiert sind. So basiert die OsCommerce-Schnittstelle auf einer veralteten Schnittstelle mit weniger Möglichkeiten als die Schnittstelle für Eigenprogrammierung. Wenn man also alle Features nutzen möchte, muss man auch bei OsCommerce selber programmieren.

Die Überweisung ist auch möglich ohne Webshop. Man kann dem Kunden einen Code bzw. einen Link mit diesem Code schicken. Damit kommt der Kunde zur Zahlungsseite mit allen Informationen.

Mobile Geräte erkennen in PHP

Saturday, August 2nd, 2008

Hier zwei Scripte, welche erkennen, ob ein Desktop/Notebook oder ein mobiles Gerät eine Seite aufruft. Für das mobile Gerät kann dann eine Einfachversion der Seite ausgegeben werden.

Kommerziell:
http://www.andymoore.info/php-to-detect-mobile-phones/

OpenSource:
http://www.osnews.com/…..Mobile_Detection_Kit

Protect your form with a captcha

Monday, June 30th, 2008

The website http://www.protectwebform.com protects any form or an email-link against spam with a captcha. Integrating it into your website is easy. There is even a wordpress plugin.

A drawback: It doesn’t work in PHP safemode when the function “file_get_contents” doesn’t work. I changed the PHP file to use CURL instead. Find the code here.

PHP debugging

Saturday, June 14th, 2008

There is a new version of the greatest free tool for debugging (in my opinion):

datadumper 3.0.

This tool dumps all kinds of PHP-variables in a very nice readable structure on screen. You can also dump variables in a file which is very nice when using AJAX where there is no GUI for the PHP output.

Screenshot

Download

UTF8 with PHP and MySQL

Tuesday, December 11th, 2007

There are still a lot of problems when converting a site from latin to UTF8.

Here a some links which describe what has to be done and how:

Unicode Theory:

http://www.joelonsoftware.com/articles/Unicode.html

cheatsheet

http://nicknettleton.com/zine/php/php-utf-8-cheatsheet

unifier

http://www.melody-soft.com/html/unifier.html

MySQL 4.1 und Zeichensätze

http://www.hosteurope.de/faq/index.php?cpid=12229

Using UTF-8 with UltraEdit

http://www.ultraedit.com/index.php?name=Forums&file=viewtopic&t=3511&highlight=unicode

PHP 6/Unicode design document

http://devzone.zend.com/content/summaries/php-unicode-design.txt

Andrei Zmievski’s presentations

http://www.gravitonic.com/talks/

Unicode Consortium reference point

http://www.unicode.org/

The ICU Library at the core of PHP 6

http://www.icu-project.org/

Joel Spolsky’s introduction to Unicode

http://www.joelonsoftware.com/articles/Unicode.html

Handling UTF-8 with PHP

http://www.phpwact.org/php/i18n/utf-8

utf-8-und-die-entity

http://blog.antikoerperchen.de/beitrag/42/utf-8-und-die-entity.html

PHP UTF-8 is a UTF-8 aware library of functions mirroring PHP’s own string functions. Does not require PHP mbstring extension though will use it, if found, for a (small) performance gain.
http://sourceforge.net/projects/phputf8