Entries Tagged as 'Code'

PHP Conference – Xdebug

phpconference xdebug PHP Conference   Xdebug allgemeinesAuf meiner ersten PHP Conference Anfang 2007 in Ludwigsburg, habe ich das erste Mal so richtig laut was von Xdebug gehört und war auch gleich sehr angetan davon.
Die Installation auf dem Mac – damals noch ein G4 Powerbook mit Tiger – war eine recht kniffelige Angelegenheit, lies sich aber lösen.

(Irgendwie habe ich – wie so oft – den Zeitpunkt, etwas dazu zu schreiben, verstreichen lassen und das will ich auch jetzt nicht verspätet nachholen, deswegen nur kurz: “Fink, Cachegrind, KCachegrind, X11, Fink Commander” sind einige Stichworte in dem Zusammenhang, welche mich ein paar Stunden meiner Lebenszeit gekostet haben.

Zu guter letzt und nachdem ich KCachegrind über Nacht auf dem Powerbook via Fink installiert hatte und kleinere bzw. größere Probleme aus dem Weg geräumt waren, habe ich Xdebug inklusive Profiling via KCachegrind komplett ans Laufen bekommen.)

Anfang diesen Jahres bekam ich dann mein neues Macbook und ein Leopard als OS dazu. Leider lies sich Xdebug nicht wirklich dazu überreden auf dem Macbook unter Leopard zu laufen und ich konnte nicht schlüssig herausfinden woran es hing. Da mir dann die nötige Zeit fehlte, verabschiedete ich mich vorerst von Xdebug auf meinem lokalen Webserver, zumal wir Xdebug unter Linux auf unserem Entwicklungsserver problemlos nutzen. [Read more →]

Muss einem sowas Sorgen machen? Oder Wordpress macht bäh!

Man installiert also freudestrahlend einen neuen Wordpress-Blog – basierend auf der neuesten WP-Version (2.6) – und begibt sich an die Entwicklung eines kleinen Softlink-Plugins. Weil man ja ordentlich und sauber arbeiten möchte, schaltet man das Error-Reporting vollständig ein.

	ini_set("display_errors", 1);
	error_reporting(E_ALL);

Und was bekommt man neben einem leicht irritiertem Gefühl in der Magengegend und einem kurzen Schreck (sowas wie: Äh das kann aber jetzt nicht von mir sein, weil ich habe doch noch nix ernstes gemacht)?
Eine nette Liste von Notices, die alle den Core von Wordpress betreffen – immerhin ist kein einziges Plugin aktiviert und der Blog noch geradezu jungfräulich, wenn man mal von den zwei Zeilen Code in meinem Plugin absieht, die das Reporting einschalten. [Read more →]

Smarty: Registrierung von Blöcken und Funktionen

Zur Zeit entwickle ich an einem Projekt, dass sehr stark in Zusammenhang mit der Template-Engine Smarty steht. Um die Strukturen innerhalb der Templates klar vom Script-Code zu trennen, aber trotzdem innerhalb der Templates einige Funktionalitäten zur Templateentwicklung – Darstellung von zugewiesenen Objekten/Arrays/Werten z.B. – und zur Behandlung von Inhalten bieten zu können, habe ich auf die Smarty-Plugin-Funktionalitäten register_block() und register_function() zurückgegriffen, welche in meinen Augen sehr gut geeignet sind, dem Template-Editor Werkzeuge an die Hand zu geben, um dynamische Daten/Informationen gut strukturiert und möglichst flexibel ausgeben zu können. [Read more →]

Cookie-gesteuertes ein- und ausblenden von Seitenelementen

Die Elemente der Sidebar meines Blogs und die Jumpbox, werden über script.aculo.us und prototype ein und ausgeblendet. Das alleine ist noch keine Besonderheit bzw. ist es mittlerweile wohl nicht mehr.

Ich habe das ganze jetzt durch ein Funktionalität bzw. durch ein Skript erweitert, welches die Sichtbarkeitseinstellungen, die ein Besucher meines Blogs macht, bzw. für sich setzt durch ein-/ bzw. ausblenden der einzelnen Elemente, in einem Cookie speichert. Mir war wichtig, dass zum einem die Einstellungen des Users in einem Cookie gespeichert werden und zum anderen diese Daten möglichst einfach aus dem Cookie über PHP ausgelesen werden können.
Dazu nutze ich eine Funktion, die einen Array in einen serialized Array, sprich einen String umwandelt, der über die PHP-Funtion “unserialize” wieder in einen Array zurückumgewandelt werden kann und somit die jeweiligen Elemente ein- bzw. ausgeblendet dargestellt werden, wenn die Seite neu geladen wird.

Das Javascript bietet zum einen ein paar Standard-Funktionen, um ein Cookie zu schreiben, zu löschen, auszulesen und ein Wert in einem Cookie mit einem serialized Array zu ändern oder zu löschen. script.aculo.us benutze ich in diesem Zusammenhang nur für die grafischen Effekte – sprich das ein- und ausblenden von Elementen.

Kurze Einbauanleitung:

Nun ersteinmal benötigen wir einen Layer, der ein- und ausgeblendet werden soll, mit einer eindeutigen(unique) ID. Sprich irgend ein Div-Layer, welcher Inhalt umschließt, der ein- und ausgeblendet werden soll. Dort setzen wir als Attribut eine ID.

id="unique_id_1"

Dann brauchen wir noch einen Link, über den wir diesen Layer ein-/ und ausblenden können und der onclick einen Event auslöst (Könnte auch im href stehen – mag ich aber nicht so).

onclick="swap_content('unique_id_1');"

Da die ganze Funktionalität ein Cookie für 14 Tage speichert und es bei erneutem Besuch innerhalb dieses Zeitraums, sprich der 14 Tage, erneuert für weitere 14 Tage, benötigen wir noch diesen Funktionsaufruf (am sinnvollsten onload auf jeden Fall aber zu Beginn des Seitenaufbaus bzw. der XHTML-Struktur): [Read more →]

XSS – Cross site scripting – Problematik bei typo3/tipafriend

In wie weit das Problem bei den Extensions von Typo3 verbreitet ist kann ich zur Zeit noch nicht sagen. Allerdings besteht es auf jeden Fall bei der Extension tipafriend. Ein Besucher von gulli.com hat uns darauf hingewiesen, dass man HTML-Skripte/Tags über den GET-Parameter “tipUrl” in das Skript schleusen und auf der Formularseite ausgeben lassen kann, da der GET-Parameter direkt wieder ins Template geparsed wird, ohne dass auf falschen Inhalt überprüft wird (XSS – Cross site scripting).

Ich habe das Problem behoben und zusätzlich ein weiteres kleineres entfernt. Es war bis jetzt möglich Jede beliebige Website-Url über unsere Tipafriend-Funktion an andere per Mail zu verschicken, was bei manchen Websiten bzw. deren Inhalt sehr unschön ist. Deswegen habe ich eine Überprüfung auf die richtige Domain eingebaut, um auszuschließen, dass das weiterhin möglich ist. Bei falscher Domain, wird die “tipUrl” nun einfach auf “http://www.gulli.com” geändert. [Read more →]