Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # PHP Gangsta - Der PHP Blog mit Praxisbezug Ein PHP Blog mit Themen aller Art. Manchmal vergewaltige ich PHP... ## Sitemaps - [XML Sitemap](https://phpgangsta.de/sitemap.xml): Contains all public & indexable URLs for this website. ## Beiträge - [TLS/SSL für Heimwerker](https://phpgangsta.de/tlsssl-fur-heimwerker) - Gastartikel von Oliver Sperke. Ich bin 34 Jahre alt und seit 10 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängigsten Internetsprachen: PHP, HTML, Javascript und CSS. In den vorhergehenden Beiträgen habe ich ja schon locker über Passwörter und wie - [Rechner aufwecken via PHP und Wake-On-LAN](https://phpgangsta.de/rechner-aufwecken-via-php-und-wake-on-lan) - Wenn man den Server im Keller nachts herunterfährt und morgens keine Lust hat runterzulaufen (vorausgesetzt man schläft oder arbeitet nicht im Keller), kommt man schnell auf die Idee den Diener im Untergeschoss aus der Ferne aufzuwecken. Dank Wake-On-LAN in Form eines Magic Packets ist das auch einfach möglich wenn es der Rechner den man aufwecken - [Algorithmus gesucht: Strings in String suchen](https://phpgangsta.de/algorithmus-gesucht-strings-in-string-suchen) - Ich habe eine kleine Aufgabe für euch: Gegeben ist ein String, sowie eine Menge kürzerer Strings die darauf geprüft werden ob sie im Ausgangsstring vorkommen und an welcher Stelle. Normalerweise gibt es dafür die PHP-Funktion strpos(). Nehmen wir an sie steht nicht zur Verfügung. Wie würdet ihr das Problem bestmöglich lösen, es gibt ja ziemlich - [Script zur Entfernung von schliessenden PHP Tags](https://phpgangsta.de/script-zur-entfernung-von-schliessenden-php-tags) - Nach wie vor gibt es viele Diskussionen ob das schliessende PHP-Tag am Ende einer PHP-Datei weggelassen werden sollte oder nicht. In vielen großen Projekten wird das Weglassen mittlerweile vorgeschrieben (Zend Framework, Symfony, Doctrine), in einigen muss es zwingend vorhanden sein (Lithium), aber in noch mehr Projekten ist es nicht festgelegt und wird mal weggelassen mal - [2-Faktor-Authentifizierung mit dem Google Authenticator](https://phpgangsta.de/2-faktor-authentifizierung-mit-dem-google-authenticator) - Viele größere Webdienste bieten mittlerweile die 2-Faktor-Authentifizierung an, PayPal, Amazon, Facebook und nicht zuletzt Google. Mit der 2-Faktor-Authentifizierung muss neben dem Benutzernamen und Passwort auch noch ein Einmal-Passwort, ein sogenanntes One-Time-Token eingegeben werden, das von einem Gerät unabhängig vom PC generiert wird und nur einmal gültig ist. Sollte es also jemand schaffen und das Passwort - [PayPal-Integration: Instant Payment Notifications (IPN) einbauen](https://phpgangsta.de/paypal-integration-instant-payment-notifications-ipn-einbauen) - Über PayPal gibt es unterschiedlichste Meinungen, die Sperrungen von Accounts sind teilweise willkürlich, in wie weit die amerikanische Regierung die Finger im Spiel hat mag man sich auch ausmalen. Nichtsdestotrotz ist es der aktuell am meisten verbreitete Online-Zahlungsdienst und man kann nahezu überall damit bezahlen. Kein Shop kann sich erlauben keine PayPal Zahlungen anzunehmen, einige - [Screenshots von Webseiten erstellen mit PHP](https://phpgangsta.de/screenshots-von-webseiten-erstellen-mit-php) - Einen einfachen manuellen Screenshot von einer Webseite zu erstellen ist einfach, brauche ich hier wohl nicht extra erläutern. Wenn man allerdings aus seiner PHP-Applikation Screenshots von Webseiten erstellen möchte oder keine Lust hat auf manuelles Zusammenkopieren weil die Webseite sehr lang oder breit ist, hilft das Projekt wkhtmltopdf. Dieses Kommandozeilentool gibt es für Windows, Linux - [Möglichkeiten, ID3 Informationen aus MP3s auszulesen](https://phpgangsta.de/moglichkeiten-id3-informationen-aus-mp3s-auszulesen) - Informationen aus MP3-Dateien auszulesen ist keine Hexerei, seit vielen Jahren gibt es dafür eine Unmenge an Möglichkeiten, aber im Detail trennt sich dann doch die Spreu vom Weizen. Manche beherrschen nur das ID3v1 Format, und manche sind einfach langsam oder die Informationen sind unvollständig. Ich möchte hier auch nur die Möglichkeit betrachten, Informationen auszulesen, Änderungen - [Diskrete begrenzte Glockenkurven-Verteilung?](https://phpgangsta.de/diskrete-begrenzte-glockenkurven-verteilung) - An der Überschrift kann man schon erkennen dass ich nicht genau weiß wie der Terminus lautet, zu dem ich eine Lösung suche. Ich versuche es mal zu erklären: Ich habe einen Zahlenbereich, beispielsweise die ganzen Zahlen zwischen 10 und 15 (beide inklusive). Nun benötige ich eine Funktion, um einen Zufallswert in diesem Bereich zu erhalten, - [Ergebnisse der Array-Umbau-Aufgabe](https://phpgangsta.de/ergebnisse-der-array-umbau-aufgabe) - Bis heute morgen wurden von 18 Lesern 19 Lösungen zur vorgestrigen Array-Umbau-Aufgabe eingereicht, und ich habe alle Funktionen durchlaufen lassen mit einem Testarray. Nun möchte ich hier einige Werte zur Korrektheit und Laufzeit veröffentlichen. Dazu habe ich ein Testscript erstellt, welches auf GitHub einsehbar ist, und wo ich alle Funktionen mit einem 29358 Elemente großen - [PHP 7.4.0 RC 5: Selbst kompilieren und testen](https://phpgangsta.de/php-7-4-0-rc-5-selbst-kompilieren-und-testen) - Letzte Woche Donnerstag ist der nach Plan fünfte Release-Candidate von PHP 7.4 erschienen: RC5. Es wird noch einen weiteren Release-Candidate geben, bevor hoffentlich am 28. November 2019 das finale PHP 7.4.0 GA erscheinen wird. Es ist also höchste Zeit, dem PHP-Team dabei zu helfen, Bugs zu finden. Eigentlich sollte man das schon früher getan haben, - [Applikationen migrieren von PHP 5.6 auf PHP 7.3](https://phpgangsta.de/applikationen-migirieren-von-php-5-6-auf-php-7-3) - PHP 7.0 ist nun schon über drei Jahre verfügbar, 7.3 ist auch schon wieder 9 Monate alt. PHP 7.4 wird Ende diesen Jahres erscheinen. In den letzten 2 Jahren habe ich mehrere Projekte von PHP 5.6 auf eine 7er Version bringen dürfen. Zwei davon waren etwas größer, von denen möchte ich hier berichten. Ich hatte - [PHP 7.3.0 RC 4: Performanceboost und bitte testen!](https://phpgangsta.de/php-7-3-0-rc-4-performanceboost-und-bitte-testen) - Vor 3 Tagen ist der nach Plan drittletzte Release-Candidate von PHP 7.3 erschienen: RC4. Es wird noch einen RC5 und RC6 geben, bevor hoffentlich pünktlich zu Nikolaus am 06.12.2018 das finale PHP 7.3.0 GA erscheinen wird. Es ist also höchste Zeit, dem PHP-Team dabei zu helfen, Bugs zu finden. Eigentlich sollte man das schon früher - [Performanceboost durch temporäres Abschalten des PHP Garbage Collectors](https://phpgangsta.de/performanceboost-durch-temporaeres-abschalten-des-php-garbage-collectors) - Update 27.10.2018: Mit PHP 7.3 ist das selektive Abschalten des Garbage Collectors wohl nicht mehr nötig. Auf der Suche nach einfachen Möglichkeiten, die Performance eines CPU-bound PHP-Scripts zu steigern, fiel mir wieder ein, wie der Composer Installer einen drastischen Performanceboost hinbekommen hat. Selbst ausprobiert, und siehe da: Statt 7 Sekunden Laufzeit nur noch 2,7 Sekunden. - [TLS 1.0/1.1 Abschaltung: Eigene Versionsverteilung herausfinden und serverseitig abschalten](https://phpgangsta.de/tls-1-0-1-1-abschaltung-eigene-versionsverteilung-herausfinden-und-serverseitig-abschalten) - Browserhersteller planen, ab 2020 die TLS-Versionen 1.0 und 1.1 nicht mehr zu unterstützen: https://www.heise.de/security/meldung/Verschluesselung-im-Web-Chrome-Firefox-Co-verabschieden-sich-von-TLS-1-0-1-1-4191864.html https://www.golem.de/news/https-browser-wollen-alte-tls-versionen-2020-abschalten-1810-137135.html Mit den richtigen Einstellungen und Ciphers ist TLS 1.0 noch sicher zu betreiben, aber man muss es eben richtig konfigurieren, wenn man alles beachten will: BEAST, POODLE, Sloth, DROWN, CRIME und BREACH, RC4, MD5, ROBOT, Sweet32, Bleichenbacher, Heartbleed, FREAK und - [Der Unterschied zwischen "||" und "or" bzw. "&&" und "and"](https://phpgangsta.de/der-unterschied-zwischen-und-or-bzw-und-and) - Wenn man eine if-Anweisung in PHP schreiben möchte, und dabei 2 Bedingungen mit einem "und" verknüpfen möchte, kann man entweder "&&" nutzen oder "and" schreiben. Richtig? Das ist das selbe, oder? Ja, ist es. Beides funktioniert, beides ist syntaktisch korrekt, und beides ist äquivalent. Kopieren wir nun die Bedingungen in eine temporäre Variable $c: DAS - [igphp - Interessengemeinschaft PHP e.V.](https://phpgangsta.de/igphp-interessengemeinschaft-php-e-v) - Ich mag PHP. Ich möchte es auch in Zukunft nutzen, denn man kann sehr effektiv Software schreiben, große wie kleine Projekte umsetzen, und einfach alles machen was man will: Webseiten, Daemons, Cronjobs, Chatbots, IoT-Steuerungen, neuronale Netze, einfach alles. Dazu tragen kontinuierliche Verbesserungen und Erweiterungen der Sprache selbst, aber auch das Ökosystem (Frameworks, Tools, Bibliotheken...) bei. - [Passwortmythen oder „Was Du schon immer über Passwörter wusstest, aber nie zu sagen wagtest“](https://phpgangsta.de/passwortmythen-oder-was-du-schon-immer-uber-passworter-wusstest-aber-nie-zu-sagen-wagtest) - Dieser Artikel räumt mit verbreiteten Passwortmythen auf und erklärt die Grundlagen eines sichere Passwortmanagements und der Sicherheit von Passwörtern. - [PHP, curl und TLS 1.2 als Minimum](https://phpgangsta.de/php-curl-und-tls-1-2-als-minimum) - TLS 1.2 ist im Payment-Bereich weiter auf dem Vormarsch, immer mehr Zahlungsanbieter setzen TLS 1.2 als Minimumversion fest. Das Payment Card Industry Security Standards Council (PCI SSC) hat die Frist von 2016 auf 2018 verschoben. PayPal wird am 30. Juni 2018 TLS 1.0 und 1.1 abschalten. Paysafecard wird selbiges bereits im Februar 2018 tun. Wer einen - [HTTP Range-Request Header in PHP parsen](https://phpgangsta.de/http-range-request-header-in-php-parsen) - Hört sich eigentlich nach einer einfachen Aufgabe an: HTTP-Clients können beim Download nur Teile einer Datei anfragen, beispielsweise die ersten 500 Bytes eines Videos. Der Server announced die Unterstützung dieses Partial-Downloads mit dem Response-Header: Ein HTTP-Client, der partielle Downloads unterstützt kann nun mit dem folgenden Header die ersten 500 Bytes anfordern: Ein Webserver, der direkt - [Blog mittels Let's Encrypt dauerhaft via SSL erreichbar](https://phpgangsta.de/blog-mittels-lets-encrypt-dauerhaft-via-ssl-erreichbar) - Nach einer viel zu langen Pause habe ich wieder etwas Luft für meinen Blog. Endlich... Ein Kommentar von YamYamL hat mich daran erinnert, die HTTPS-Umstellung meiner Domain endlich abzuschliessen, und noch einen Endspurt einzulegen, die Domain verschlüsselt erreichbar zu machen. Wäre hier nur ein einfaches Wordpress-Blog gehostet, wäre es vermutlich eine Sache von einer Stunde - [PHP 7: Migration eines Projekts](https://phpgangsta.de/php-7-migration-eines-projekts) - Noch knapp einen Monat warten, dann erscheint das Christkind PHP7! Was gibt es also schöneres als sich damit zu beschäftigen und erste Erfahrungen zu sammeln? Im Januar habe ich mir speziell den Arbeitsspeicherverbrauch von PHP 7 angeschaut, die ChangeLogs verinnerlicht, es kompiliert und ein paar Testzeilen ausgeführt. Das lief schon sehr gut, aber um größere - [20% Gutschein für PHPStorm verlängert!](https://phpgangsta.de/20-gutschein-fur-phpstorm-verlangert) - JetBrains hat die vor einer Woche ausgelaufene Coupon-Aktion verlängert, sodass ich nun bis zum 01.11.2011 Coupons für 20% Rabatt auf die Personal License von PHPStorm verteilen kann! Nach wie vor könnt ihr PHPStorm vorher 30Tage kostenlos testen, ich persönlich setzte es jetzt seit ca. 1,5 Jahren ein und bin immer noch der Meinung dass es - [ElePHPanten, ElePHPanten, ElePHPanten](https://phpgangsta.de/elephpanten-elephpanten-elephpanten) - Da ich vereinzelt E-Mails bekomme ob ich noch ElePHPanten habe, welche Farben und Größen noch da sind, und ob sich der Preis geändert hat, hier der aktuelle Status, auch im Hinblick auf Weihnachten und eventuelle Geschenke: Sowohl kleine blaue als auch große blaue sind noch im Angebot, die Preise sind gleich geblieben: der kleine ElePHPant - [Gewinner der Verlosung für die code.talks 2015](https://phpgangsta.de/gewinner-der-verlosung-fuer-die-code-talks-2015) - Die Zeit ist um, ein Gewinner für das code.talks 2015 Freiticket muss bestimmt werden. 14 gültige Teilnehmer sind im Pott. Die richtige Antwort lautete natürlich: "Developer Conference". Max hat leider an die Key ID 79D56D60 verschlüsselt, die Key ID an die verschlüsselt werden sollte lautete jedoch A08ED813. Leider hat Max nicht auf meine E-Mail reagiert, - [code.talks 2015: Gutscheine und Freiticket!](https://phpgangsta.de/code-talks-2015-gutscheine-und-freiticket) - Die code.talks, die meines Wissens nach größte Webentwickler-Konferenz in Deutschland, findet auch dieses Jahr wieder statt und wird 1500 Entwickler begrüßen in Hamburg. Da sie in den letzten Jahren immer ausgebucht war und auch dieses Jahr wieder damit zu rechnen ist (nach 2,5 Monaten ist bereits über ein Drittel der Tickets verkauft), bin ich für - [Aktueller Stand von PHP 7: Deutlich geringerer Arbeitsspeicherverbrauch](https://phpgangsta.de/aktueller-stand-von-php-7-deutlich-geringerer-arbeitsspeicherverbrauch) - Ich möchte mir den aktuellen Stand von PHP 7 anschauen (Stand 20. Januar 2015), und habe dazu im letzten Blogartikel gezeigt wie man PHP 7 direkt aus dem Git-Repository selbst kompiliert. Ich habe nun also PHP 7 zur Verfügung: Vergleichen werde ich mit der aktuell unter Ubuntu 14.04 LTS verfügbaren Version PHP 5.5.9: Da die - [PHP 7 Feature Freeze](https://phpgangsta.de/php-7-feature-freeze) - PHP 7 wird großartig, ich freue mich schon sehr darauf! Ich hoffe dass der straffe Zeitplan eingehalten werden kann, und wir im Oktober/November die Version 7.0 in den Händen halten. Vor 2 Wochen war der Feature-Freeze, und alle Abstimmungen die noch liefen sind beendet, es stehen also nun mehr oder minder alle Features fest die - [Ein altes Navigationsmenu sortieren](https://phpgangsta.de/ein-altes-navigationsmenu-sortieren) - Ich habe eine kleine Programmieraufgabe für euch. Ich habe ein altes Projekt, in dem ich folgende Navigationsstruktur in der Datenbank habe: Nun möchte ich diese Menüpunkte sortiert ausgeben, und zwar in der folgenden Reihenfolge: Die Sortierreihenfolge muss anhand der menuid, parentid, level und sortid berechnet werden. Eine parentid verweist auf den Elternknoten, sprich er ist - [Erstaunlich langsam beim Kopieren einer Datei auf ein NFS-Share](https://phpgangsta.de/erstaunlich-langsam-beim-kopieren-einer-datei-auf-ein-nfs-share) - Heute mal etwas skurriles. Eigentlich eine Alltagsaufgabe, die man mit einem 2-Zeiler lösen kann, aber ich bin doch erstaunt über das Problem und die Lösung. Es geht darum, eine Datei auf einem NFS-Share abzulegen, das vorher per PUT zum Webserver hochgeladen wurde. Wahrscheinlich hat man das selbe Problem auch wenn die Datei per POST-Formular hochgeladen - [Eine PLZ-Umkreissuche in PHP](https://phpgangsta.de/eine-plz-umkreissuche-in-php) - Ich bekam vor ein paar Tagen folgende kleine Programmieraufgabe: Gegeben ist eine große Datenbank mit > 300.000 Kunden, worin jeder Kunde eine Postleitzahl hinterlegt hat. Firma X möchte nun diese Kunden kontaktieren, aber nur diejenigen die in 35km Umkreis um eine seiner 42 Filialen wohnen. Tja, wie macht man das? Die einfachste Lösung die mir - [Den aktuellen Stand von PHP 7 (pre-alpha) selbst kompilieren und testen](https://phpgangsta.de/den-aktuellen-stand-von-php-7-pre-alpha-selbst-kompilieren-und-testen) - PHP 7 wird kommen, nach aktuellem Plan wird es Mitte Oktober 2015 soweit sein. Ich persönlich bin da noch etwas skeptisch ob das zeitlich klappen kann, aber ich hoffe dass es noch 2015 sein wird. PHP 7 wird sehr große interne Änderungen an der Zend Engine mit sich bringen, die Performance wird ungefähr verdoppelt und - [SSLv3: Uralt, bröckelig, abschalten!](https://phpgangsta.de/sslv3-uralt-broeckelig-abschalten) - [EDIT] Tja, da schreibt man gerade drüber und ein paar Minuten später wird die Lücke veröffentlicht: Poodle . Details im Google Blog. Das Problem liegt im SSLv3 Protokoll selbst, es wird keine Patches geben, es muss ausgeschaltet werden. Eigentlich wäre nur uralt-Software wie der IE6 unter WindowsXP betroffen, aber durch Downgrade-Attacken die bei TLS möglich - [Wer nutzt die ungewöhnlichen PHP-Tags?](https://phpgangsta.de/wer-nutzt-die-ungewoehnlichen-php-tags) - Vorgestern begann eine interessante Diskussion inklusive eines RFC in der PHP-Internals-Mailingliste, in der es um die Abschaffung zweier alter und selten genutzter Möglichkeiten geht, PHP-Code als solchen zu markieren. Normalerweise beginnt PHP-Code mit - [PHP 5.6.0 released! Neue Funktionen](https://phpgangsta.de/php-5-6-0-released-neue-funktionen) - Vor ziemlich genau einer Stunde ist PHP 5.6 final erschienen, und es ist Zeit sich die neuen Features und Vorteile anzuschauen. Aus meiner Sicht lohnt ein Upgrade, allein schon wegen der geschenkten 10% Performance gegenüber PHP 5.5. Die neue Version kann auf der Downloads-Seite von php.net heruntergeladen werden. Die neuen Features sind die folgenden: Konstante - [PHP 5.6.0 RC4 erschienen: Bitte testen!](https://phpgangsta.de/php-5-6-0-rc4-erschienen-bitte-testen) - Gerade eben ist der vierte (und letzte?) Release-Candidate von PHP 5.6.0 erschienen: PHP 5.6.0 RC4. Damit wir ein möglichst stabiles und fehlerfreies PHP haben auf allen Systemen ist jeder aufgerufen, die Testsuite durchlaufen zu lassen. Das geht sehr schnell und ohne viel Aufwand: Der configure Aufruf ist nur ein Beispiel, ihr müßt natürlich dort die - [3 Konferenzen, 15% Rabatt-Codes, und 6 Abos!](https://phpgangsta.de/3-konferenzen-15-rabatt-codes-und-6-abos) - Es liegen noch einige Konferenzen an dieses Jahr, drei davon schneide ich hier kurz an weil ich eine davon dieses Jahr erneut besuchen werde, und ich 15% Rabatt-Codes ergattern konnte! Aber der Reihe nach. Für die folgenden 3 Konferenzen kann ich Rabatt-Codes verteilen, jeweils 15%, natürlich auch noch anwendbar auf den Early-Bird-Preis bzw. den Kollegenrabatt, - [Gewinner der 6 Abos (PHP-Magazin und Entwickler-Magazin)](https://phpgangsta.de/gewinner-der-6-abos-php-magazin-und-entwickler-magazin) - Ich habe soeben die 6 Abos ausgelost, die aus der Verlosung von vorletzter Woche stammen. 3 Mal das PHP-Magazin und 3 Mal das Entwickler-Magazin, für jeweils 1 Jahr. Insgesamt haben 25 Kommentare an der Verlosung teilgenommen, 18 Mal für das PHP-Magazin und 8 Mal für das Entwickler-Magazin. An diesen Zahlen sieht man schon dass einer - [HTML-Validierung: Reine Zeitverschwendung, oder?](https://phpgangsta.de/html-validierung-reine-zeitverschwendung-oder) - Gastartikel von David Becker, er arbeitet als Autor bei netzsieger.de Diese Frage wird ein Teil der Webgemeinde vehement bejahen, die anderen werden ebenso überzeugt widersprechen. Ob eine klare Antwort in dieser Thematik überhaupt möglich ist, sei vorerst offengelassen. Jeder, der sich etwas genauer mit der Frage auseinandergesetzt hat, kommt zu einem anderen Schluss, hauptsächlich abhängig - [OpenSSL: Heartbleed](https://phpgangsta.de/openssl-heartbleed) - Ihr habt es wahrscheinlich schon alle mitbekommen, es klafft ein riesiges Loch in der häufig eingesetzten OpenSSL-Bibliothek. Webserver, Mailserver, Jabberserver, alles was irgendwie mit Verschlüsselung zu tun hat ist gefährdet. Ist bereits OpenSSL 1.0.1 bis 1.0.1f im Einsatz (das ist die aktuelle Version, seit 2 Jahren verfügbar) steht ein dringendes Update an auf 1.0.1g. Nicht - [Verteilung der PHP-Versionen, Verbreitung von 5.5](https://phpgangsta.de/verteilung-der-php-versionen-verbreitung-von-5-5) - Da PHP 5.6 vor der Tür steht (die Beta müßte jeden Tag erscheinen, und die finale Version dann in einigen wenigen Wochen) fragte ich mich wie es mit der PHP 5.5 Verbreitung aussieht, immerhin ist 5.5 bereits am 20. Juni 2013 veröffentlich worden, also vor fast 10 Monaten. Bei mail.de sind wir erst Anfang Februar - [GeoIP Fullsize Website](https://phpgangsta.de/geoip-fullsize-website) - Wer schnell und unkompliziert sehen möchte wo eine IP-Adresse ungefähr beheimatet ist, der sucht sicherlich bei Google nach so etwas wie "ip geo location" oder ähnliches. Es finden sich dann einige Suchergebnisse mit Webseiten und Formularen, in die man die IP-Adresse einträgt und man dann Informationen zur IP bekommt, wie beispielsweise den Reverse-DNS-Eintrag oder vielleicht - [Bug bei Authentifizierung in curl](https://phpgangsta.de/bug-bei-authentifizierung-in-curl) - curl hat in der aktuell verwendeten Version im stabilen Ubuntu 13.10 einen Bug, der sich auch rein bis in die PHP-Scripte auswirkt. Wenn man bei der Nutzung von curl die Authentifizierung nutzt und im Passwort ein Semikolon enthalten ist (was gute Passwörter ja so an sich haben), dann wird dieses Passwort abgeschnitten. Folgender Beispielcode: Es wird - [SPDY Support in den Alexa Top 10k](https://phpgangsta.de/spdy-support-in-den-alexa-top-10k) - Ein Großteil der Browser unterstützt es, und fast alle Webserver ebenso: SPDY, der heiße Kandidat für das neue HTTP 2.0 Protokoll. Nach den ersten Tests der SPDY-Implementation in nginx im Juni 2012 habe ich mich gefragt wie verbreitet die Nutzung mittlerweile ist. Dazu habe ich die Alexa Top 1 Million Liste als CSV heruntergeladen und - [mysql_* Funktionen noch im Code?](https://phpgangsta.de/mysql_-funktionen-noch-im-code) - Heute eine kleine Umfrage. Es ist anonym und keiner muss sich rechtfertigen (kann aber natürlich gern in den Kommentaren, die Gründe sind sicher interessant!). Es geht um die ext/mysql Extension, sprich die mysql_* Funktionen. In PHP 5.5 wurden sie DEPRECATED, d.h. es gibt eine Deprecation-Warnung im PHP-Error-Log dass die Funktionen nicht mehr benutzt werden sollen - [Den Prozessnamen eines CLI-Scripts ändern](https://phpgangsta.de/den-prozessnamen-eines-cli-scripts-andern) - Wenn man viele Adminscripte auf der Console und Cronjobs in PHP laufen lässt, hat man häufig ein Wirrwarr an Prozessen in seiner Prozessliste (hier die Ausgabe von 'ps -ef'): Unschön! Außerdem könnten wir, wenn wir das Script proctitle.php mehrfach starten, die einzelnen Prozesse nicht mehr voneinander unterscheiden. Genauso schlimm ist es wenn man mit pcntl_fork - [Meist gelesene Artikel 2013](https://phpgangsta.de/meist-gelesene-artikel-2013) - Im neuen Jahr schaue ich mir gern die meist gelesenen Artikel des letzten Jahres an. Auch wenn nur relativ wenige neue Artikel dazugekommen sind, ist es interessant zu sehen wonach Besucher suchen und was nach wie vor aktuelle Themen sind. Nach 2011 und 2012 folgt also nun 2013: Wetter ist nach wie vor ein interessantes - [Behind the Scenes](https://phpgangsta.de/behind-the-scenes) - Ich habe heute den Titel von Nils geklaut, er hat einen kleinen Einblick in seinen Blog veröffentlicht, und da dachte ich: Zieh doch schnell nach, damit du es nicht vergisst. Auch nach 4,5 Jahren nutze ich nach wie vor Wordpress auf meinem Server. Ich hatte mir damals bereits Serendipity angeschaut, aber Wordpress bietet mir einfach - [APCu: Der neue User-Cache](https://phpgangsta.de/apcu-der-neue-user-cache) - Speziell für PHP 5.5 gibt es die User-Cache-Extension APCu: Seit PHP 5.5 ist der Bytecode-Cache OpCache enthalten, die bisher genutzte Extension APC wird dann nicht mehr benötigt. Doch wer APC nicht nur wegen seiner Bytecode-Cache-Fähigkeit installiert sondern auch die User-Cache-Funktionen genutzt hat, kann jetzt die abgespeckte Erweiterung APCu nutzen, in der alle Bytecode-Funktionen entfernt wurden. - [Gewinner des Buches "Vorgehensmuster für Software-Architektur"](https://phpgangsta.de/gewinner-des-buches-vorgehensmuster-fuer-software-architektur) - Der Gewinner der Verlosung von letzter Woche steht fest: Reinhard! Die MySQL RAND()-Funktion hat den glücklichen Gewinner ermittelt, Screenshot siehe unten. Reinhard, ich habe dir eine E-Mail geschickt mit der Bitte um deine Adresse. Dann sende ich dir das Buch morgen zu. Danke an alle Teilnehmer! - [Verlosung des Buches: Vorgehensmuster für Software-Architektur](https://phpgangsta.de/verlosung-des-buches-vorgehensmuster-fuer-software-architektur) - Pünktlich zur Veröffentlichung im November erhielt ich vom Hanser-Fachbuch-Verlag ein Exemplar des Buches: Vorgehensmuster für Software-Architektur - Kombinierbare Praktiken in Zeiten von Agile und Lean, von Stefan Toth. Es ist aus meiner Sicht eine der interessantesten Neuerscheinungen diesen Jahres und gibt (hoffentlich) gute Einblicke in die Praxis der Softwarearchitektur für Softwareentwickler und -architekten. Da ich - [HSTS - HTTP Strict Transport Security: Hast's schon?](https://phpgangsta.de/hsts-http-strict-transport-security-hasts-schon) - HSTS steht für HTTP Strict Transport Security und ist ein HTTP-Header, den Webseiten nutzen sollten die per HTTPS erreichbar sind. Wenn ein Benutzer in seinen Browser "webseite.de" eintippt wird der Browser zuerst versuchen die Webseite unverschlüsselt per HTTP zu erreichen. Genau das ist aber ein Schwachpunkt wenn man sich in einem unsicheren Netzwerk aufhält oder - [Sesam öffne dich: Sicher einloggen im Internetcafe](https://phpgangsta.de/sesam-oeffne-dich-sicher-einloggen-im-internetcafe) - Stell dir folgende Situation vor: Du bist im Ausland, beispielsweise Peru, und möchtest dich auf deiner Webseite als Administrator einloggen. Da der mobile Datentransfer im Ausland sehr teuer ist kommt es leider nicht in Frage das Handy zu nutzen, denn bereits wenige Megabyte kosten viel Geld. Also ab ins Internetcafe. Doch dort muss man davon - [Präsentationen der ZendCon 2013](https://phpgangsta.de/praesentationen-der-zendcon-2013) - Wie jedes Jahr gab es auch dieses Jahr wieder die große PHP Conference in Santa Clara, organisiert von Zend. Ich habe euch hier eine Sammlung der Präsentationen zusammengestellt, falls ihr die fehlenden noch irgendwo findet sagt Bescheid. Zend hat eine Wiedergabeliste bei Youtube für die ZendCon 2013 in der sicher noch einige weitere Videos dazukommen - [undefined function json_encode(): Distributionen tauschen JSON Extension](https://phpgangsta.de/undefined-function-json_encode-distributionen-tauschen-json-extension) - Letzte Woche habe ich zum ersten Mal folgende Fehlermeldungen gesehen: Diese Fehler kommen nach dem Upgrade auf PHP 5.5 unter Ubuntu 13.10. Doch warum kommt der Fehler, JSON ist doch schon seit langen Jahren (PHP 5.2) fest in PHP eingebaut? Auf der Suche nach der Lösung stösst man dann auf die folgenden Sätze: - The - [Gewinner der beiden Verlosungen](https://phpgangsta.de/gewinner-der-beiden-verlosungen) - Zu später Stunde gibt es hier noch die Gewinner der beiden letzten Verlosungen. Jeweils ein Ticket für die Developer Conference 2013 in Hamburg geht an: - mosch - mkuh Das 3-Tages-Ticket für den PHP-Summit 2013 in Berlin geht an: - Benjamin Jeweils ein Jahres-Abo des PHP-Magazins geht an: - Matthias Jacobi - Matze - Dima - [Töröö! Die ElePHPanten sind wieder da!](https://phpgangsta.de/toroo-die-elephpanten-sind-wieder-da) - Endlich gibt es wieder ElePHPanten! Letztes Jahr zu Weihnachten hatte ich bereits einige unter das PHP-Volk gebracht, aber ich hatte nicht genügend da um die Nachfrage zu stillen, sodass ich einige von euch vertrösten musste. Auch vorletzte Woche, als ich ein Bild mit den Tieren gepostet habe gab es Nachfragen, und heute ist es nun - [2 Tickets für die Developer Conference in Hamburg zu verschenken!](https://phpgangsta.de/2-tickets-fuer-die-developer-conference-in-hamburg-zu-verschenken) - Und direkt noch eine Verlosung für euch, diesmal für die Developer Conference in Hamburg am 7. und 8. November, mit aktuell 114 Speakern und 1500 Teilnehmern! 200 Plätze sind noch frei! Letztes Jahr (Tag 1, Tag 2) war ich auf der DCHH mit 400 Teilnehmern, dieses Jahr mit 1500 dürfte es sehr interessant werden, viele - [PHP-Summit Rabatt sowie 3-Tages-Ticket und PHP-Magazine zu verlosen!](https://phpgangsta.de/php-summit-rabatt-sowie-3-tages-ticket-und-php-magazine-zu-verlosen) - In Berlin findet wieder ein PHP-Summit statt, für den ich euch einen 15-prozentigen Rabatt übergeben kann. Ebenso kann ich ein 3-Tages-Ticket für den Summit und drei gratis Jahres-Abos für das PHP-Magazin verlosen! Doch der Reihe nach. Wie letztes Jahr findet auch diesmal in der Weihnachtszeit ein PHP-Summit in Berlin statt. Letztes Jahr war ich vor - [Google App Engine (GAE) for PHP](https://phpgangsta.de/google-app-engine-gae-for-php) - Nach der Ankündigung auf der Google IO 2013 im Mai diesen Jahres habe ich heute, nach über 4 Monaten Wartezeit, endlich meine Test-PHP-Applikation für die "Google App Engine for PHP" gewhitelisted bekommen, sodass ich nun PHP-Applikationen in der Google App Engine laufen lassen kann. Schnell die erforderliche Software installiert (Python und das Google App Engine - [SEPA-Vorbereitungen](https://phpgangsta.de/sepa-vorbereitungen) - Ab dem 1. Februar 2014 werden Banken nur noch SEPA-Lastschriften bearbeiten, die "alten" Lastschriften mit Kontonummer und Bankleitzahl müssen also ersetzt werden. Es wird Pflicht sein ein sogenanntes Mandat des Kunden einzusammeln, also eine schriftliche Berechtigung, die SEPA-Lastschrift durchführen zu dürfen. Wie holt man diese im Internet ein, es muss ja eine "sichere elektronische oder - [iframe Bug in Firefox 23](https://phpgangsta.de/iframe-bug-in-firefox-23) - Ich weiß nicht ob ich mich freuen soll oder nicht: Ich habe heute, mehr oder minder durch Zufall bei der Endprüfung eines neues Features bei mail.de einen Bug im neuen Firefox 23 entdeckt. Version 22 funktionierte wunderbar, auch Chrome macht keine Probleme, nur der neue 23er Firefox stellt das iframe nicht korrekt dar. Hier die - [15% Rabatt für die Javascript Days in Berlin (September 2013)](https://phpgangsta.de/15-rabatt-fur-die-javascript-days-in-berlin-september-2013) - Da hier ja auch sehr viele Javascriptler unterwegs sind möchte ich euch einen 15-prozentigen Rabatt nicht vorenthalten den ihr für die Javascript-Days 2013 bekommen könnt. Einfach einen kurzen Kommantar hier im Blog und ich sende euch den Rabattcode. Dieser gilt zusätzlich zum Early-Bird-Rabatt (bis 30. August) und Kollegenrabatt! Vom 25. bis 27. September starten in - [Algorithmuswettbewerb: Beim Lotto den niedrigsten Gewinn ausschütten](https://phpgangsta.de/algorithmuswettbewerb-beim-lotto-den-niedrigsten-gewinn-ausschutten) - Heute mal wieder etwas zum Grübeln und in die Tasten hauen, ich habe eine kleine Programmieraufgabe für euch, die ihr mit der Programmiersprache eurer Wahl lösen sollt. Es geht um folgendes: Nehmen wir an ihr seid Lottoveranstalter und könnt die Ziehung beeinflussen. Die Teilnehmer geben vorher Lottoscheine ab mit ihren Tipps, und ihr möchtet nun - [Die 2 Gewinner des SymfonySummit Tagestickets lauten...](https://phpgangsta.de/die-2-gewinner-des-symfonysummit-tagestickets-lauten) - ... Stephan und Christoph H. Ihr habt 2 Tagestickets für den SymfonySummit in Köln gewonnen, herzlichen Glückwunsch! Ich habe eure E-Mail-Adressen an Thomas Schodrock von SensioLabs Deutschland weitergegeben, er wird euch in Kürze kontaktieren und euch verraten wie ihr an die Tickets kommt. Die Gewinner sind die Kommentare mit den Nummern 19 und 29, ermittelt - [Zwei Tagestickets für den SymfonySummit in Köln zu verlosen](https://phpgangsta.de/zwei-tagestickets-fur-den-symfonysummit-in-koln-zu-verlosen) - Gerade erhielt ich eine erfreuliche E-Mail: Tobias Schlitt von Qafoo stellt euch 2 Tagestickets für den in 3 Wochen stattfindenden SymfonySummit in Köln zur Verfügung! Der Summit, der in Köln stattfindet, geht über 2 Tage, nämlich den 4. und 5. Juli 2013. Es gibt noch einen weiteren SymfonySummit in Hamburg im September, Termin vormerken bzw. - [Zig Wege, die eigene öffentliche IP Adresse herauszufinden](https://phpgangsta.de/zig-wege-die-eigene-offentliche-ip-adresse-herauszufinden) - Desöfteren benötigt man mal die eigene öffentliche IP-Adresse, sei es um eine kurzfristige Firewall-Freischaltung zu bekommen, auf irgendeine Whitelist genommen zu werden oder um seine eigenen Logzeilen im access.log wiederzufinden. Wenn man nicht direkt mit dem Internet verbunden ist sondern mittels Router oder sonstwie geartetem Netzwerk helfen einem spezielle Webseiten und Dienste. Auf der Konsole - [Vorsicht bei der basename() Funktion und Umlauten](https://phpgangsta.de/vorsicht-bei-der-basename-funktion-und-umlauten) - Wieder ein sehr komischer Bug, diesmal in Zusammenhang mit der Funktion basename(): Die basename() Funktion wird dazu verwendet den letzten Namensteil eines Pfades zurückzugeben. Beispiele: Funktioniert wunderbar. Auch mit Umlauten innerhalb eines Dateinamens kein Problem: Steht aber ein Umlaut am Anfang des Dateinamens, dann gibt basename() einen falschen Dateinamen zurück: Autsch! Warum funktioniert die Funktion - [Extended Method-Chains mit JavaScript](https://phpgangsta.de/extended-method-chains-mit-javascript) - Gastartikel von Thomas Worm Der Autor ist 25 Jahre alt, beschäftigt sich bereits seit der Schulzeit mit der Entwicklung von Webanwendungen auf Basis von PHP, (X)HTML, CSS, JavaScript und dem Framework des Typo3 CMS. Nach Abschluss des Bachelor-Studiums der Informatik arbeitet der Autor bei der DATEV eG im Bereich Cloud Services/ASP und studiert berufsbegleitend den - [Tückisches array_merge()](https://phpgangsta.de/tuckisches-array_merge) - Welches Ergebnis würdet ihr erwarten wenn ihr 2 Arrays merged? OK, ich verrate es euch, das Ergebnis sieht so aus: Beachtenswert ist dabei der Key, der vorher 20 war, ist nun 0. Das ist laut PHP Manual der Funktion array_merge() auch so gewollt, denn numerische Keys werden im Ergebnisarray neu durchnummeriert. Genau das jedoch verursachte - [Der Gewinner des PHP-Unconf EU + PHP- Days 2013 Tickets](https://phpgangsta.de/der-gewinner-des-php-unconf-eu-php-days-2013-tickets) - Alle 8 Kommentatoren haben den SHA256 Hash korrekt berechnet. Mein kleines Check-Script (siehe unten) spuckt folgendes aus: Der Gewinner wurde wie folgt bestimmt: Die Hashes wurden sortiert und der "niedrigste" gewinnt das Ticket. Dieses Verfahren habe ich als HTML-Kommentar im Verlosungsartikel versteckt, hat sicher niemand gesehen ;-) Demnach - [Ticket für die PHP-Unconference EU 2013 und die PHP-Days zu verlosen](https://phpgangsta.de/ticket-fur-die-php-unconference-eu-2013-und-die-php-days-zu-verlosen) - Die europäische Version der sehr beliebten PHP-Unconference findet zum zweiten Mal statt, und für diejenigen von euch die kein Ticket mehr ergattern konnten habe ich gute Nachrichten! Nach 2011 in Manchester findet die PHP Unconf EU 2013 in Berlin statt. Da es eine internationale Konferenz sein soll und ist, waren nur 40% der Tickets für - [PHPStorm 40% günstiger, und Bäume im Regenwald pflanzen](https://phpgangsta.de/phpstorm-40-gunstiger-und-baume-im-regenwald-pflanzen) - Eine neue coole Aktion von JetBrains, den Machern von PHPStorm, WebStorm, IntelliJ IDEA, PyCharm usw: Diverse Produkte von JetBrains gibt es bis zu 50% günstiger, und für jede verkaufte Lizenz während der 7 Tage (15. - 22. April 2013) werden Bäume gepflanzt im brasilianischen Regenwald. Dies gilt leider nicht für Upgrades/Verlängerungen, sondern nur für neue - [Gearman Worker verbinden sich nach Upgrade nicht mehr](https://phpgangsta.de/gearman-worker-verbinden-sich-nach-upgrade-nicht-mehr) - Heute ein kurzer Tipp bezüglich PECL/gearman: Wenn ihr bei der Nutzung einer aktuellen Version den folgenden Fehler bekommt dann liegt es daran dass ihr keinen Port beim Aufruf der Methode GearmanClient::addServer() angegeben habt. Bisher war der zweite Parameter optional und als Default wurde 4730 genommen, aber seit einigen Versionen (welcher genau kann ich nicht sagen) scheint - [Mit TideSDK und Webtechniken können wir Desktop-Applikationen bauen!](https://phpgangsta.de/mit-tidesdk-und-webtechniken-konnen-wir-desktop-applikationen-bauen) - Was Phonegap für Handys ist, ist TideSDK für den Desktop: Mit Hilfe von Webtechniken plattformübergreifende Applikationen bauen. Der Softwareanbieter Appcelerator hat TideSDK open-sourced und es an die Community übergeben, um sich auf die mobile Titanium-Plattform zu konzentrieren. Mit TideSDK kann man Apps bauen, die zur Darstellung der Oberfläche HTML, CSS und Javascript nutzen, und im - [Meine Lieblings-Session auf der PHP-Unconference 2009](https://phpgangsta.de/meine-lieblings-session-auf-der-php-unconference-2009) - Die Unconference war viel zu kurz, die Sessions waren zu 95% extrem interessant und spannend. Mindestens genauso spannend waren die Gespräche zwischendurch. Es gibt im Wiki der Unconf zu jeder Session eine Zusammenfassung, trotzdem möchte ich hier versuchen, die wichtigsten Inhalte meines favorisierten Vortrags nochmal nachzuarbeiten. Die Session trug erst den Titel "PHP Performance Optimierung", - [PHP Unconference Hamburg 2011: Anreise und der erste Tag](https://phpgangsta.de/php-unconference-hamburg-2011-anreise-und-der-erste-tag) - 5:20 Uhr: Aufstehen ist angesagt, ich glaube so früh bin ich dieses Jahr noch nicht aufgestanden, aber die Freude auf den sicherlich großartigen Tag lässt die Müdigkeit schnell verschwinden. Eine halbe Stunde später sitze ich im Auto und hole noch einen Freund und einen Arbeitskollegen ab, und dann beginnt die Fahrt Richtung Hamburg. Eingeplant sind - [PHP Unconference Hamburg 2011: Die kurze Nacht und der zweite Tag](https://phpgangsta.de/php-unconference-hamburg-2011-die-kurze-nacht-und-der-zweite-tag) - Ohhhje, das Aufstehen am zweiten Tag war eine Qual, wir waren Abends bzw. in der Nacht noch lange in Hamburg unterwegs, Kneipen und andere Sehenswürdigkeiten, ihr versteht schon ;-) 4:30 Uhr waren wir im Bett, 9:20 Uhr klingelte der Wecker, um gegen 10:30 Uhr dann am Universitätsgelände zu sein. Mit etwas Verspätung beginnt die Opening - [SQL richtig schreiben: Ausnutzung von Indizes](https://phpgangsta.de/sql-richtig-schreiben-ausnutzung-von-indizes) - Um SQL kommt man in der heutigen Webentwicklung nicht herum, und jeder von uns kann SQL-Queries erstellen. Doch nicht jeder SQL-Query, der das korrekte Ergebnis zurückliefert, ist optimal aus Sicht der Performance. Hier ein kleines Beispiel: Wir haben folgende Tabelle: Nehmen wir an in der Tabelle sind 10.000.000 Zeilen. Es sind 10.000 verschiedene UserIds enthalten - [OpCache in PHP 5.5](https://phpgangsta.de/opcache-in-php-5-5) - Ende Januar wurde es von Zeev Suraski, dem Chef von Zend, angekündigt und am 13. Februar in die Tat umgesetzt: Der Quellcode des Opcode Caches von Zend mit dem Namen Optimizer Plus wurde auf GitHub veröffentlicht und unter die PHP-Lizenz gestellt, mit dem Ziel es in den PHP-Kern einzubauen. Der Zeitplan war aber sehr problematisch, - [Gewinner des Buches: Erfolgreiche Softwareprojekte im Web](https://phpgangsta.de/gewinner-des-buches-erfolgreiche-softwareprojekte-im-web) - Der Gewinner des Buches Erfolgreiche Softwareprojekte im Web wurde mit unten stehendem einfachen SQL-Query bestimmt und lautet: Jörg! Herzlichen Glückwunsch! Ich habe dich bereits angeschrieben wegen deiner Adresse, ich sende es dir so schnell wie möglich damit du es schnell lesen kannst. Alle anderen werden das Buch jetzt kaufen! Ihr habt offensichtlich alle Interesse daran, - [Buchverlosung: Erfolgreiche Softwareprojekte im Web (100 Gedanken)](https://phpgangsta.de/buchverlosung-erfolgreiche-softwareprojekte-im-web-100-gedanken) - Heute eine schnelle Verlosung: Ich habe vom Kollegen Nils (phphatesme.com) ein frisches Exemplar seines neuen Buches zur Verlosung bekommen: Erfolgreiche Softwareprojekte im Web - 100 Gedanken zur Webentwicklung Da ich es selbst noch nicht durch habe (bin bei Gedanke Nummer 12) kann ich euch noch keine Rezension präsentieren, aber es ist drin was versprochen wird: - [Richtige Threads in PHP einfach erstellen mit pthreads](https://phpgangsta.de/richtige-threads-in-php-einfach-erstellen-mit-pthreads) - Wir alle haben gelernt dass PHP kein richtiges Multi-Threading kann, und auch Kindprozesse zu forken ist nicht ganz trivial. Extensions wie PCNTL funktionieren nicht unter Windows und sind schwer zu bedienen. Man kann sich eventuell mit exec() behelfen und damit weitere Prozesse starten, verliert dann jedoch die Möglichkeit, die Prozesse zu synchronisieren oder einfach Nachrichten - [Smarter Web: DDoS-/Web-Protection und Beschleunigung deiner Seite mit myracloud.com](https://phpgangsta.de/smarter-web-ddos-web-protection-und-beschleunigung-deiner-seite-mit-myracloud-com) - Gastartikel von Sebastian Bruckner Hallo *, kurz zu meiner Person, meine Name ist Sebastian Bruckner, ich wohne in München und beschäftige mich seit 7 Jahren mit dem Web- und PHP-Umfeld. Dies ist mein erster Blog-Artikel, bitte seht mir etwaige Anfängerfehler nach :-). Wir (Soprado) haben das Produkt myracloud.com, entwickelt und sind am 01.11.2012 damit in - [SPDY Verbreitung: Facebook nun auch](https://phpgangsta.de/spdy-verbreitung-facebook-nun-auch) - Facebook hat es noch nicht offiziell announced, aber seit kurzem ist Facebook auch via SPDY erreichbar. Die Browserverbreitung von SPDY ist mittlerweile recht gut, auch wenn Safari und der Internet Explorer noch hinterherhängen. Gerade die wichtigen mobilen Browser, bei denen es besonders große Vorteile hat, ist die Verbreitung recht gut. Wie SPDY auf Serverseite aktiviert - [Die CouchDB Datenbanken komprimieren](https://phpgangsta.de/die-couchdb-datenbanken-komprimieren) - Heute gibts ein kleines Hilfsscript für all diejenigen, die eine CouchDB einsetzen und noch nicht den neuen Auto-Compaction-Dienst nutzen (können) den Version 1.2.0 mit sich bringt. Compaction benötigt man bei CouchDB um die Datendateien klein zu halten, denn CouchDB ist append-only, d.h. alle Aktionen werden hinten angehängt, insgesondere auch Updates und Deletes. Dadurch wachsen die - [Gewinner des PHP-Summit-Tickets und der PHP-Magazin-Abos](https://phpgangsta.de/gewinner-des-php-summit-tickets-und-der-php-magazin-abos) - Die Gewinner der Verlosung der PHP-Magazin-Abos und des 3-Tages-Tickets für den PHP-Summit im März stehen fest: PHP-Summit Ticket: Christian (der Christian der am 2013-02-02 01:02:06 kommentiert hat, Comment-ID 189837) PHP-Magazin Abos: Christoph Tim (Kommentar um 2013-02-01 18:29:24, Comment-ID 189650) Matthias Herzlichen Glückwunsch! Ihr habt alle eine E-Mail von mir erhalten. Vielen Dank auch nochmals an - [PHP-Summit März 2013 + Ticketverlosung + Jahresabos PHP-Magazin](https://phpgangsta.de/php-summit-marz-2013-ticketverlosung-jahresabos-php-magazin) - Nachdem Ende 2012 der letzte PHP-Summit in Berlin stattfand, werden nun die Süddeutschen bedient: Der nächste PHP-Summit findet in München statt, vom 18.-20. März 2013. Der PHP-Summit ist, im Gegensatz zu Konferenzen, eine Power-Workshop-Veranstaltung. An 3 aufeinander folgenden Tagen werden in 3,5 Stunden-Blöcken insgesamt 18 Workshops gehalten, Trainer sind die 3 Experten von thePHP.cc: Sebastian - [Meist gelesene Artikel und Besucherzahlen von 2012 hier im Blog](https://phpgangsta.de/meist-gelesene-artikel-und-besucherzahlen-von-2012-hier-im-blog) - Auch dieses Jahr möchte ich wieder das vorangegangene Jahr Revue passieren lassen und die Top 10 der gelesenen Artikel auflisten. Die Liste von 2011 hat interessantes zu Tage gefördert, und auch dieses Mal sind wieder einige Überraschungen dabei: Wenn man wollte könnte man nun daraus Trends ablesen: Alle 3 Artikel, die ich über Wetter-APIs geschrieben - [Bei jeder eingehenden E-Mail ein PHP Script ausführen](https://phpgangsta.de/bei-jeder-eingehenden-e-mail-ein-php-script-ausfuhren) - Nach einer kleinen Weihnachtspause gibts heute einen kleinen Trick, um bei jeder eingehenden E-Mail ein PHP-Script aufzurufen. In diesem Script kann man beispielsweise die E-Mail verändern, parsen und Informationen auslesen, den Inhalt in eine Datenbank packen oder andere nette Sachen, die man mit E-Mails machen kann. Die Methode die ich normalerweise dafür nutze ist ein - [Doomsday bei JetBrains: PHPStorm 75% günstiger für 20 Stunden!](https://phpgangsta.de/doomsday-bei-jetbrains-phpstorm-75-gunstiger-fur-20-stunden) - Da ja morgen die Welt untergeht bietet JetBrains für seine Nutzer einen einmaligen Nachlass von 75% auf die Personal Licenses, auch die Upgrades! Neben PHPStorm sind auch viele andere Produkte von JetBrains 75% günstiger. Die Webseite ist gerade etwas überlastet. Die Aktion geht nur bis morgen, Freitag 12 Uhr. http://www.jetbrains.com Coole Sache! - [3 Tage PHP-Summit 2012 in Berlin](https://phpgangsta.de/3-tage-php-summit-2012-in-berlin) - Zum ersten Mal war ich beim PHP-Summit, zur Adventszeit in Berlin im Park-Inn am Alexanderplatz. Doch vor der Reise der erste Schock: In der Macbook-Tasche aus der Firma fehlt die Hälfte des Netzkabels, und auf die Schnelle habe ich keines auftreiben können. Also ohne Ladekabel los, am Sonntag Nachmittag. Wie man die Bahn kennt ging - [Performance des Silent-Operators und session_status()](https://phpgangsta.de/performance-des-silent-operators-und-session_status) - So, heute gibts erneut eine digitale Version von zwei PHP-Magazin-Artikeln, die ich Anfang des Jahres verfasst habe. Beide sind in der goldenen Ausgabe zur neuen PHP Version 5.4 erschienen. Der erste Artikel (PDF) untersucht die Änderungen am Silent-Operator @ (auch Fehler-Kontroll-Operator oder "Shut up" Operator genannt), den man vor Ausdrücke schreiben kann um Warnungen zu - [SSL-Sicherheit testen](https://phpgangsta.de/ssl-sicherheit-testen) - Aus Interesse habe ich mal einige bekanntere Webseiten durch zwei SSL-Checks laufen lassen, um zu gucken wer patzt bzw. wer vieles richtig macht. Dazu habe ich die Online-Services von ssllabs.com und wormly.com genutzt. Einfach Domain eingeben, und schon hat man Ergebnisse. Dabei ist der Test von wormly.com ausführlicher und strenger, deshalb ist die Tabelle auch - [ Linkpool Nummer 33](https://phpgangsta.de/linkpool-nummer-33) - Wer noch ext/mysql verwendet sollte sich dringend um Migration kümmern, bald wird es DEPRECATED und dann entfernt, die Diskussion in der PHP-Internals Liste läuft auf Hochtouren. http://blog.ulf-wendel.de/2012/php-mysql-why-to-upgrade-extmysql/ Sehr ausführlicher (englischer) Text über die neuen Features in PHP 5.5: http://sheriframadan.com/2012/10/test-drive-php-5-5-a-sneak-peek/ Weltweite Umfrage unter Entwicklern: http://coders-survey.com Sicheres hashen, die in PHP 5.5 kommenden Funktionen rund um password_hash(): - [Funktion zur Erkennung von gleichen Zeichen](https://phpgangsta.de/funktion-zur-erkennung-von-gleichen-zeichen) - Um zu erkennen ob jemand Mist ein ein Formular eingetragen hat brauche (natürlich neben anderen, eventuell wirksameren Maßnahmen) ich ein kleines Script, das erkennt wenn in einem String (Straße, Vorname, Nachname etc.) mindestens 4 mal hintereinander der selbe Buchstabe vorkommt. Beispiele: Florian: gültig qwerty: gültig asasasasas: gültig aaaa: ungültig aaasssdddd: ungültig Einige Spassvögel tippen einfach - [Soll ich einen Domainumzug machen?](https://phpgangsta.de/soll-ich-einen-domainumzug-machen) - Da meine Domain nicht die aller beste ist, überlege ich schon länger auf eine andere Domain zu wechseln, doch ich bin so unkreativ! Als Alternative habe ich die Domain php-blog.de anzubieten, und habe einige Fragen an euch: Domainumzug ja oder nein? Habt ihr noch eine bessere Idee für eine Domain? Was muss ich alles bei - [Große PaaS Übersicht im PHP Magazin](https://phpgangsta.de/grose-paas-ubersicht-im-php-magazin) - Anfang des Jahres konnte man im PHP-Magazin Ausgabe 3/2012 eine große Übersicht der PHP-Platform-as-a-Service-Anbieter (PHP-PaaS) finden, die ich mühevoll erstellt habe. Ich hoffe zwar dass ihr alle ein PHP-Magazin-Abo habt, aber zur Vollständigkeit gibt es hier den Artikel als PDF. Ein paar Details (Software-Versionen) sind jetzt, ein halbes Jahr später, vielleicht nicht mehr up2date, aber - [Selbständigkeit - Fluch oder Segen?](https://phpgangsta.de/selbstandigkeit-fluch-oder-segen) - Ich würde gern eure Meinung zum Thema Selbständigkeit hören! Warum seid ihr nicht selbständig, bzw. warum seid ihr es? Ich habe hier einige Fragen an euch, vielleicht könnt ihr uns allen helfen einen Überblick zu bekommen. Seid ihr selbständig? Was sind eurer Meinung nach die größten Vor- und Nachteile? Würdet ihr es wieder tun? Wie - [Der PHP Summit 2012 (incl. Rabattcode)](https://phpgangsta.de/der-php-summit-2012-incl-rabattcode) - Die PHP-Konferenzen 2012 gehen dem Ende entgegen, aber ein Highlight kommt noch: Der PHP-Summit in Berlin! Präsentiert von der Entwickler-Akademie und dem PHP-Magazin werden 4 Trainer insgesamt 18 Workshops an 3 Tagen durchführen. Die Trainer sind die 3 Experten Sebastian Bergmann, Arne Blankerts und Stefan Priebsch von thePHP.cc zusammen mit Projektcoach Judith Andresen, zusätzlich wird - [Gewinner des Buches: Softwarequalität in PHP Projekten](https://phpgangsta.de/gewinner-des-buches-softwarequalitat-in-php-projekten) - Zur Verlosung des Buches Softwarequalität in PHP Projekten habe ich diesmal den List Randomizer von random.org genutzt um den Gewinner zu bestimmen. Teilgenommen haben alle Kommentar-IDs, gefiltert nach Nicht-Spam, doppelten Teilnahmen und dem Teilnahmezeitraum. Gewonnen hat die Kommentar-ID 115417, und das ist Michael H. ! Herzlichen Glückwunsch! Ich habe dir gerade eine E-Mail geschickt bzgl. - [DNS Dienste für lokale Umgebungen](https://phpgangsta.de/dns-dienste-fur-lokale-umgebungen) - Lokal habe ich einen Webserver laufen für kleinere Projekte und Tests. Wenn ich nun ein neues Projekt starte muss ich 2 Dinge machen: einen neuen VHost im Webserver anlegen, und in der hosts-Datei einen neuen Eintrag hinzufügen. Ich möchte hier speziell über das Problem der hosts-Datei schreiben. Wenn ich nun beispielsweise die Domain project1.localhost nutzen - [Interview mit Sebastian Bergmann und Stefan Priebsch (inkl. Buchverlosung)](https://phpgangsta.de/interview-mit-sebastian-bergmann-und-stefan-priebsch-inkl-buchverlosung) - Heute mal etwas neues: Ich durfte ein Interview mit den beiden PHP-Experten Stefan Priebsch und Sebastian Bergmann führen, ich hoffe ich habe einige interessante Fragen an die beiden stellen können. Viel Spass beim Lesen! Michael: Hallo Sebastian, hallo Stefan, erst einmal vielen Dank, dass ich mit Euch dieses Interview führen darf. Außerdem vielen Dank für - [Zahlen sortieren mit Sleep Sort ](https://phpgangsta.de/zahlen-sortieren-mit-sleep-sort) - Sortieralgorithmen werden nicht dauernd neu erfunden, man kennt aus den letzten Jahrzehnten bereits einige dutzend gute Algorithmen, und schon lange ist kein besserer mehr "erfunden" worden. Letztes Jahr kam ein Unbekannter daher und präsentierte dieses einfache Programm, den sogenannten Sleep Sort: Ein Bash-Script, das die übergebenen Parameter sortiert, und zwar indem pro Parameter i ein - [ElePHPanten zu Weihnachten und Mayflower Adventskalender](https://phpgangsta.de/elephpanten-zu-weihnachten-und-mayflower-adventskalender) - EDIT: Bestellungen 2012 bitte hier: ElePHPanten, ElePHPanten, ElePHPanten Der 1. Dezember, noch 24 Tage bis Weihnachten. Wer hat schon alle Geschenke? Wahrscheinlich keiner ;-) Falls noch jemand ein Geschenk für sich selbst oder für Freund/Freundin oder Kollegen braucht, ich habe wieder ElePHPanten Nachschub bekommen, der Andrang in den letzten Monaten war ja wirklich gewaltig und - [Hilfe, ich habe unsichere Passwörter in meiner Datenbank!](https://phpgangsta.de/hilfe-ich-habe-unsichere-passworter-in-meiner-datenbank) - Seit einigen Monaten sollte jedem, der die IT-Nachrichten und sogar die Mainstream-Presse etwas verfolgt, klargeworden sein dass es keine besonders kluge Idee ist, Passwörter von Kunden im Klartext zu speichern. Hashing ist nach wie vor eine gute Idee, wenn man den richtigen Algorithmus verwendet. Hashes sollten nur noch eingesetzt werden wenn man einen Salt mit - [Linkpool Nummer 32](https://phpgangsta.de/linkpool-nummer-32) - Hier einige Links die ich in den letzten Wochen aufgeschnappt habe: Interessanter Vortrag darüber wie Github entstanden ist und wie es intern aufgebaut ist: http://zachholman.com/talk/how-to-build-a-github Fast 2 Jahre als, trotzdem noch aktuelle Ideen bzgl. eines Deployments während des Live-Betriebs: http://blog.wepay.com/2010/11/30/weploy-wepays-deployment-tool/ Warum junge Entwickler das Rad neu erfinden sollten bevor sie fertige Räder nutzen: http://blog.ircmaxell.com/2012/08/reinvent-wheel.html Code - [8 gute Gründe, warum AnonSphere ein guter VPN Anbieter ist](https://phpgangsta.de/8-gute-grunde-warum-anonsphere-ein-guter-vpn-anbieter-ist) - Gastartikel von Oliver Sperke. Ich bin 35 Jahre alt und seit 11 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängisten Internetsprachen: PHP, HTML, Javascript und CSS. Ich habe ja schon im letzten Beitrag angekündigt, dass ich etwas aus dem - [Ressourcen (Videos, Slides, Audio) von PHP Vorträgen: PHP-Talks](https://phpgangsta.de/ressourcen-videos-slides-audio-von-php-vortragen-php-talks) - Des öfteren war ich in den letzten Monaten auf der Suche nach aufgezeichneten Videos und Slides von Konferenzen. Mir blieb nichts anderes übrig als die üblichen Quellen abzuklappern und zu hoffen etwas zu finden: YouTube und andere Video-Portale wie vimeo.com oder blip.tv für Videomitschnitte Slideshare, Speakerdeck für Präsentationen joind.in für Sessionlists, Feedback und verlinkte Präsentationen - [Web Developer Conference 2012 – Tag 2](https://phpgangsta.de/web-developer-conference-2012-tag-2) - Nach dem ersten Tag folgt natürlich noch der zweite Konferenztag der Web Developer Conference in Hamburg, hab es erst jetzt geschafft den zweiten Tag zusammenzufassen, damit ihr auch seht was ihr verpasst habt ;-) Session 2: David Zülke - Big Data mit Hadoop Erstmal habe ich selbst etwas verpasst, denn den ersten Slot habe ich - [Web Developer Conference 2012 - Tag 1](https://phpgangsta.de/web-developer-conference-2012-tag-1) - 4:30 Uhr aufstehen, das kann nur einen Grund haben: Konferenz! Ich bin zum ersten Mal auf der Web Developer Conference WDC 2012 in Hamburg, organisiert von web & mobile developer. Bereits um halb 9 bin ich im Sofitel Hotel, man sieht direkt dass es sich um ein Luxus-Hotel handelt, sehr teure Autos stehen am Eingang - [Die lieben Zeitzonen](https://phpgangsta.de/die-lieben-zeitzonen) - Gastartikel von Arno Hollosi. Kurz zu meiner Person: Ich arbeite seit über 13 Jahren mit PHP, betreibe ein recht erfolgreiches Wiki (Sensei's Library) und habe in den letzten Jahren zwei Bücher veröffentlicht: PHP programmieren unter Windows (auch ins Englische übersetzt) und das vor kurzem hier verloste Buch Leistungsstarke PHP-Anwendungen. Wenn Ihr genaue Uhrzeiten in eurer - [10 gute Gründe, sich noch heute einen guten VPN Anbieter zu suchen (mit Gewinnspiel)](https://phpgangsta.de/10-gute-grunde-sich-noch-heute-einen-guten-vpn-anbieter-zu-suchen-mit-gewinnspiel) - Gastartikel von Oliver Sperke. Ich bin 35 Jahre alt und seit 11 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängisten Internetsprachen: PHP, HTML, Javascript und CSS. Wie Ihr vielleicht schon mit bekommen habt, habe ich für AnonSphere einige Dinge - [Developer Conference Hamburg 2012, Tag 2](https://phpgangsta.de/developer-conference-hamburg-2012-tag-2) - Nach dem ersten Tag folgt der zweite, und ich kam Viertel vor 9 auf der Konferenz an. Also noch fix frühstücken (großartig!) und dann die Keynote von PHP-Core-Entwickler Pierre Joye über die Änderungen der letzten Monate und den Ausblick auf PHP 5.5. Er zeigte wie einfach es ist, PHP bei GitHub zu forken, mit Hilfe - [Developer Conference Hamburg 2012, Tag 1](https://phpgangsta.de/developer-conference-hamburg-2012-tag-1) - Morgen startet die zweite Developer Conference Hamburg und ich glaube es wird großartig. Ich schreibe diese Sätze am Vorabend, Donnerstag, auf dem Hotelzimmer, denn zum ersten Mal fahre ich nicht früh morgens los zur Konferenz, sondern gönne mir ein Hotelzimmer die Nacht davor. Die Konferenz morgen beginnt bereits um 8 Uhr, und das würde 4 - [POST-Request mit mehreren gleichen Parametern verschicken](https://phpgangsta.de/post-request-mit-mehreren-gleichen-parametern-verschicken) - Ich hatte ein komisches Problem, bei dem ich auch erstmal nachdenken und nachlesen musste wie ich das gelöst bekomme. Folgende Ausgangssituation: Ich musste einen POST-Request machen zu einem Webserver. Soweit kein Problem. Doch bei diesem Request war das besondere dass es mehrere POST-Parameter gab mit dem selben Namen. Beispiel: attr=blue attr=yellow attr=green amount=14 Normalerweise mache - [„Klopf-Klopf“ … wer da?](https://phpgangsta.de/klopf-klopf-wer-da) - Gastartikel von Oliver Sperke. Ich bin 35 Jahre alt und seit 11 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängisten Internetsprachen: PHP, HTML, Javascript und CSS. Besucht auch mein GPlus Profil oder mein aktuelles Projekt. Vor langer Zeit fand - [Gewinner des Tickets für die IPC 2012](https://phpgangsta.de/gewinner-des-tickets-fur-die-ipc-2012) - Und heute direkt noch eine Verlosung, diesmal für das Ticket zur IPC 2012 in Mainz im Oktober. Und der Gewinner ist........ Magnus! Herzlichen Glückwunsch! Ich habe dich bereits per E-Mail angeschrieben und freue mich auf deine(n) Bericht(e) von der Konferenz! Ich wünsch dir viel Spass und viele neue Erkenntnisse! Danke auch nochmals an S&S für - [Die Gewinner des Buchs “Von Geodaten bis NoSQL: Leistungsstarke PHP-Anwendungen”](https://phpgangsta.de/die-gewinner-des-buchs-von-geodaten-bis-nosql-leistungsstarke-php-anwendungen) - Vielen Dank erstmal für die Teilnahme an der Verlosung des Rezensionsexemplars! Leider können nur 3 von euch gewinnen, ich hoffe dass ihr anderen das Buch kauft, die Themen hören sich für Fortgeschrittene sehr interessant an, vorbestellbar ist es bereits. Die ersten Rezensionen werden wir dann bald lesen können. Die Gewinner: - Michael Steinmann - arne - [Rezensenten gesucht für neues Buch "Von Geodaten bis NoSQL: Leistungsstarke PHP-Anwendungen"](https://phpgangsta.de/rezensenten-gesucht-fur-neues-buch-von-geodaten-bis-nosql-leistungsstarke-php-anwendungen) - Am 6. September wird ein neues PHP Buch erscheinen mit dem Titel Von Geodaten bis NoSQL: Leistungsstarke PHP-Anwendungen - Aktuelle Techniken und Methoden für Fortgeschrittene. Der Autor Arno Hollosi hat mich angeschrieben und gefragt ob ich ein Exemplar haben möchte und dazu eine Rezension schreiben möchte. Aktuell habe ich noch 3 Bücher auf meinem Nachttisch - [Ticket für die International PHP Conference 2012 in Mainz zu verlosen!](https://phpgangsta.de/ticket-fur-die-international-php-conference-2012-in-mainz-zu-verlosen) - Es sind nur noch 8 Wochen bis zur International PHP Conference (IPC) 2012 in der Rheingoldhalle in Mainz, und ich habe gute Nachrichten für euch: Ich habe vom Veranstalter, der Software & Support Media GmbH, ein 3-Tages-Ticket bekommen das ich an euch verlosen kann! Aktuell läuft noch die Very Early Bird Phase, in der man - [XML Parsen mit DOMDocument: störende Whitespace-Knoten](https://phpgangsta.de/xml-parsen-mit-domdocument-storende-whitespace-knoten) - Gestern nach Jahren mal wieder drüber gestolpert, deshalb jetzt hier schriftlich festgehalten: Bei Nutzung von DOMDocument und der loadXML() Funktion werden standardmäßig erstmal Umbrüche und Whitespace (Leerzeichen, Tabs), die nur zu Formatierungszwecken genutzt werden, auch als Textelemente angesehen. Folgendes Beispielsnippet: Eigentlich möchte ich nur die beiden inneren Knoten haben. Aber statt 2 Kindknoten erhalte ich - [Die Web Developer Conference (WDC) 2012 in Hamburg](https://phpgangsta.de/die-web-developer-conference-wdc-2012-in-hamburg) - In diesem Jahr wird es noch einige Konferenzen für uns Entwickler geben, eine davon (auf der ich auch vor Ort sein werde) ist die Web Developer Conference (WDC) 2012 in Hamburg. Sie findet statt am 17. und 18. September 2012 im Sofitel Hotel Hamburg Alter Wall. Der Veranstalter, die Fachzeitschrift web & mobile developer in - [ProjectEuler: Algorithmen, Mathematik und Probleme](https://phpgangsta.de/projecteuler-algorithmen-mathematik-und-probleme) - Ich bin vor einigen Tagen auf das ProjectEuler gestossen und es lässt mich nicht mehr los ;-) Auf dieser Seite kann man kleinere und größere mathematische Probleme lösen mit der Programmiersprache seiner Wahl (oder auch nur mit Zettel und Stift), und nachdem ich die ersten 3 Probleme relativ schnell lösen konnte, konnte ich nicht mehr - [Linkpool Nummer 31](https://phpgangsta.de/linkpool-nummer-31) - Da es schon länger keinen Linkpool mehr gab, hier eine Menge Dinge die ich aufgeschnappt habe und wo ich nicht vergessen habe sie aufzulisten: Du hast eine HTTPS-Webseite und noch kein HSTS? Worauf wartest du? http://www.imperialviolet.org/2012/07/19/hope9talk.html Wie man automatisch deployed wenn man nach Github pushed: http://seancoates.com/blogs/deploy-on-push-from-github Ich weiß nicht ob ich es bereits gepostet hatte, - [Maximaler Arbeitsspeicherverbrauch mehrerer Funktionen](https://phpgangsta.de/maximaler-arbeitsspeicherverbrauch-mehrerer-funktionen) - Normalerweise misst man den aktuellen und maximalen Speicherverbrauch eines Scripts mit den Funktionen memory_get_usage() und memory_get_peak_usage(). Nun habe ich allerdings das Problem dass ich 3 Stellen innerhalb eines Scripts auf den maximalen Speicherverbrauch überprüfen muss, mit nur einem Aufruf. Da es keine Reset-Funktion gibt um den Peak-Verbrauch zurückzusetzen (oder übersehe ich was?) ist das also - [20% Rabatt auf die Personal License von PHPStorm](https://phpgangsta.de/20-rabatt-auf-die-personal-license-von-phpstorm) - JetBrains stellt mir wieder einen Gutschein zur Verfügung mit 20% Rabatt auf die meiner Meinung nach beste PHP-IDE auf dem Markt: PHPStorm! Seit April gibt es Version 4, mit vielen Neuerungen wie beispielsweise PHP 5.4 Support, PHP_CodeSniffer Integration, PHPUnit Code Coverage Anzeige und diversen Verbesserungen bei Inspections, Smart Autocompletion usw. Wer noch mit einer anderen - [Präsentationen der Symfony Live Paris 2012 ](https://phpgangsta.de/prasentationen-der-symfony-live-paris-2012) - Zeitgleich zur Dutch PHP Conference fand die alljährliche Symfony Live in Paris statt. Für all diejenigen die Symfony benutzen oder benutzen möchten, habe ich hier die Präsentationen der Konferenz auf einen Blick. Auch wenn nicht Symfony genutzt wird sind Themen wie Git, Propel2, Redis, MongoDB und weiteres abgedeckt, also für jeden etwas dabei. 07. Juni - [Probleme mit libmemcached und PECL memcached Inkompatibilität](https://phpgangsta.de/probleme-mit-libmemcached-und-pecl-memcached-inkompatibilitat) - Da wir uns bei mail.de wunderten warum eines unserer Preload-Scripte nicht so funktioniert wie es sollte, habe ich gestern und heute mehrere Stunden damit zugebracht herauszufinden woran das liegt. Das Preload-Script ist eine Art Warmup-Script, es lädt gewisse Daten in den Memcached-Server die kurz darauf benötigt werden (könnten). Das Preload-Script läuft mittels Gearman auf eigenen - [SPDY Beta-Patch für nginx verfügbar: Ein erster Test](https://phpgangsta.de/spdy-beta-patch-fur-nginx-verfugbar-ein-erster-test) - Endlich ist es soweit, mein favorisierter Webserver nginx erhält SPDY Support. Für Apache gibt es schon seit längerem ein SPDY-Modul das seit einigen Wochen als stabil gekennzeichnet ist. SPDY wird wahrscheinlich das neue HTTP 2.0, von Google entwickelt bietet es einige neue Features die das Web schneller und sicherer machen sollen. Unter anderem wird alles - [Präsentationen der Dutch PHP Conference 2012](https://phpgangsta.de/prasentationen-der-dutch-php-conference-2012) - Wie ihr ja schon gelesen habt war ich dieses Jahr zum ersten Mal auf der Dutch PHP Conference. Für alle die nicht dabei sein konnten oder sich die parallel gelaufenen Sessions angucken möchten, hier eine Auflistung der Slides. In den nächsten Wochen und Monaten wird es im TechPortal auch die Audio-Aufzeichnungen zu hören geben. Falls - [Präsentationen der php|tek 12](https://phpgangsta.de/prasentationen-der-phptek-12) - Das Konferenzjahr ist bereits in vollem Gange, und ich muss noch die Präsentationen der php|tek 12 nachholen. Morgen wird es die Liste der Dutch PHP Conference geben. Also viel neues Zeug zum angucken. 22. Mai 2012 FAIL Keith Casey Creating a High Quality App Using PHP Components from Around Our World Ryan Weaver Developer Testing - [Tag 2 in Amsterdam: Dutch PHP Conference 2012!](https://phpgangsta.de/tag-2-in-amsterdam-dutch-php-conference-2012) - Nicht wirklich ausgeschlafen, aber direkt wach und gespannt auf den Tag verlasse ich so schnell wie möglich das kleine Hotelzimmer und bin bereits vor 9 Uhr im RAI. Mit Plätzchen als Frühstück und das Lesen des Twitterstreams #dpc12 der letzten Stunden überbrücken wir die Zeit bis zum Start der Opening-Session und der darauf folgenden Keynote - [Tag 1 in Amsterdam: Dutch PHP Conference 2012!](https://phpgangsta.de/tag-1-in-amsterdam-dutch-php-conference-2012) - 4:30 Uhr, eine absolut unchristliche Zeit, aber was tut man nicht alles für eine Reise zu einer Konferenz! Zum ersten Mal bin ich auf der Dutch PHP Conference in Amsterdam und freue mich schon sehr darauf wieder in die Niederlande zu fahren, wenn es keinen Stau gibt dürfte ich gegen 8 Uhr dort sein. Kurz - [PHP Release Termine - Übersicht der Historie](https://phpgangsta.de/php-release-termine-ubersicht-der-historie) - Aktuell sind wir bei der PHP Version 5.4.3 angelangt. Doch wie sieht die Geschichte von PHP aus? Erst seit kurzem gibt es den geregelten Release-Zyklus, sodass absehbar ist wann es neue PHP Versionen geben wird und wie lange sie jeweils supported werden, in der Vergangenheit waren die Zeitpunkte wenig geregelt (aber trotzdem erstaunlich gleichmäßig wie - [Gewinner des Tickets für die Developer Conference Hamburg 2012](https://phpgangsta.de/gewinner-des-tickets-fur-die-developer-conference-hamburg-2012) - Das Gewinnspiel für das Ticket für die Developer Conference 2012 in Hamburg ist beendet, und der Gewinner steht fest: Harry Wiens! Herzlichen Glückwunsch! Leider kann nur einer gewinnen, sodass all diejenigen die nicht gewonnen haben noch die Möglichkeit haben vom Early-Bird-Preis zu profitieren der noch bis ca. Ende Juni gilt. Neu dazugekommen ist auch das - [PHP Zukunft: Großer Umbruch oder kleine Schritte?](https://phpgangsta.de/php-zukunft-groser-umbruch-oder-kleine-schritte) - PHP hat diverse Probleme, einige größer als die anderen, aber schon seit Jahren gibt es Diskussionen über dringend nötige Änderungen an der Sprache. Ein bekanntes Beispiel ist wohl die needle-haystack-Problematik oder das leidige Multi-Byte-Problem (Unterschied mbstrlen() zu strlen(), UTF-8 überall), oder String-Funktionen manchmal mit Unterstrich und manchmal zusammengeschrieben (str_replace(), strtolower()). Es gibt sicherlich noch zig - [Station 1 des großen ElePHPanten: Kassel](https://phpgangsta.de/station-1-des-grosen-elephpanten-kassel) - Die Bewerbungsfrist für die Reise ist um, der erste Zwischenstop steht fest und führt nach: Kassel! Ungefähr 150 Kilometer liegen vor ihm bis er die drittgrößte Stadt Hessens erreicht. Etwas aufgeregt ist er auf jeden Fall, und wenn alles nach Plan läuft wird er bereits am Mittwoch sein Ziel erreichen. Ich hoffe dass wir bald - [Ticket für die Developer Conference 2012 in Hamburg zu gewinnen!](https://phpgangsta.de/ticket-fur-die-developer-conference-2012-in-hamburg-zu-gewinnen) - Am 8. und 9. September 2012 findet die jährliche Developer Conference in Hamburg statt, und ich kann ein Ticket an euch verquizzen! Was müßt ihr dafür tun? Beantwortet einfach die folgenden drei kurzen Fragen bis zum 30.05.2012 23:59: ========================================= [wpsqt name="DevConQuiz" type="quiz"] ========================================= Jeder darf natürlich nur einmal teilnehmen. Der Gewinner wird dann hier im - [Die Reise des großen ElePHPanten](https://phpgangsta.de/die-reise-des-grosen-elephpanten) - Der letzte große ElePHPant möchte auf große Weltreise gehen! Die Frage ist: wohin möchte er? Schöne Städte und Dörfer hier in Deutschland besuchen, aber vielleicht auch in ganz Europa rumtouren, mit ganz viel Glück auf andere Kontinente? Soll der ElePHPant zu dir kommen? Es gibt nur 3 Bedingungen die es zu erfüllen gibt: Er möchte - [Kryptische Fehlermeldungen in PHP](https://phpgangsta.de/kryptische-fehlermeldungen-in-php) - Mit den Jahren der Programmierung stößt man unwiderruflich auch auf komische Fehlermeldungen in PHP, die auch nach dem 3. Mal lesen unverständlich sind und die Fehlerquelle unklar bleibt. Hier möchte ich einige Fehlermeldungen auflisten an die ich mich erinnern kann, und auch kurz notieren wann und wieso sie auftreten. Ich nehme mich da selbst nicht - [Linkpool Nummer 30](https://phpgangsta.de/linkpool-nummer-30) - Hier einige Links die ich in den letzten 3 Wochen aufgeschnappt habe: Einblicke hinter die Kulissen bei Draw Something, der am schnellsten wachsenden App: http://www.gamasutra.com/view/news/168799/Scale_Something_How_Draw_Something_rode_its_rocket_ship_of_growth.php Verbesserung der Disk-IO in Smarty: http://blog.rodneyrehm.de/archives/12-Improving-Disk-IO-in-PHP-Apps.html Google HTML/CSS Style Guide: http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml Tips on Writing an API for a Smartphone App: http://www.lornajane.net/posts/2012/tips-on-writing-an-api-for-a-smartphone-app Warum readfile(), fread(), fpassthru() und stream_copy_to_stream() sich sehr ähnlich - [Slides der International PHP Conference 2011 Spring Edition](https://phpgangsta.de/slides-der-international-php-conference-2011-spring-edition) - Berlin, Mai 2011. Die International PHP Conference Spring Edition fand wieder statt im Maritim proArte Hotel. Übrigens können bereits Tickets für die IPC11 im Oktober (9.-12.) gekauft werden, es läuft gerade die "Very Early Bird" Phase, das Ticket ist günstiger und es gibt ein Netbook geschenkt. 29. Mai 2011 RIA - Entwicklung mit Ext JS - [Mein Montag auf der IPC SE 2010 in Berlin](https://phpgangsta.de/mein-montag-auf-der-ipc-se-2010-in-berlin) - Meine zweite PHP-Konferenz (wenn man die Unconference 2009 dazuzählen möchte) startete gestern, aber nicht alles läuft so wie es laufen sollte. Um 3:15 klingelte der Wecker. 3:45 losgefahren, noch 2 Personen aus Bielefeld abgeholt die mit nach Berlin fahren wollten (Mitfahrzentrale) und dann auf die Autobahn. Alles lief super, bis zum Ortsschild Berlin: Stau, 12 - [Sicherheitsupdate für PHP bei CGI-Verwendung](https://phpgangsta.de/sicherheitsupdate-fur-php-bei-cgi-verwendung) - Gestern wurden neue Versionen für PHP 5.4 und 5.3 released, namendlich: 5.4.2 und 5.3.12. Grund für diese neuen Versionen ist eine gravierende Sicherheitslücke bei der Verwendung von PHP im CGI-Modus. Aber erstmal Entwarnung: Wahrscheinlich nutzt ihr kein CGI mehr sondern FastCGI oder mod_php, dann seid ihr nicht gefährdet. Wer aber noch auf die alte CGI-Schnittstelle - [Unbekannte und nützliche MySQL-Funktionen](https://phpgangsta.de/unbekannte-und-nutzliche-mysql-funktionen) - Auf der Suche nach einer schnelleren Möglichkeit Daten aus einer MySQL Tabelle auszulesen bin ich auf die MySQL-Funktion GROUP_CONCAT() gestossen. Wenn man beispielsweise eine kommaseparierte Liste aller Usernamen benötigt würde man normalerweise folgendes tun: Mit GROUP_CONCAT() kann man sich die Schleife sparen und erhält direkt einen kommaseparierten String (der Trenner kann natürlich geändert werden, siehe - [Termine 2012](https://phpgangsta.de/termine-2012) - Einige Konferenzen gab es dieses Jahr bereits, und es wird noch einige geben bei denen wir dabei sein können. Hier die aktuelle Liste die ich mir gemacht habe, falls ihr noch weitere PHP oder PHP-verwandte Konferenzen kennt die es noch 2012 geben wird und die ihr besuchen werdet, sagt bitte kurz Bescheid. Denkt dran, euch - [PHP 5.4.0 released! Neue Funktionen](https://phpgangsta.de/php-5-4-0-released-neue-funktionen) - Soeben wurde PHP 5.4.0 released! Nach 8 Release Candidates ist nun die finale Version erschienen und kann auf php.net heruntergeladen werden. Ich habe 2 meiner größeren Applikationen bereits mit der neuen Version getestet (mit dem RC8, der gleich der finalen Version ist). Sobald DotDeb die neue Version released wird der Server upgedated. So, hier eine - [PHP 5.4: Die neue Funktion header_register_callback()](https://phpgangsta.de/php-5-4-die-neue-funktion-header_register_callback) - Neben den vielen größeren Änderungen und neuen Features in PHP 5.4 gibt es auch eine kleine, aber vielleicht nützliche Funktion, mit der man noch an den HTTP-Headern rumpfuschen kann bevor sie an den Browser geschickt werden: header_register_callback(). Gerade bei älteren Applikationen, bei denen die Header mittels header() an x-beliebigen Stellen manipuliert werden, kann man mittels - [iBuildings Challenge: Mein Sismo Notifier für C2DM](https://phpgangsta.de/ibuildings-challenge-mein-sismo-notifier-fur-c2dm) - iBuildings hat wieder eine Challenge veranstaltet, und ich habe wieder mitgemacht. Letztes Jahr galt es eine Vier-Gewinnt-Spieler-KI zu erstellen, diesmal ging es darum einen Notifier für den Continuous Testing Server Sismo von Fabien Potencier zu schreiben, sprich eine Klasse die sich darum kümmert das Ergebnis eines Builds zu veröffentlichen. Ich habe mich dafür entschieden einen - [Linkpool Nummer 29](https://phpgangsta.de/linkpool-nummer-29) - Ein paar interessante Links gegen den verregneten Sonntag: Sehr interessante Serie über die PHP Source-Code-Interna, für PHP Entwickler: http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers.html Teil 2, Teil 3, Teil 4 XSS, und wie man htmlspecialchars NICHT benutzt: http://blog.astrumfutura.com/2012/03/a-hitchhikers-guide-to-cross-site-scripting-xss-in-php-part-1-how-not-to-use-htmlspecialchars-for-output-escaping/ Audioaufnahme eines Vortrags von Lorna Jane Mitchell über OAuth: http://techportal.ibuildings.com/2012/02/08/dpc-radio-implementing-oauth/ CSS3 und HTML5 Features in älteren Browsern mit Polyfills: http://addyosmani.com/polyfillthehtml5gaps/slides/#1 Carsten Eilers - [Wie viele interne Funktionen hat PHP?](https://phpgangsta.de/wie-viele-interne-funktionen-hat-php) - Tja, das ist nicht so leicht zu beantworten, die Antwort lautet: Kommt drauf an. Zählt man nur die Funktionen in der sogenannten Standard-Extension und der SPL-Extension sind es 526. Das ist also die Anzahl die jede PHP Installation auf jeden Fall bietet. Zählt man auch die Methoden der Klassen mit die mit ausgeliefert werden kommt - [Testdaten generieren mit dem Projekt "Faker"](https://phpgangsta.de/testdaten-generieren-mit-dem-projekt-faker) - Auf der Suche nach einem Namensgenerator bin ich auf das Projekt "Faker" von Francois Zaninotto gestossen. Basierend auf den Fakern aus der Perl- und Ruby-Welt kann man damit nicht nur Namen generieren, sondern auch Straßen, Ortsnamen, Telefonnummern, Zahlen, Firmennamen, E-Mail-Adressen, IP-Adressen, URLs, Datumsangaben, und das ganze lokalisiert. Französische Daten sind also andere als italienische oder - [Slides der Confoo 2012 Konferenz](https://phpgangsta.de/slides-der-confoo-2012-konferenz) - Whao, Ende Februar fand die diesjährige Confoo statt, unglaubliche 167 Sessions an 5 Tagen. Da hätte ich auch mal Lust nach Kanada zu fliegen bei solch einem Programm. Wenn das Lesematerial mal nicht für 2 Wochenenden reicht... Viel Spass! 27. Februar 2012 Training: Advanced PHP Development Sebastian Bergmann, Arne Blankerts, Stefan Priebsch Training: HTML5 Benoit - [PHP Easter Eggs](https://phpgangsta.de/php-easter-eggs) - In vielen Softwareprodukten verstecken die Entwickler kleine Gimmicks, sogenannte Easter-Eggs. Es gibt sie in vielen Microsoft-Produkten, unter anderem ein Flipper in Word oder ein Flugsimulator in Excel, aber auch auf Webseiten und manchmal auch in Hardware gegossen. In PHP gibt es auch einige kuriose Bilder, die normalerweise dazu gedacht waren am 1. April auf der - [APC "Potential cache slam averted for key XXX"](https://phpgangsta.de/apc-potential-cache-slam-averted-for-key-xxx) - Erst gestern bin ich wieder auf den folgenden "Bug" (bzw. Feature) gestossen und musste den Workaround raussuchen, deshalb schreibe ich ihn jetzt hier nieder, vielleicht stösst ja auch jemand von euch mal darauf. Es geht um die allseits beliebte APC Extension. Seit Version 3.1.3 (von August 2009) gibt es in APC einen Schutz gegen potentielle - [PHP-Programmierung gehört zu den Hauptskills auf den Projektplattformen](https://phpgangsta.de/php-programmierung-gehort-zu-den-hauptskills-auf-den-projektplattformen) - Gastartikel von Wojciech Dziedzic Wojciech Dziedzic hat an der Humboldt Universität zu Berlin Germanistische Linguistik, Anglistik und Polonistik im Magisterstudiengang abgeschlossen. Jetzt arbeitet er im Online Marketing bei twago – einer Projektvermittlungsplattform für Freelancer und KMU’s. Die Projektvermittlungsplattformen oder Online-Marktplätze wachsen jeden Monat, weil immer mehr Spezialisten und Auftraggeber von solcher Art der Zusammenarbeit überzeugt - [Push Notifications in Android Apps via C2DM](https://phpgangsta.de/push-notifications-in-android-apps-via-c2dm) - Seit Android 2.2 gibt es in Android Apps die Möglichkeit auf Push-Nachrichten zu reagieren. Dieser Dienst wird Cloud to Device Messaging oder kurz C2DM genannt. Die App registriert sich dazu bei den C2DM Servern an und bekommt dafür eine DeviceRegistrationID. Ab dann wird die Verbindung zwischen dem Android Market (neuerdings Google Play genannt) und den - [Local File Inclusion: Einige Beispiele](https://phpgangsta.de/local-file-inclusion-einige-beispiele) - Ich habe schon länger keine sicherheitsrelevanten Probleme mehr gepostet, heute schauen wir uns ein paar häufig gemachte und exisierende Fehler an. Schaut euch diesen Code-Schnipsel an: Der Benutzer der Webseite kann also in ein Formular eine URL eintippen, beispielsweise die URL eines Bildes, einer XML-Datei oder einer Webseite. Das Script ruft diese Resource (z.B. ein Avatar - [Slides der PHP UK Conference 2012](https://phpgangsta.de/slides-der-php-uk-conference-2012) - Und wieder ist eine hochkarätige PHP Konferenz zu Ende gegangen, die PHP UK Conference 2012 in London im Business Design Centre. Hier eine Übersicht der Talks und der Präsentationen: 24. Februar 2012 Opening Address Ciaran Rooney PHP in 2012 Rasmus Lerdorf Powering Your Website with Realtime Data Bert Van Hauwaert The Journey towards Continuous Integration - [Linkpool Nummer 28](https://phpgangsta.de/linkpool-nummer-28) - Einige Links zur Lektüre am Wochenende: Die verschiedenen Möglichkeiten des Packaging, unter anderem PEAR, frameworkeigene Lösungen und Composer: http://philsturgeon.co.uk/blog/2012/03/packages-the-way-forward-for-php Sehr schöner Artikel zum Localstorage und der aktuellen Diskussion dass man ihn nicht benutzen soll aus Performancegründen: http://www.nczonline.net/blog/2012/03/07/in-defense-of-localstorage/ Erklärung zur aktuellen Diskussion zu Scalaren Typehints, und warum das eine schwere Aufgabe ist: http://nikic.github.com/2012/03/06/Scalar-type-hinting-is-harder-than-you-think Ein umfangreicher Artikel - [Passworte/Strings untersuchen: Links- oder Rechtshänder?](https://phpgangsta.de/passwortestrings-untersuchen-links-oder-rechtshander) - Mich interessierte kürzlich ob die Wahl des Passwortes davon abhängt ob man Rechts- oder Linkshänder ist, oder ob es einfach nur davon abhängt wo die am häufigsten genutzten Buchstaben auf der Tastatur liegen. Dazu habe ich mir ein kleines Script gebaut dass zu einem gegebenen String ausrechnet welche Finger bzw. welche Hand für das Tippen - [Welche PHP Version setzt du ein?](https://phpgangsta.de/welche-php-version-setzt-du-ein) - Ich würde gern von euch wissen welche PHP Version ihr aktuell einsetzt. Vor allem geht es mir um eure Produktivserver, aber auch um eure Testumgebung bzw. Entwicklungsumgebung. Läuft dort genau die selbe Version? Die ganze Sache ist natürlich etwas komplizierter wenn man mehrere Projekte hat die auf verschiedenen Servern mit unterschiedlichen Versionen laufen, deshalb interessiert - [Präsentationen der PHPBenelux Konferenz 2012](https://phpgangsta.de/prasentationen-der-phpbenelux-konferenz-2012) - Am 27. und 28. Januar fand in Antwerpen die PHPBenelux 2012 statt. Einige Vorträge sind bereits bekannt aus dem Jahr 2011, die Konferenz ist gut dokumentiert, viel zu lesen und lernen! Freitag, 27.01.2012 Zend Framework 2 Matthew Weier O'Phinney Symfony 2 Fabien Potencier Mobile for PHP developers Ivo Jansch HTML5 for PHP developers Mathias Bynens - [Doppelte Array-Einträge entfernen](https://phpgangsta.de/doppelte-array-eintrage-entfernen) - Vor kurzem hatte ich das kleine Problemchen dass in einem Array die Werte (Strings und Integer) mehrfach vorkamen, ich diese aber nicht gebrauchen konnte. Mit array_unique() kann man doppelte bzw. mehrfach vorkommende Werte auf ein Vorkommen reduzieren, aber es gibt keine direkte Methode um mehrfach vorkommende Werte ganz zu entfernen. Beispiel: Aus dem Array (1, - [Präsentationen der International PHP Conference 2011 in Mainz](https://phpgangsta.de/prasentationen-der-international-php-conference-2011-in-mainz) - Wie gestern versprochen hier die Liste aller Folien von der IPC die ich gefunden habe. Vervollständigungshilfe gern willkommen! 09.Oktober 2011 JavaScript verstehen – Konzepte, Denkansätze und Lösungen Bastian Feder RIA-Entwicklung mit ExtJS Dominik Jungowski CouchDB for PHP Developers Jan Lenhardt HTML5 for Developers – The Workshop Thorsten Rinne 10. Oktober 2011 PHP 5.4 – An Update Johannes - [Velocity Europe Tag 2: Whao!](https://phpgangsta.de/velocity-europe-tag-2-whao) - Speeeed! Genauso wie der letzte Tag geendet hat beginnt der zweite. Steve und John eröffnen den zweiten Tag mit einer kurzen Opening Keynote, gefolgt von Jeff Veen der von den Problemen berichtet als Typekit einige Tage vor Weihnachten vom Erfolg überrollt wurde, und wie innerhalb eines Wochenendes das Problem kurzerhand gelöst werden musste und auch - [Client-Zertifikate als sicherer Login-Ersatz?](https://phpgangsta.de/client-zertifikate-als-sicherer-login-ersatz) - Wer auf Sicherheit achtet und seinen Webseitenbesuchern etwas Privatsphäre spendieren möchte installiert ein SSL-Zertifikat auf dem eigenen Webserver. Damit ist es Besuchern möglich verschlüsselt mit dem Webserver zu kommunizieren und ein eventuell vorhandener Mithörer im offenen WLAN guckt dumm aus der Wäsche. Spätestens wenn es um Login-Daten oder andere persönliche Informationen geht sollte HTTPS eigentlich - [Ausfallsichere, skalierbare und sichere Hosting-Lösung von maxcluster zu gewinnen!](https://phpgangsta.de/ausfallsichere-skalierbare-und-sichere-hosting-losung-von-maxcluster-zu-gewinnen) - Mit einer spannenden Aktion möchte ich in den Februar starten. Der Anbieter maxcluster stellt zwei Produkte für eine Laufzeit von 6 Monaten zur Verfügung mit einem Gesamtwert von über 2300€! Was gibt es genau zu gewinnen? Application Cluster mit einer Konfiguration von 6 CPUs, 8 GB RAM, 200 GB HDD, 20 GB Netzwerk-Storage und 500 - [PGP und GPG: Wie arbeite ich mit asynchroner Verschlüsselung](https://phpgangsta.de/pgp-und-gpg-wie-arbeite-ich-mit-asynchroner-verschlusselung) - PGP und GPG sollte den meisten ein Begriff sein, auch wenn es selbst noch nie oder nur sehr selten eingesetzt wird. Die wenigsten nutzen es wahrscheinlich täglich und beispielsweise mit allen E-Mail-Adressen. Einen Rundumschlag bezüglich asynchroner Verschlüsselung und PGP/GPG mit PHP habe ich für das PHP Magazin geschrieben. In der Ausgabe 1.12 erkläre ich darin - [Neuer frischer Gutschein für PHPStorm 3.0!](https://phpgangsta.de/neuer-frischer-gutschein-fur-phpstorm-3-0) - Ich habe gute Nachrichten von JetBrains: Nach dem erfolgreichen Release der Version 3.0 im Dezember letzten Jahres habe ich wieder Gutscheine über 20% Preisnachlass beim Kauf einer Personal License von PHPStorm bekommen und kann diese an euch rausgeben! Wie bereits beim letzten Mal gilt dies nicht für Verlängerungen sondern nur für Neubestellungen der Personal License. - [Den USB Mail Melder per Webseite steuern](https://phpgangsta.de/den-usb-mail-melder-per-webseite-steuern) - Mein erstes richtiges USB-Gadget ist der USB Mail Melder (USB Mail Notifier). Um damit etwas zu experimentieren habe ich ein kleines Webinterface gebaut mit dem man in nahezu Echtzeit die Farben verändern kann. Doch erstmal ein Bild: Diese kleine Box kann man in allen Farben aufleuchten lassen. Normalerweise gibt es dazu Treiber und Software auf - [Linkpool Nummer 27 + Adventskalenderartikel 10.12. – 24.12.](https://phpgangsta.de/linkpool-nummer-27-adventskalenderartikel-10-12-–-24-12) - Heute wieder eine lange Liste mit Artikeln die es zu Lesen gilt, hauptsächlich gefüllt mit Artikeln aus den Adventskalendern 2011. Artikel vor dem 09.12. befinden sich im ersten Adventskalender-Übersichts-Artikel. Info über ein 3 Jahre altes RFC für PHP für eine neue Syntax für Getter und Setter: http://bigwhoop.ch/artikel/119/2011-12-05/properties-neue-get-set-syntax-fr-php 10 Gründe nicht Test-Driven-Development (TDD) zu machen (oder - [Meist gelesene Artikel, Besucherzahlen und Besucherzeiten von 2011 hier im Blog](https://phpgangsta.de/meist-gelesene-artikel-besucherzahlen-und-besucherzeiten-von-2011-hier-im-blog) - Hier eine Top 10 Liste der Artikel die die meisten Besucher angezogen haben: Die Zahlen sind natürlich mit Vorsicht zu genießen da einige Artikel so kurz sind dass sie komplett auf der Übersichtsseite erscheinen. Auch könnten die Zahlen verfälscht sein da ich ja einen Full-Feed anbiete, sodass eventuell Artikel mit Tabellen und Bildern Vorteile haben - [Letzte Aktion in 2011: Server via IPv6 verfügbar machen](https://phpgangsta.de/letzte-aktion-in-2011-server-via-ipv6-verfugbar-machen) - So, damit es nicht heißt mein Blog wäre in 2011 nicht via IPv6 erreichbar gewesen ist meine letzte Aktion dieses Jahr meinen Webserver via IPv6 erreichbar zu machen. Da mein Hoster nun auch endlich IPv6 für virtuelle Server anbietet war das ziemlich einfach: Man mußte im Kundenbereich die IPv6 Konnektivität aktivieren und 10 Minuten warten. - [HashDoS Angriff legt (unter anderem) PHP lahm](https://phpgangsta.de/hashdos-angriff-legt-unter-anderem-php-lahm) - Ich bin leider die letzten 2 Tage nur wenige Stunden dazu gekommen die Live-Streams vom 28. Chaos Communication Congress (28C3) zu schauen, aber bzgl. PHP ist heute Nachmittag ein interessanter Talk gehalten worden mit dem Thema Effective Denial of Service attacks against web application platforms dem ich hier einen kurzen Artikel widmen werde. Es geht darum - [Frohe Weihnachten!](https://phpgangsta.de/frohe-weihnachten) - Ich wünsche euch allen frohe Weihnachten, lasst euch reich beschenken, vergebt euren Eltern wenn sie wieder peinliche Situationen herbeiführen, und verzeiht es euren Omas wenn sie zu euch den altbekannten Satz "Junge, bist du aber groß geworden" sagen. Ich wünsche euch noch keinen guten Rutsch denn hier im Blog wird es zwischen den Feiertagen noch - [High Performance: Caching (reloaded) mit PHP](https://phpgangsta.de/high-performance-caching-reloaded-mit-php) - Gastartikel von Oliver Sperke. Ich bin 35 Jahre alt und seit 10 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängigsten Internetsprachen: PHP, HTML, Javascript und CSS. Nach langem Arbeiten an einem Projekt fängt der ambitionierte Entwickler an, zu testen, - [Kleine Einführung in die YouTube API](https://phpgangsta.de/kleine-einfuhrung-in-die-youtube-api) - So, heute ist die YouTube API dran, nachdem ich letzte Woche die SlideShare API vorgestellt hatte. Mit Hilfe der YouTube Data API ist es möglich Videos hochzuladen, nach Videos zu suchen und Kommentare abzurufen. Man kann sich mit der API auch "einloggen" und Dinge tun die man als eingeloggter User machen kann, beispielsweise als dieser - [Adventskalenderartikel 01.12. - 10.12.](https://phpgangsta.de/adventskalenderartikel-01-12-10-12) - Heute gibts eine Menge Links zu Adventskalender-Blogartikeln. Jeden Tag ein Türchen, dahinter jeden Tag ein Artikel aus dem PHP- und Webumfeld. Viel Spass beim Lesen! Zusammenfassung Adventskalender 2011 von Mayflower: 01.12. CLOUD Transformation Model 02.12. PHP 5.3 Features in real life 03.12. Setting up an own QA Environment for Javascript 04.12. PDF nicht nur mit - [Weihnachtsgewinnspiel bei antwerpes: Arduino zu gewinnen](https://phpgangsta.de/weihnachtsgewinnspiel-bei-antwerpes-arduino-zu-gewinnen) - Kurzmeldung heute: Auch dieses Jahr gibt es wieder eine kleine Weihnachts-Programmieraufgabe für euch im antwerpes Blog: Ihr sollt ein kleines ASCII-Art-Bildchen erstellen! Wirklich eine machbare Sache, ihr könnt jede Programmiersprache benutzen, und es winken tolle Preise, unter anderem ein Arduino UNO Starterkit! Je ausgefallener die Lösung, umso höher die Chancen zu gewinnen! Lasst also euer - [Zugriff auf die SlideShows bei SlideShare via Zend_Service_SlideShare](https://phpgangsta.de/zugriff-auf-die-slideshows-bei-slideshare-via-zend_service_slideshare) - SlideShare hat eine API über die man auf die SlideShows zugreifen kann, man kann einzelne SlideShows abrufen und SlideShows nach Tags, Gruppen oder Usernamen suchen, und erhält dann jeweils Details wie Titel, Uploaddatum, Anzahl Views, Anzahl Downloads, EmbedCode und über ein Dutzend weitere Informationen. Es ist auch möglich neue SlideShows hochzuladen. Der Zugriff ist nicht - [PHPStorm 3.0 erschienen!](https://phpgangsta.de/phpstorm-3-0-erschienen) - Kurze und aktuelle News: PHPStorm 3.0, die meiner Meinung nach beste PHP IDE von JetBrains, ist soeben released worden, alle die eine Lizenz haben können updaten. Wer noch keine Lizenz hat kann PHPStorm 30 Tage kostenlos testen. Ankündigung: http://blog.jetbrains.com/webide/2011/11/phpstorm-3-0-keep-your-code-in-its-best-shape What's new: http://www.jetbrains.com/phpstorm/whatsnew/?whatsnew30 Download: http://www.jetbrains.com/phpstorm/download/index.html - [Das POP3 Protokoll im Detail betrachtet](https://phpgangsta.de/das-pop3-protokoll-im-detail-betrachtet) - Nachdem ich bereits das IMAP Protokoll und auch das SMTP Protokoll unter die Lupe genommen habe, möchte ich heute das POP3 Protokoll untersuchen und zeigen welche Befehle es gibt und wie man damit E-Mails von einem Mail-Server lesen kann. POP3 ist genauso wie IMAP ein Protokoll zum Abholen von E-Mails mit einem Mailclient wie zum - [ElePHPanten zu Weihnachten?](https://phpgangsta.de/elephpanten-zu-weihnachten) - UPDATE: Auch 2011 habe ich wieder ElePHPanten im Angebot. Durch einen glücklichen Zufall habe ich jemanden aus den Niederlanden kennengelernt, der noch einige elePHPanten zu verkaufen hatte. Wer einen zu Weihnachten verschenken möchte, an Arbeitskollegen, Ehemänner/-frauen, Bekannte, Freunde oder auch sich selbst, möge sich unten in den Kommentaren einreihen, und weiterlesen. Oder gebt diese URL - [Linkpool Nummer 26](https://phpgangsta.de/linkpool-nummer-26) - Der neue Apache httpd v 2.4 (PDF): http://people.apache.org/~jim/presos/ACNA11/Apache_httpd_cloud.pdf In welchen Fällen bei foreach-Schleifen nutzt PHP intern Kopien und wann nicht: http://nikic.github.com/2011/11/11/PHP-Internals-When-does-foreach-copy.html Was bei Google unter anderem wichtig ist: Qualität, Rechtschreibung ... http://sixrevisions.com/content-strategy/creating-websites-optimized-for-googles-panda-algorithm/ PHP Session Storage via MySQL Cluster und Memcached-Frontend: http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html 6 Kostenloses Web-Speed-Tools: http://t3n.de/news/website-speedtest-6-kostenlose-tools-342243/ Wie Facebook seine Releases deployed, monitored usw. http://www.facebook.com/video/video.php?v=10100259101684977&oid=9445547199&comments Warum man - [Slides und Videos der Velocity Europe 2011](https://phpgangsta.de/slides-und-videos-der-velocity-europe-2011) - Hier werdet ihr euch freuen, es gibt viele Videos und viele Präsentationen von der Velocity Europe, sehr gute Speaker und sehr interessante Themen aus dem Performance- und Operations Umfeld, dafür sollte man sich auf jeden Fall einige Stunden einplanen und Videos + Präsentationen angucken, es lohnt! Dienstag, 08. November 2011 9:00 Plenary Opening remarks Steve - [Wo ungefähr ist eine IP Adresse beheimatet? GeoIP in PHP](https://phpgangsta.de/wo-ungefahr-ist-eine-ip-adresse-beheimatet-geoip-in-php) - Manchmal möchte man wissen aus welchem Land oder welcher Region eine IP-Adresse kommt, und dafür gibt es bereits Lösungen die leicht zu benutzen sind. Als erstes schauen wir uns die Geo-IP-Datenbank von MaxMind an, die wir mit der PEAR-Klasse Net_GeoIP ansprechen. Wer nur das Land braucht der sollte sich die kostenlose GeoLite Country Datenbank anschauen, - [Bessere Performance mit einem Reverse Proxy](https://phpgangsta.de/bessere-performance-mit-einem-reverse-proxy) - In diesem Artikel geht es nicht um PHP, sondern darum, wie man ein PHP-Applikation via Webserver einer großen Besuchermenge zugänglich macht. Der Standard ist aktuell ein Apache (1.3 oder 2.x), der PHP beherrscht (via mod_php oder FastCGI). Darüber kann man dann wunderbar die Webseiten "serven". Doch was tut man, wenn durch eine große Besucheranzahl der - [Slides der ZendCon 2011](https://phpgangsta.de/slides-der-zendcon-2011) - Die PHP Konferenz der Firma Zend, die ZendCon 2011 in Santa Clara, war natürlich wieder ein Highlight was die aktuellen und zukünftigen Themen rund um PHP angeht. Leider sind noch einige Lücken geblieben, wenn ihr die fehlenden Präsentationen findet, bitte in die Kommentare packen, Danke! Montag, 17.10.2011 Creating and Using Streams, Filters and Sockets Elizabeth - [Der eingebaute Webserver in PHP 5.4](https://phpgangsta.de/der-eingebaute-webserver-in-php-5-4) - Mit PHP 5.4 kommt ein kleiner eingebauter Webserver mitgeliefert, der allerdings nur für Testzwecke genutzt werden soll, auf Produktionsmaschienen soll man ihn nicht einsetzen, die Performance ist nicht so der Hit (single threaded) und auch Features wie .htaccess Support (mod_rewrite etc.) und einiges andere fehlen. Falls bei der Entwicklung oder auf einer Testmachine "mal eben - [PHP 5.4 Beta1: Testen bitte!](https://phpgangsta.de/php-5-4-beta1-testen-bitte) - Heute vormittag ist die PHP 5.4.0beta1 released worden. Damit wir ein möglichst stabiles und fehlerfreies PHP haben auf allen Systemen ist jeder aufgerufen, die Testsuite durchlaufen zu lassen. Das geht sehr schnell und ohne viel Aufwand: Der configure Aufruf ist nur ein Beispiel, ihr müßt natürlich dort die Extensions und Optionen nehmen die eure PHP-Installation - [PHP 5.4.0 Beta1 Performance!](https://phpgangsta.de/php-5-4-0-beta1-performance) - Ich bin zufällig auf eine Präsentation über die kommende PHP 5.4.0 Version gestossen, mit einer Liste aller entfernten Features, neuer Features, aber auch interessanten Performance- und Speicherverbrauchdaten. Informationen über Features sind ja schon etwas länger bekannt, und im Changelog findet man auch viele Informationen, aber ehrlich gesagt konnte ich es nicht glauben was da bei - [PHP Clouds und Platform as a Service (PaaS): phpcloud von Zend](https://phpgangsta.de/php-clouds-und-platform-as-a-service-paas-phpcloud-von-zend) - Die Zend Cloud phpcloud wurde auf der ZendCon 2011 im Oktober vorgestellt, ich habe mich natürlich direkt vorregistriert und seitdem auf einen Invite gewartet. Nun habe ich einen Invite-Key bekommen und direkt ein wenig damit experimentiert. Dieser Artikel stellt also eine weitere Platform-as-a-Service (PaaS) für PHP vor. Die Applikationen laufen auf einem Fundament namens Zend - [Velocity Europe Tag 1: Die Sessions am Nachmittag](https://phpgangsta.de/velocity-europe-tag-1-die-sessions-am-nachmittag) - Nach dem Mittagessen ging es im ersten Talk ums Monitoring, und warum wir so schlecht darin sind. Theo ist der Meinung dass wir häufig die falschen Dinge monitoren, denn Ziel Nummer 1 ist das Business, wir müssen vor allem messen können ob und wie die Nutzer die Applikation nutzen, dazu gehört mehr als nur Conversions. - [Velocity Europe Tag 1: Der Vormittag](https://phpgangsta.de/velocity-europe-tag-1-der-vormittag) - Die dritte und wahrscheinlich letzte Konferenz dieses Jahr begann heute, die VelocityEU in Berlin. Die Velocity ist DIE Konferenz wenn es um Web-Performance geht (Web = der ganze Hardware- und Software-Stack um Webdienste auszuliefern), bekannt aus den USA und nun auch zum ersten Mal in Europa. Ich hatte das Glück eingeladen zu werden. Und ich - [Javascript testen mit QUnit und Sinon.JS](https://phpgangsta.de/javascript-testen-mit-qunit-und-sinon-js) - Gastartikel von Markus Frühauf. Ich bin 25 Jahre und seit über 7 Jahren im Webbereich tätig, davon 3 Jahre Perl und 4 Jahre jQuery, jQueryUI und php, Anfangs mit dem Framework von phpBB und seit zwei Jahren mit dem Zend-Framework (in mehreren Projekten / Firmen). Ich entwickle Webanwendungen von der Datenbank bis zum Frontend. Vor - [Linkpool Nummer 25](https://phpgangsta.de/linkpool-nummer-25) - Gute Übersicht über Fallstricke in HTML-E-Mails: http://maddesigns.de/html-newsletter-1030.html Google nutzt auch POST Requests zum Indizieren von Webseiten: http://googlewebmastercentral.blogspot.com/2011/11/get-post-and-safely-surfacing-more-of.html Sehr cooler und ausführlicher Artikel über Kryptologie: http://bigwhoop.ch/artikel/105/2011-10-20/ein-ausflug-in-die-kryptologie Wie erkenne ich dass ich ein schlechter Programmierer bin: http://badprogrammer.infogami.com/ Videomitschnitt Patrick Lauke über "Handys und Tablets: Websiteentwicklung jenseits des Desktops" auf der IPC11: http://entwickler.de/zonen/portale/psecom,id,99,news,60802.html Gute Übersicht über Encoding-Probleme, wo - [Das Test-Fax-Projekt kurz vorgestellt](https://phpgangsta.de/das-test-fax-projekt-kurz-vorgestellt) - Mir ist aufgefallen dass ich noch gar nichts über mein Test-Fax-Projekt geschrieben habe. Um etwas mit Fax-Dokumenten zu arbeiten und zu spielen habe ich vor einigen Monaten die kleine Webseite http://www.test-fax.de erstellt. Dort kann man sein neues Fax-Gerät oder seine neue Fax-Software testen indem man einfach ein Fax an die angezeigte Nummer schickt. Das empfangene - [Info über MySQL Zertifizierungen?](https://phpgangsta.de/info-uber-mysql-zertifizierungen) - Ich plane schon länger eine weitere Zertifizierung zu machen, nachdem die Zend Certified Engineer Prüfung letztes Jahr so gut geklappt hat. Es gibt auch einige Zertifikate die mich interessieren würden: ZCE PHP 5.3 - wäre ein schönes Update zu meinem ZCE PHP 5, für < 75 Euro würd ich drüber nachdenken, aber 195 Euro ist - [Rezension des Buches "PHP 5.3 - Die Neuerungen"](https://phpgangsta.de/rezension-des-buches-php-5-3-die-neuerungen) - Nachdem ich am 30.06.2009 via Twitter bei einem Gewinnspiel des Twitter-Users entwicklerpress zwei mal das Buch "PHP 5.3 - Die Neuerungen" gewonnen habe, habe ich es heute gelesen und möchte meinen ersten schriftlichen Bücher-Review zum Besten geben. Es sei auch noch angekündigt, dass ich in einigen Tagen das zweite Exemplar (es ist natürlich noch orginal - [Externe Javascript Dateien zusammenfassen](https://phpgangsta.de/externe-javascript-dateien-zusammenfassen) - Wir alle wissen: Langsame Webseiten bekommen weniger Besucher. Dazu gibt es auch Auswertungen von großen Portalen und Suchmaschinen. Doch wie beschleunigt man die eigene Webseite? Häufig übersieht man einen wichtigen Teil: Das Frontend bzw. den Client. Mag das PHP-Script auch sehr schnell sein (die Zeit gemessen mit microtime() ergibt 0.1 Sekunden), die Seite kann sich - [XSS-Angriffe erschweren mit CSP, der neuen Idee von Mozilla/Firefox](https://phpgangsta.de/xss-angriffe-erschweren-mit-csp-der-neuen-idee-von-mozillafirefox) - Die Entwickler bei Mozilla haben hart gearbeitet und sich eine gute Strategie ausgedacht, wie man in Zukunft Cross-Site-Scripting (XSS) erschweren kann (Achtung: unterbinden wird man es (noch) nicht können!). Viele Browserhersteller loben die Firefox-Entwickler dafür und werden die Funktionalität auch einbauen, um das Web ein wenig sicherer zu machen. XSS ist im Grunde das böse - [Buchvorstellung: PHP Design Patterns](https://phpgangsta.de/buchvorstellung-php-design-patterns) - Vor einigen Wochen habe ich mir ein Buch zugelegt welches ich schon lange lesen wollte: PHP Design Patterns von Stephan Schmidt aus dem O'Reilly Verlag. Interessant ist vor allem die vor mir liegende 2. Auflage, die nochmal umfassend aktualisiert wurde und nun voll auf PHP 5.3 abgestimmt ist. Auf den ersten Seiten wird auf die - [PHP-Test für Fortgeschrittene | ZCE Tests zu gewinnen](https://phpgangsta.de/php-test-fur-fortgeschrittene-zce-tests-zu-gewinnen) - Ich habe in den letzten Tagen überlegt, gesammelt und hoffentlich einige interessante Fragen erstellt, mit deren Beantwortung ihr die verbliebenen Zertifizierungs-Tests erhalten könnt. Ihr bekommt 10 zufällige Fragen präsentiert die ihr beantwortet. Diejenigen, die >= 50% richtig beantworten, kommen in die Lostrommel. Wichtig: Jeder darf nur einmal teilnehmen! Wen ich beim mehrfachen Ausfüllen erwische fliegt - [Kleinere Änderungen/Erweiterungen im Blog](https://phpgangsta.de/kleinere-anderungenerweiterungen-im-blog) - Letzten Donnerstag Abend habe ich mich mal wieder etwas um meine Wordpress-Plugins gekümmert. Zwei wollten upgedated werden, eins habe ich ersetzt und auch ein neues installiert. Das neue Plugin Smart Archives Reloaded erstellt eine coole Archiv-Seite, auf der alle Artikel nach Jahren und Monaten sortiert aufgelistet sind, und man so schnell die Artikel eines bestimmten - [Eilmeldung: PHPStorm satte 50% günstiger!](https://phpgangsta.de/eilmeldung-phpstorm-satte-60-gunstiger) - JetBrains hat eine Weihnachtsaktion eingeläutet, PHPStorm gibt es bis zum 27. November 50% günstiger! Mit meinem 20% Gutschein, den man noch bis zum 1. November zusätzlich einlösen kann, bezahlt man nur noch 40% des Originalpreises! Bei JetBrains sind bereits EAP Versionen von PHPStorm 3.0 verfügbar, die IDE wird noch besser und schneller und schöner. Erscheinen - [History und Autocompletion in Konsolentools mit readline](https://phpgangsta.de/history-und-autocompletion-in-konsolentools-mit-readline) - In automatischen Scripten nutzt man Parameter die man seinem PHP Script übergibt damit es weiß was es tun soll. Doch manchmal ist es auch angenehm bei einem manuellen Aufruf den User nach Informationen zu fragen. Dazu gibt es in PHP die readline* Funktionen. Damit diese genutzt werden können muss PHP mit readline-Support kompiliert sein. Falls - [Linkpool Nummer 24](https://phpgangsta.de/linkpool-nummer-24) - Gespickt mit einigen Links von der IPC: Sinon.JS: stubs, mocks, fake timer und Fake XHR-Server für JavaScript http://sinonjs.org/ Vielleicht die Zukunft a la Web 2.1: "Jeder wird sein eigener TV-Produzent? http://twitcasting.tv/ phpab, der PHP AutoloadBuilder von Arne Blankerts generiert Autoload-Maps für schnellstes Autoloading https://github.com/theseer/Autoload Eine interessante Liste mit Dingen die man bzgl. Sicherheit untersuchen kann: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines - [Erinnerung: ElePHPanten und PHPStorm Rabatt](https://phpgangsta.de/erinnerung-elephpanten-und-phpstorm-20-rabatt) - Wollte nur nochmal kurz auffrischen: Nach wie vor habe ich noch blaue kleine ElePHPanten, und auch noch exakt 10 pinke kleine ElePHPanten, die von der IPC übrig sind. Weitere Informationen befinden sich im entsprechenden ElePHPanten-Artikel. Ich kann noch bis zum 01.11.2011 (also noch 10 Tage) Rabatt-Codes für 20% vergünstigten PHPStorm Personal Licenses verschicken. Auch dazu - [International PHP Conference 2011: Tag 1](https://phpgangsta.de/international-php-conference-2011-tag-1) - Es gibt nicht viele Tage im Jahr wo ich so früh aufstehe wie heute: 4:30 Uhr (Nachts!). Aber heute ist der erste reguläre Tag der International PHP Conference 2011 (IPC11) wenn man vom Workshop-Tag am Sonntag absieht, und dafür stehe ich auch nach 3 Stunden Schlaf wieder auf. Trotz vieler Baustellen auf den 300km Strecke - [International PHP Conference 2011: Tag 2](https://phpgangsta.de/international-php-conference-2011-tag-2) - Tag 2 der IPC. Diesmal ausgeschlafener und nach einem guten Frühstück im Hotel begann die Konferenz mit der Keynote "A cloudy blue-sky Brainstorm" von Michiel de Jong. Eigentlich sollte der Begriff "Cloud" ein wenig beleuchtet werden, aber ich fand es war eher eine Hommage auf diverse Open-Source-Produkte und -Firmen, für mich nicht wirklich hilfreich und - [International PHP Conference 2011: Tag 3](https://phpgangsta.de/international-php-conference-2011-tag-3) - Der schon letzte Tag der International PHP Conference bricht an. Direkt der erste Slot um 9:00 Uhr war ein lang erwarteter: Nachdem ich den Vortrag auf der Unconference in Hamburg nicht gesehen habe ging mein erster Weg zu Nils Langner und Mike Lohmann und ihrem Vortrag "Redaktionelle Hochlastwebseiten am Beispiel von stern.de". Vor allem die - [PHPs Interaktive Shell](https://phpgangsta.de/phps-interaktive-shell) - Um mal eben schnell eine kurzes Snippet auszuprobieren gibt es mehrere Möglichkeiten, die wohl geläufigste ist eine neue PHP-Datei anzulegen im Document Root, sie mit seiner IDE oder zur Not auch Notepad/Textedit/vi zu öffnen und die Zeilen zu schreiben, abzuspeichern, den Browser öffnen und die URL eintippen, dann sollte man das Ergebnis sehen. Nehmen wir - [Ungültiger HTML Code: Sollte uns das interessieren?](https://phpgangsta.de/ungultiger-html-code-sollte-uns-das-interessieren) - Um Webseiten zu optimieren soll man unter anderem darauf achten, validen HTML Code zu schreiben. Das macht es häufig einfacher, Seiten für alle Browser gleich aussehen zu lassen, und Browser zeigen fehlerfreie Seiten auch eine Millisekunde schneller an wenn keine Fehlerkorrekturen und Workarounds im Browser angewendet werden müssen. Ich weiß nicht ob es noch mehr - [Mini-Storage-Grid crowdsourced](https://phpgangsta.de/mini-storage-grid-crowdsourced) - Ich habe eine verrückte Idee, und ihr sagt mir ob wir das umsetzen können oder nicht. Dabei bin ich auf eure Mitarbeit angewiesen, denn das verrückte daran ist dass es ein verteiltes System sein soll, wobei jeder seinen Client selbst bauen wird (Crowdsourcing). Also, wir brauchen Speicherplatz, den gibt es da draußen zuhauf, meist auch - [Testet eure Apache Server auf die neue 0-Day DOS-Lücke](https://phpgangsta.de/testet-eure-apache-server-auf-die-neue-0-day-dos-lucke) - Ich möchte wenig Zeit verlieren: Heute wurde ein sehr leichter Angriff bekannt, mit dem man viele voll gepatchte Apache 2.2 Server ziemlich einfach abschießen kann. Details dazu finden sich sowohl bei Heise als auch bei Golem. Es geht also um den HTTP Range-Header. Eigentlich dazu gedacht, Downloads zu pausieren und zu resumen, ist der Apache - [Das Problem mit HEAD Requests in PHP](https://phpgangsta.de/das-problem-mit-head-requests-in-php) - Ich bin gerade auf ein interessantes Verhalten gestoßen das eventuell große Probleme bereiten kann. Wahrscheinlich nur sehr wenige von euch werden das hier wissen, trotzdem ist es sehr interessant und provoziert eventuell Probleme und Sicherheitslücken. Das hier vorgestellte Verhalten ist wahrscheinlich kein Problem von PHP sondern eventuell vom Webserver, aber ich weiß es nicht genau. - [Präsentationen der FrOSCon 2011](https://phpgangsta.de/prasentationen-der-froscon-2011) - Letztes Wochende fand die alljährliche FrOSCon in Sankt Augustin statt. Es gab einen speziellen PHP Raum, und demnach auch einige PHP Talks sowie einige verwandte Präsentationen in anderen Räumen, ich versuche die interessantesten hier aufzulisten: Singletons in PHP - Why they are bad and how you can eliminate them from your applications Gordon Oh. Session - [Zend_Config_Ini, Arrays und die Vererbung](https://phpgangsta.de/zend_config_ini-arrays-und-die-vererbung) - Ich mag .ini Konfigurationsdateien, und deshalb nutze ich auch bei Zend Framework Projekten immer die application.ini . Damals habe ich gelernt dass man Arrays so definiert: Im ZendFramework Code kann ich dann das server-Array so nutzen: Funktioniert wunderbar, es werden alle Einstellungen der production Sektion geerbt und ich habe in der Entwicklungsumgebung andere Server als - [2-Klick-Empfehlungsbuttons von Heise und Plugin](https://phpgangsta.de/2-klick-empfehlungsbuttons-von-heise-und-plugin) - Ihr habt es ja wahrscheinlich in den letzten Tagen gelesen und gehört, dass es einen kleinen Streit zwischen Heise Online und Facebook gab. Es ging um die Einbindung einer Social Media Leiste auf den Seiten von Heise Online, wobei die Buttons von Facebook, Twitter und Google+ jedoch nicht normal eingebunden wurden (Javascript von den jeweiligen - [Praxis-Workshop PHP Basics: Web-basierte Systeme mit PHP und MySQL](https://phpgangsta.de/praxis-workshop-php-basics-web-basierte-systeme-mit-php-und-mysql) - Heute habe ich ein interessantes Praxis-Workshop-Seminar für PHP-Einsteiger anzubieten, inklusive Rabatt! Wer also gerade beginnt, PHP und MySQL etc. zu lernen sollte auf jeden Fall einen Blick werfen: Praxis-Workshop PHP Basics: Web-basierte Systeme mit PHP und MySQL Exklusiv für unsere Communitymitglieder bietet die Deutsche Informatik-Akademie Sonderkonditionen bei Buchung dieses 2-tägigen Praxisworkshops an: Einfach bei Anmeldung - [HTML 5 und Javascript 5: Clientseitige Datenbanken](https://phpgangsta.de/html-5-und-javascript-5-clientseitige-datenbanken) - Nachdem sich die Web Hypertext Application Technology Working Group (WHATWG) 2004 gegründet hat, die aus einigen bedeutenden Internet-Riesen besteht (u.a. Apple, Mozilla, Opera), kommt wieder Fahrt in neue HTML- und Javascript-Standards. Die Gruppe hat viele Proposals erstellt, von denen jetzt einige vom W3C übernommen werden. Stichworte sind da HTML 5, ECMAScript 5, Web Workers, Web - [Aktion: Die kleinste Blogsoftware der Welt!](https://phpgangsta.de/aktion-die-kleinste-blogsoftware-der-welt) - Inspiriert durch Stefan Wienströers Artikel auf SteviesWebsite möchte ich hier dazu aufrufen, den Rekord für das "kleinste Blog System der Welt" zu brechen! Es geht darum eine Blogsoftware zu schreiben mit möglichst wenig Code. Stefan hat es mit 894 Byte geschafft, ein ganz rudimentäres CMS zu schreiben (das aber nicht ganz unten stehenden Regeln erfüllt). - [IMAP-Emails lesen mit dem Zend Framework](https://phpgangsta.de/imap-emails-lesen-mit-dem-zend-framework) - Emails werden nicht nur von Menschen für Menschen geschrieben, sie werden auch häufig zur asynchronen Kommunikation zwischen Rechnern und Programmen eingesetzt. In der Vergangenheit habe ich bereits einige Scripte geschrieben die Emails periodisch abholen und bearbeiten. Darunter waren zum Beispiel Backup-Benachrichtigungen von einem Programm das früher nicht in der Lage war, die Ergebnisse in eine - [Der Klasse neue Kleider: Traits](https://phpgangsta.de/der-klasse-neue-kleider-traits) - Gastartikel von Thomas Worm. Ich bin 23 Jahre alt und Verbundstudent bei der DATEV eG. Bereits seit Schulzeiten befasse ich mich intensiv mit der Webentwicklung in PHP. Der Erfahrungsschwerpunkt hierbei liegt auf der Programmierung barrierefreier Portalsysteme, die auf Typo3 aufsetzen (wie z.B. huerdenlos.de). Einführung Mit der bald erscheinenden PHP-Version 5.4 wird ein neues Sprachkonstrukt in - [Linkpool Nummer 23](https://phpgangsta.de/linkpool-nummer-23) - Dinge die man mit curl machen kann: http://www.ivankristianto.com/web-development/programming/things-you-can-do-with-php-curl/1454/ PHP 5.4 Traits: http://www.kingcrunch.de/blog/2011/08/01/php5-4-traits-aka-horizontal-reuse/ Interessante "open-source cloud storage and filesharing application": http://www.syncany.org/ Gute Artikelserie, die den Umstieg von Apache auf nginx beschreibt: http://blog.itws.de/747/debian-von-apache-zu-nginx-teil-1-vorwort/ APC Statistiken und Monitoring Script für Nagios: http://www.lecentre.net/blog/archives/1311 Security Audit Ergebnisse von Symfony 2: http://symfony.com/blog/symfony2-security-audit Ein Brainfuck-Interpreter in PHP: http://www.phpmonkeys.de/2011/10/06/ein-interpreter-in-php-teil-1/ - [Zeigt her eure Arbeitsplätze!](https://phpgangsta.de/zeigt-her-eure-arbeitsplatze) - Viele von uns verbringen viel Zeit am Rechner, und jeder Arbeitsplatz sieht anders aus. Um hier mal etwas Farbe in den Blog zu bekommen rufe ich dazu auf, Fotos von eurem Arbeitsplatz zuhause und im Büro zu machen und hier zu posten! Idealerweise ohne vorher großartig aufzuräumen ;-) Ich mache mal den Anfang: Hier mein - [Fast by Default – O’Reilly Media’s Velocity Konferenz kommt nach Berlin!](https://phpgangsta.de/fast-by-default-–-o’reilly-media’s-velocity-konferenz-kommt-nach-berlin) - Velocity, die erfolgreiche Web Performance and Operations Konferenz produziert von O’Reilly Media, kommt zum ersten Mal nach Europa! Am 8. und 9. November trifft sich die internationale Web Developer Szene im Berliner Maritim proArte Hotel, um ihr Wissen über Skalierbarkeit, Zuverlässigkeit und Schnelligkeit von Webseiten auszutauschen. Auf die Teilnehmer warten zwei spannende Tage mit exzellenten - [Mein Artikel über den Yubikey im PHP Magazin 3.11](https://phpgangsta.de/mein-artikel-uber-den-yubikey-im-phpmagazin-3-11) - Vor 6 Monaten erschien mein Artikel über den Yubikey im PHP Magazin. Da es ein Exklusiv-Artikel war konnte ich ihn leider hier nicht posten, doch jetzt ist die Schonfrist vorbei! ;-) Für diejenigen unter euch die das PHP Magazin nicht lesen (tztztz) hier das PDF meines Artikels über den Yubikey im PHP Magazin. Wenn ihr - [Archivierung mit 7-Zip in PHP](https://phpgangsta.de/archivierung-mit-7-zip-in-php) - Um Zip-Dateien zu packen und zu entpacken wird häufig die ZipArchive-Klasse in PHP genutzt, das ist einfach und unkompliziert, Beispiele dafür befindet sich im PHP Manual. Ein weiteres verbreitetes Komprimierungsformat ist RAR, doch PHP kann damit nativ nicht umgehen. Nehmen wir an wir bekommen RAR-Dateien hochgeladen und wollen sie entpacken. Wie machen wir das? Wir - [Linkpool Nummer 22](https://phpgangsta.de/linkpool-nummer-22) - PHP in the Dark: Angels, Daemons & Zombies: Shellscripte, Crons, Daemons, Angel-Scripts, Inter-Process-Communication. Lesenswert! http://www.slideshare.net/jkeppens/php-in-the-dark Eine gute Diskussion bei Nils über Quick-and-Dirty Programmierung, schnell auf den Markt und dann verbessern falls das neue Feature angenommen wird, oder verwerfen, wenig Zeit verlieren: http://www.phphatesme.com/blog/softwaretechnik/quick-and-dirty-auf-bewahrung/ Ulf Wendel ist "Still in love - PHP Unconference 2011 (Hamburg)" http://blog.ulf-wendel.de/?p=314 Der - [Browserverteilung hier im Blog und überhaupt](https://phpgangsta.de/browserverteilung-hier-im-blog-und-uberhaupt) - Da ich heute kein richtiges technisches Thema habe dachte ich ich poste mal ein paar Zahlen über die aktuelle Browserverbreitung. Zuerst meine Zahlen der letzten 30 Tage: So oder ähnlich sehen wohl die Verteilungen auf Seiten für eher technisch Interessierte Besucher aus. Hier noch Details zu den Firefox- und IE Versionen: Wer surft hier mit - [Gewinner des Tickets für die Unconf](https://phpgangsta.de/gewinner-des-tickets-fur-die-unconf) - Der MySQL-Server hat entschieden, das Ticket für die PHP-Unconference nächstes Wochenende geht an: ... SiGa !!! Glückwunsch! Bitte melde dich bei mir (), damit ich dir den weiteren Ablauf erklären kann wie du dein kostenloses Ticket bekommst. Nochmals ein herzliches Dankeschön an TEQneers für das Ticket! Achso, der SQL-Query der den Sieger bestimmt hat war - [Last-Minute-Ticket zur PHP Unconf in Hamburg zu verschenken!](https://phpgangsta.de/last-minute-ticket-zur-php-unconf-in-hamburg-zu-verschenken) - Die PHP Unconference 2011 in Hamburg findet nächstes Wochenende statt, und ich habe von Timo Buhmann, CTO der TEQneers GmbH, ein Ticket bekommen das ich an einen von euch vergeben kann! TEQneers ist Bronzesponsor der Unconf und hatte noch ein Ticket übrig. Wer also am 10. und 11. September noch nichts vor hat, kein Ticket - [Linkpool Nummer 21](https://phpgangsta.de/linkpool-nummer-21) - Dieses Mal sind es ein paar mehr Links geworden, damit solltet ihr locker über das Wochenende kommen. Die guten Entwickler drücken häufig F5: http://www.eschrade.com/page/the-best-developers-hit-f5/ Herausfinden ob das PHP Script über eine TTY-Schnittstelle aufgerufen wurde: http://brian.moonspot.net/tty-or-interactive-terminal-in-php Ein "Open Platform as a Service"-Projekt mit PHP Support, muss ich mir dringend mal im Detail anschauen: http://www.cloudfoundry.org Der Streit - [Animierte CAPTCHAs und GIFs selbst erstellen](https://phpgangsta.de/animierte-captchas-und-gifs-selbst-erstellen) - Da ich noch nie mit PHP ein animiertes GIF erstellt habe wollte ich das mal testen. Um auch etwas halbwegs sinnvolles zu tun habe ich eine Klasse erstellt die animierte CAPTCHAs erstellen kann. Bei animierten GIFs und PHP gibt es im Prinzip 2 Lösungen: Man nutzt Imagick, oder man baut das GIF-Format binär nach. Für - [Die Reporting-Funktion der Content-Security-Policy (CSP)](https://phpgangsta.de/die-reporting-funktion-der-content-security-policy-csp) - CSP hatte ich vor fast 2 Jahren bereits vorgestellt, mittlerweile hat es eine gute Verbreitung gefunden, sodass wir uns nochmals die Details anschauen. CSP ist ein Header, den der Server an den Browser schickt, und darin festlegt, von wo Javascripte, Bilder, CSS, Media-Dateien und mehr geladen werden dürfen. Mit sinnvollen Einstellungen ist es möglich, Cross - [PHP und Apache Versionen von PHP Blogs](https://phpgangsta.de/php-und-apache-versionen-von-php-blogs) - Ich habe mal einen kleinen Test gemacht: Ich habe die PHP-Blogs aus meiner großen PHP-Blog Sammlung genommen, dazu noch einige Ergebnisse wenn man nach "php blog" googled, und mir die PHP-Versionen angeschaut, wenn welche angegeben sind. Und bei einigen kann ich nur mit dem Kopf schütteln. Aktuell sind zur Zeit: PHP 5.3.8 und PHP 5.2.17, - [Text in Bild einfügen: ImageLabeler](https://phpgangsta.de/text-in-bild-einfugen-imagelabeler) - Heute gibts ein kleines Script, das zu einem gegebenen Bild einen Text hinzufügt, also beispielsweise einen Copyright-Hinweis rechts unten einfügt. Im Bild rechts sieht man wie ich den Text 'PHPGangsta' in der Position rechts unten eingefügt habe, mit roter Schriftfarbe und weißer Umrandung. Es ist die erste Version mit Basisfunktionalität. Aktuell können beeinflusst werden: Text - [PHPStorm 20% Rabatt Code noch bis zum 01.09.2011](https://phpgangsta.de/phpstorm-20-rabatt-code-noch-bis-zum-01-09-2011) - 20% Rabatt auf die aktuell beste PHP Entwicklungsumgebung (IDE) gibts mit einem Rabatt-Code den ich euch geben kann und der noch bis zum 1. September gültig ist. Seit März habe ich mehr als 250 Coupons rausgeben können, und es soll sich natürlich niemand beschweren dass er es vergessen oder nicht mitbekommen hat, deshalb hier nochmal - [Manipulationen erkennen - Bemerken dass man gehackt wurde](https://phpgangsta.de/manipulationen-erkennen-bemerken-dass-man-gehackt-wurde) - In viele Webseiten wird heutzutage eingebrochen und es werden Änderungen an der Webseite durchgeführt. Das kann die selbst programmierte Webseite sein bei der man eine Lücke eingebaut hat, das kann aber auch ein installiertes Wordpress oder Joomla sein. Häufig sind solche Angriffe nicht geziehlt, sondern werden mittels automatischer Scripte durchgeführt, die dann auf allen anfälligen - [Linkpool Nummer 20](https://phpgangsta.de/linkpool-nummer-20) - Serverseitige interne Informationen aus PHP-Applikationen im Client anzeigen, .NET macht vor was möglich ist: http://blog.maartenballiauw.be/post/2011/08/02/A-client-side-Glimpse-to-your-PHP-application.aspx PHP Sessions in node.js speichern: http://gonzalo123.wordpress.com/2011/07/25/using-node-js-to-store-php-sessions/ Verteiltes Map-Reduce: http://www.phpmonkeys.de/2011/08/03/mapreduce/ Cross Browser Test Tool Übersicht http://www.smashingmagazine.com/2011/08/07/a-dozen-cross-browser-testing-tools/ HTML5 und CSS3 Features schön animiert gezeigt: http://beta.theexpressiveweb.com/ Ausflug in die Spieleentwicklung mit Javascript und dem Canvas Element: http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2009/06/29/game-development-with-javascript-and-the-canvas-element.aspx Gute Zusammenfassung zu sicheren Login-Formularen und - [PDFs dynamisch generieren: viele Möglichkeiten](https://phpgangsta.de/pdfs-dynamisch-generieren-viele-moeglichkeiten) - Oft hat man eine Webseite in die man auch eine Export-Möglichkeit einbauen möchte, scheut aber den großen Aufwand, PDFs etc. zu generieren. Doch es gibt auch einfache schnelle Lösungen, die meistens ausreichen. Hier möchte ich einige im Überblick aufzählen. Einfach HTML nehmen und daraus ein PDF basteln. Viele Daten, die wir bereits auf der Webseite - [Der Stand von HTML5](https://phpgangsta.de/der-stand-von-html5) - Da viele von uns wahrscheinlich bereits HTML5 Webseiten erstellen oder ältere Seiten um HTML5-Features erweitern ist es wichtig zu wissen welcher Browser welches Feature unterstützt, um abschätzen zu können wieviel Prozent der Besucher das neue Feature nutzen können und wie viele nicht. Die wohl korrekteste Methode das herauszufinden ist auf die aktuelle Webseite ein paar - [Das SMTP Protokoll im Detail betrachtet](https://phpgangsta.de/das-smtp-protokoll-im-detail-betrachtet) - Vor einem Jahr habe ich bereits das IMAP-Protokoll näher betrachtet, nun soll das SMTP Protokoll folgen. Jeder versendet und empfängt E-Mails, und viele von euch werden auch eigene Mailserver betreiben, es kann also nicht schaden das Protokoll näher zu kennen. SMTP steht für Simple Mail Transport Protocol, und genau das ist es auch: Simple. Mit - [Continuous Testing mit PHP?](https://phpgangsta.de/continuous-testing-mit-php) - Continuous Integration ist einigen eventuell ein Begriff. Dabei geht es darum, einen Server zu haben der bei jedem Commit (bzw. Push) des Quelltextes Dinge ausführt wie Unit Tests, Akzeptanz-Tests, PHP Lint, CodeSniffer oder auch ein Deployment auf einen Test-Rechner. Wenn man nun also häufig pushed kann man sicher sein dass (bei genügend guten Tests) die - [IPC 2011, Very Early Bird, 200 Euro sparen + Netbook](https://phpgangsta.de/ipc-2011-very-early-bird-200-euro-sparen-netbook) - Erstmal vorweg: Happy Birthday zum Geburtstag an PHP hates me und seinem Autor Nils zum 3-jährigen Bestehen! Mach weiter so, wir sehen uns auf der Unconference in Hamburg und auch auf der IPC! Es ist DIE Konferenz in Deutschland, die International PHP Conference, die in diesem Jahr vom 9.-12. Oktober stattfinden wird. Der Zeitplan der - [Die letzten Tickets für die PHP-Unconference in Hamburg](https://phpgangsta.de/die-letzten-tickets-fur-die-php-unconference-in-hamburg) - Wenn ich es richtig sehe sind von gestern Abend noch ca. 20 Tickets übrig, dann sind die 300 voll. Falls ihr also für 35 Euro an der PHP Unconf in Hamburg teilnehmen möchtet ist jetzt die letzte Chance. http://www.php-unconference.de/ticketverkauf/ - [Dieser Schlüssel zerstört sich in 30 Sekunden selbst](https://phpgangsta.de/dieser-schlussel-zerstort-sich-in-30-sekunden-selbst) - Dieser Artikel beschäftigt sich mit dem Zugang zu Servern auf der Basis von Zertifikaten ab OpenSSH 5.8. - [Zwei Jahre PHP Blogging: Ihr werdet beschenkt!](https://phpgangsta.de/zwei-jahre-php-blogging-ihr-werdet-beschenkt) - *tröööt* Zwei Jahre, zwei kurze Jahre, wird dieser Blog gefüllt mit PHP- und anderen Webtechnik-Artikeln, und auch einige Gastautoren haben bereits hier veröffentlicht (es könnten aber gern noch mehr werden!), und dieser Blog wäre nichts ohne euch Leser, die ihr durch Feedback und Ergänzungen zur Diskussion und Wissensbildung beitragt. Deshalb möchte ich mich bei euch - [Nie wieder Internet](https://phpgangsta.de/nie-wieder-internet) - Gestern hörte ich eine interessante Frage, bei der ich nicht genau weiß wie meine Antwort ausfallen würde. Und ihr seid genau die richtigen, sie auch zu beantworten. Also: Für wie viel Geld würdet ihr lebenslang auf das Internet verzichten? Ihr würdet wahrscheinlich den Beruf wechseln müssen und könntet natürlich hier auch nicht mehr kommentieren bzw. - [Punycode, IDN: Welche Probleme es bei Umlaut-Domains in PHP gibt](https://phpgangsta.de/punycode-idn-welche-probleme-es-bei-umlaut-domains-in-php-gibt) - Naja, eigentlich betrifft es nicht nur Umlaut-Domains hier in Deutschland, sondern allgemein alle Internationalized Domain Names auf der Welt. Also, was passiert wenn wir eine E-Mail an info@müller.de verschicken möchten? Was passiert wenn wir eine an die griechische Domain info@παράδειγμα.δοκιμή verschicken wollten? Was passiert wenn wir auf Port 80 des Webservers von www.müller.de zugreifen wollen? - [Linkpool Nummer 19](https://phpgangsta.de/linkpool-nummer-19) - Von guten und schlechten Zufallszahlen. http://blog.ircmaxell.com/2011/07/random-number-generation-in-php.html Performance Probleme beim ternären Operator: http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not URL Hunter, nettes Spielchen! http://probablyinteractive.com/url-hunter PHP Storm 2.1.2 veröffentlicht http://blogs.jetbrains.com/webide/ RabbitMQ, die Advanced Message Queue: http://bradley-holt.com/2011/07/exploring-rabbitmq-and-php/ - [Passwort Blacklist](https://phpgangsta.de/passwort-blacklist) - Kunden, die eine Webseite mit Registrierung und Login benötigen kann man nicht immer davon überzeugen, strenge Passwortrichtlinien anzusetzen. Wenn ich vorschlage "10 Zeichen, davon mindestens eine Zahl, ein Großbuchstabe und ein Sonderzeichen" wird das nicht selten abgelehnt, mit Hinweisen auf "Dann sinkt die Conversion-Rate", "Dann vergessen die Kunden andauernd ihr Passwort und wir haben mehr - [Mehrere Scripte via Cronjob parallel aufrufen](https://phpgangsta.de/mehrere-scripte-via-cronjob-parallel-aufrufen) - Heute ein kleines Problemchen mit Cronjobs und Parallelität. Normalerweise empfehle ich Gearman wenn es darum geht, mehrere Scripte im Hintergrund laufen zu lassen, aber nehmen wir an dass wir es mit normalen Cronjobs ohne Gearman lösen wollen. Wir haben also das Script work.php. Wir möchten alle 5 Minuten die Datenbank prüfen ob es Arbeit gibt, - [Schöner hashen mit bcrypt](https://phpgangsta.de/schoener-hashen-mit-bcrypt) - Dieser Artikel beschäftigt sich mit den Eigenschaften der Hashfunktion bcrypt und wie man sie richtig mit PHP nutzen kann. - [Linkpool Nummer 18](https://phpgangsta.de/linkpool-nummer-18) - Ergänzend zum Blog-Artikel "Sichere Passwörter" diese Woche: http://bigwhoop.ch/artikel/85/2011-07-03/Passwoerter-sicherer-speichern 7 Hinweise, eine sichere PHP Applikation zu erstellen: http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html In 5 Schritten zur "Offline-HTML5-Web-App": http://www.catswhocode.com/blog/how-to-create-offline-html5-web-apps-in-5-easy-steps Wie man Zend_Config beschleunigen kann: http://www.matt-knight.co.uk/2011/optimising-zend-config/ Cross-Site-Scripting(XSS) Lücke in Skype: http://t3n.de/news/skype-sicherheitslucke-formular-fuhrt-schadhaften-code-321221/ Mozillas Alternative zu OpenID: BrowserID http://www.golem.de/1107/84969.html - [2. Phase des Ticketverkaufs der PHP Unconference 2011 in Hamburg](https://phpgangsta.de/2-phase-des-ticketverkaufs-der-php-unconference-2011-in-hamburg) - Heute um ca. 14 Uhr beginnt die zweite Phase beim Verkauf der Tickets für die PHP-Unconference 2011 in Hamburg, die nächsten 100 Tickets kommen unter den Hammer. Ich kann jedem empfehlen dort hinzufahren, 35 Euro ist für eine PHP-Konferenz ein super Preis, dafür gibt es eine Menge Talks und 300 PHP Interessierte, viel Zeit und - [Per Index auf einen assoziativen Array zugreifen](https://phpgangsta.de/per-index-auf-einen-assoziativen-array-zugreifen) - Hä? Was ist das denn für eine Überschrift? Das geht doch garnicht! Richtig, normalerweise geht das nicht, aber mit etwas tricksen schon. Wir haben das folgende Array und möchten den 4. Wert haben, ohne aber den Key zu kennen. Bei einem 0-basierten Array wäre es also das Element mit dem Index 3: Wie zu erwarten - [Slides der Dutch PHP Conference 2011](https://phpgangsta.de/slides-der-dutch-php-conference-2011) - In unserem Nachbarland gab es vorletztes Wochenende wieder viel wissenswertes auf der Dutch PHP Conference 2011 zu hören, an 3 Tagen gab es 35 Talks und 7 Tutorials auf die Ohren. Da ich leider dieses Jahr nicht dort sein konnte hier die Liste der Talks inklusive Slides soweit vorhanden: 19. Mai 2011 ZCE 5.3 Exam - [Auf Warnings, Notices und sogar Fatal Errors reagieren](https://phpgangsta.de/auf-warnings-notices-und-sogar-fatal-errors-reagieren) - In besonders kritischen Scripten baue ich gern zur Sicherheit noch eine erweiterte Log-Funktion ein, die auch noch aufgerufen wird bei einem FATAL ERROR oder bei einem exit() oder die() in einer Fremdbibliothek (pfui). Man kann so auch beim Vorkommen einer Notice das Script beenden, das kann manchmal sehr sinnvoll sein. Natürlich kann man mit Hilfe - [Gewinner der Verlosung zum zweiten Geburtstag](https://phpgangsta.de/gewinner-der-verlosung-zum-zweiten-geburtstag) - So, endlich habe ich Zeit die Gewinner der Verlosung preiszugeben, so ein Urlaub ist echt stressig, danach hat man immer so viel nachzuholen, unglaublich. Zuerst möchte ich mich nochmals bei allen Firmen die Preise zur Verfügung gestellt haben bedanken! Dann wollen wir uns anschauen wie die Gewinner zustande gekommen sind. Der folgende SQL Query hat - [Urlaub](https://phpgangsta.de/urlaub) - Damit ihr euch nicht wundert wenn in den nächsten 2 Wochen keine neuen Artikel erscheinen: Ich werde heute in den Urlaub nach Norwegen aufbrechen und 2 Wochen internet-abstinent leben. Aber ihr habt während dieser Zeit mindestens 2 Aufgaben: Macht mit beim Gewinnspiel zum Geburtstag falls ihr noch nicht teilgenommen habt, und postet hier unter diesen - [Transparenz erhöhen bei einem Webprojekt](https://phpgangsta.de/transparenz-erhohen-bei-einem-webprojekt) - Ich habe eine interessante Anfrage erhalten, und ich bin mir nicht ganz sicher wie man das Problem am besten lösen kann. Vielleicht könnt ihr ja einige Tipps geben, was man da machen kann. Die Situation ist folgende: Der Auftraggeber hat ein Webseitenprojekt in Auftrag gegeben bei einer Internetagentur, aus Mangel an Wissen über IT-Projekte wurde - [Slides der php|tek 11](https://phpgangsta.de/slides-der-phptek-11) - Die PHP Konferenz Saison ist in vollem Gange, und auch dieses Jahr fand wieder die php|tek statt, in der 11. Auflage kamen vom 24. bis 27. Mai 2011 viele PHP Interessierte in Chicago zusammen. Das Programm inklusive Links zu den Slides: 24. Mai 2011 Mobile for PHP Developers Ivo Jansch Writing and Using PHP Streams - [Das Y2K38 Problem](https://phpgangsta.de/das-y2k38-problem) - Wer viel mit Terminen und Datumsangaben arbeitet kennt das Problem vielleicht, aber häufig fällt uns das Problem jetzt noch nicht auf, und in einigen Jahren werden wir dann Probleme bekommen. Es geht um den Unix Timestamp, also die Anzahl der Sekunden seit 1970. In PHP arbeiten Funktionen wie time() und strtotime() mit diesem Timestamp, aktuell - [Eine Rechenaufgabe lösen mit PHP](https://phpgangsta.de/eine-rechenaufgabe-losen-mit-php) - Ich bastle gerade an einem kleinen Script, das aus einer Reihe Zahlen und arithmetischen Operatoren eine Rechenaufgabe erstellt und löst. Die Rechenaufgabe besteht nicht nur aus Additionen oder Subtraktionen, sondern enthält im einfachen Beispiel auch Multiplikationen, wobei dann auf die Punkt-vor-Strichrechung geachtet werden muss, was das ganze doch etwas erschwert. Zuerst Beispielcode, damit ihr versteht - [create_function() genauso übel wie eval()?](https://phpgangsta.de/create_function-genauso-ubel-wie-eval) - Heute mal eine Sonntagsfrage: Ich überlege gerade wie ich ein Problem löse, bei dem ich wohl nur mit viel Aufwand drumherum komme, eval() zu benutzen. Auf der Suche nach einer Lösung fiel mir auch die Funktion create_function() ein, der man ähnlich wie eval() einen String übergeben kann, der dann beim Aufruf der erstellten Funktion ausgeführt - [Was ist phar und wie nutze ich es?](https://phpgangsta.de/was-ist-phar-und-wie-nutze-ich-es) - Phar ist ein Applikations-Archiv-Format genauso wie Jar es für Java ist. Ein Phar-Archiv enthält Dateien und Ordnerstrukturen, und diese Dateien können dann genutzt werden ohne die Phar-Datei zu entpacken. Man kann so seine ganze Applikation oder auch Frameworks in Phar-Dateien packen und verteilen. Phar ist seit 5.2 als PECL Erweiterung verfügbar, seit 5.3 ist es - [Slides vom phpDay 2011](https://phpgangsta.de/slides-vom-phpday-2011) - Der 7. phpDay fand vom 12. bis zum 14. Mai, diesmal wieder in Verona, statt. Vor allem englische , aber auch drei italienische Talks wurden gehalten, hier die Liste: 12.Mai 2011 Caching on the Edge Fabien Potencier Testing LAMP Applications Sebastian Bergmann Any to any - Convert your documents! Kore Nordmann Building search applications with - [Gewinner des Buches "Coders at Work"](https://phpgangsta.de/gewinner-des-buches-coders-at-work) - Hier möchte ich kurz den Gewinner der Aktion vom letzten Freitag preisgeben. Gewonnen hat das Buch Coders at Work Christian mit einer 2113 Bytes großen E-Mail, herzlichen Glückwunsch! Ich habe dich gerade angeschrieben zwecks Adresse. Das wars auch schon für heute. - [Zweiter Konferenztag in Berlin](https://phpgangsta.de/zweiter-konferenztag-in-berlin) - Da ich mir gestern die Parkgebühr im Maritim-Hotel (25 Euro) sparen wollte bin ich mit Bus und U-Bahn die 3 Kilometer gefahren. Etwas Unwissenheit gepaart mit komischer Hausnummernvergabe und nicht funktionierendem GPS ließen mich nach 45 Minuten am Tagungsort ankommen. Der Vormittag bot bereits interessante Sessions. Wieviel Performance man durch geschickte Optimierungen im Frontend herausholen - [Kleines Script zum Aufräumen](https://phpgangsta.de/kleines-script-zum-aufraumen) - Ich stand kürzlich vor dem Problem, ein Verzeichnis aufräumen zu müssen, in dem andauernd neue Dateien abgelegt werden, von denen ich aber nur die aktuellsten 5 Dateien behalten möchte. Gesagt getan. Erster Schritt ist die Erstellung einer Liste mit allen Dateien um die es geht. Da in dem Verzeichnis noch andere Dateien liegen lasse ich - [Buchvorstellung: PHP Sicherheit](https://phpgangsta.de/buchvorstellung-php-sicherheit) - Ein weiteres Werk von meinem Berg ist durchgearbeitet: Das 333 Seiten starke Standard-Werk zu "PHP Sicherheit" von Christopher Kunz und Security-Guru Stefan Esser, den viele wahrscheinlich von seinem "Month of PHP Bugs" oder der PHP-Erweiterung Suhosin kennen. Vor mir liegt die 3. Auflage aus dem Jahr 2008, und ich kann auch schon mal vorweg nehmen, - [Pimcore - Interessantes OpenSource CMS](https://phpgangsta.de/pimcore-interessantes-opensource-cms) - Ein Gastbeitrag von Tim Glabisch Junger Software und Webentwickler aus Düsseldorf, Vollzeit bei anyMOTION Graphics GmbH und auf jedem Treffen der PHP UG Düsseldorf dabei. Wir haben regelmäßig die interessante Aufgabe, für Kunden Content Management Systeme zu evaluieren. Typische Vertreter, welche wir eingesetzt haben, sind Drupal, TYPO3 4.x, Wordpress und viele weitere. Daraufhin bin ich - [PHPStorm 20% günstiger, hier bei mir](https://phpgangsta.de/phpstorm-20-gunstiger-hier-bei-mir) - Nach der Vorstellung der Version 2 von PHPStorm vorgestern habe ich tolle News: Eugene von JetBrains hat mir Coupon-Codes gegeben, mit denen ihr die Personal License von PHPStorm 2.0 20% günstiger bekommt! Die Personal License (die ich auch besitze) erlaubt es dem Entwickler, die Software auf so vielen Rechnern parallel zuinstallieren wie er möchte (zu - [Linkpool Nummer 17](https://phpgangsta.de/linkpool-nummer-17) - Länger gab es keine Links mehr von mir, nun aber eine etwas größere Sammlung für diesen bewölkten Sonntag: Mit Node.js und PHP-FPM PHP laufen lassen https://github.com/davidcoallier/node-php Mit der RRD-Extension RRD-Graphen erstellen http://www.phparch.com/2011/02/creating-rrd-graphs-in-php/ Wenn man die Funktionen system() oder exec() nicht einschränkt, können Angreifer damit großen Schaden anrichten. Mit der Amon.so Library kann eine Whitelist erstellt - [Versprechen einlösen: Kommentaranzahl -> Buch Verlosung](https://phpgangsta.de/versprechen-einlosen-kommentaranzahl-buch-verlosung) - Wer die Kommentare des PHPStorm Artikels hier im Blog verfolgt hat, hat vielleicht gelesen dass ich mir im Falle eines neuen Kommentaranzahl-Rekords etwas für euch überlegen wollte. Der alte Rekord von 162 Kommentaren zum Artikel meines ersten Bloggeburtstags wurde deutlich übertroffen, aktuell sind es 218 Kommentare, das wird echt schwer zu übertreffen sein in der - [Test von content.de, einem Inhalts-Portal](https://phpgangsta.de/test-von-content-de-einem-inhalts-portal) - Ich habe vor einigen Monaten von content.de gehört, und mich interessierte die Vorgehensweise, vor allem aber auch die Qualität der Texte, die man dort kaufen kann. Vielleicht benötigt man ja mal für eine Webseite Texte, auf die man selbst keine Lust hat ;-) Oder aber man hat selbst so viel Lust am Schreiben und möchte - [Callbacks und Hooks in PHP](https://phpgangsta.de/callbacks-und-hooks-in-php) - Dies ist ein Text, der von einem Autor auf content.de erstellt wurde. Mehr dazu im Artikel über den content.de Test. Callbacks und Hooks sind beliebte Methoden in PHP, verschiedene Funktionen untereinander kommunizieren zu lassen. Sie dienen insbesondere der Funktionserweiterung. So nutzen beispielsweise Systeme wie WordPress und Drupal Callbacks und Hooks, um Plugins und Module sauber - [PHP 5.3 Feature: Namespaces](https://phpgangsta.de/php-5-3-feature-namespaces) - Dies ist ein Text, der von einem Autor auf content.de erstellt wurde. Mehr dazu im Artikel über den content.de Test. Mit Hilfe der Skriptsprache PHP werden hauptsächlich Webanwendungen oder Webseiten erstellt. Unter der PHP-Lizenz wird PHP als freie Software verbreitet. Durch die breite Datenbankunterstützung, Internet-Protokolleinbindung und durch die Verfügbarkeit zahlreicher Funktionsbibliotheken zeichnet sich PHP aus. - [Slides der PHP Community Conference 2011](https://phpgangsta.de/slides-der-php-community-conference-2011) - An zwei Tagen im April fand die diesjährige PHP Community Conference statt. Es war keine riesen Konferenz, aber hochkarätige Speaker wie Rasmus Lerdorf, Lorna Mitchell, Matthew Weier O'Phinney und Andrei Zmievski sowie weitere bekannte PHPler waren vor Ort. Leider habe ich nicht alle Präsentationen gefunden, wenn ihr die restlichen findet, nur her damit. 21. April - [Monitoring PHP mit New Relic RPM](https://phpgangsta.de/monitoring-php-mit-new-relic-rpm) - Ich merke gerade, dass ich noch gar nicht NewRelic vorgestellt habe. In PHP-Cloud-Diensten wie CloudControl oder PHPFog bekommt man direkt auch einen NewRelic-Account, sodass man es kostenlos nutzen und testen kann. Es ist eine Möglichkeit, die Performance von PHP-Scripten zu monitoren, also sowohl Webseiten als auch PHP-CLI-Aufrufe. Es werden neben der Ausführungszeit auch Speicherverbrauch, den - [Extending and Embedding PHP](https://phpgangsta.de/extending-and-embedding-php) - Im Februar habe ich von Andre das Buch Extending and Embedding PHP von Sara Golemon angeboten bekommen, und da ich noch keinen tieferen Blick in die Erstellung von PHP Extensions geworfen habe, habe ich zugeschlagen. Wie man bei Amazon lesen kann ist es DAS Standard-Buch wenn es um PHP Erweiterungen geht. Allgemein gibt es über - [PHPStorm 60% günstiger! Bis zum 30.04.2011](https://phpgangsta.de/phpstorm-60-gunstiger-bis-zum-30-04-2011) - Als Ostergeschenk gibt JetBrains 50% Rabatt auf PHPStorm ab heute bis zum 30.04.2011. Zusammen mit meinem Gutschein über 20% ergibt das insgesamt 60% Rabatt! Statt 99€ nur noch 39€! Die neuesten Features, die in 2.1 kommen werden, sind übrigens: Eingebaute jQuery Dokumentation .htaccess Unterstützung (Autovervollständigung und Erkennung von URLs) NodeJS support plugin Eine Datei aus - [Ein eigener Zend_Auth_Adapter gegen einen IMAP Server](https://phpgangsta.de/ein-eigener-zend_auth_adapter-gegen-einen-imap-server) - Mit Hilfe von Zend_Auth kann man wunderbar Authentifizierungen durchführen, und dem Zend Framework liegen auch bereits einige Adapter bei, wie zum Beispiel DbTable, Digest, Http, InfoCard, Ldap und OpenId. In einem meiner Projekte wollte ich gegen einen IMAP-Server authentifizieren, jeder der einen IMAP-Account hat soll sich auf der Webseite einloggen können. Dazu habe ich einen - [PHP 5.3 Feature: Late static binding (LSB)](https://phpgangsta.de/php-5-3-feature-late-static-binding-lsb) - PHP 5.3 brachte unter anderem auch Late-Static-Binding (LSB). Ich würde tippen, dass einige von euch wissen was das ist, aber nur sehr wenige von euch dieses Feature bisher benötigt und eingesetzt haben. Ich möchte hier zwei kleine Beispiele zeigen, an dem klarer wird, wofür LSB benötigt wird: Je nachdem ob self:: oder static:: genutzt wird, - [Passwortrichtlinien, was tun und was nicht?](https://phpgangsta.de/passwortrichtlinien-was-tun-und-was-nicht) - Vor kurzem bin ich wieder auf das leidige Problem "Passwortrichtlinien" gekommen. Erster Punkt: Xing Das Minimum für das Passwort bei Xing beträgt 4 Zeichen. Von einer Pflicht, doch mindestens eine Zahl oder ein Sonderzeichen oder Großbuchstaben zu verwenden weit entfernt. Ist das nicht eine Einladung für Hacker/Cracker? Zweiter Punkt: NGZ Bei NGZ habe ich einen - [Ein paar Zend_Mail Tricks](https://phpgangsta.de/ein-paar-zend_mail-tricks) - Wer Mails verschickt, nutzt bei sehr einfachen (Admin) E-Mails meistens die eingebaute mail() Funktion. Sobald es aber darum geht komplexere E-Mails zu versenden wird man wahrscheinlich eine Klasse benutzten, die es einem einfacher macht, Anhänge anzuhängen, einen text/plain und einen text/html Teil mitzusenden, zusätzliche Empfänger zu definieren oder inline-Bilder gleich mit in die Email zu - [Confoo 2011, die Mega Konferenz](https://phpgangsta.de/confoo-2011-die-mega-konferenz) - Ihr sitzt zwar alle gerade wahrscheinlich vor eurer neuen PHPStorm Version oder programmiert eine Vier-Gewinnt-KI, aber trotzdem gibt es hier einige neue Präsentationen. Vom 6. bis zum 11. März 2011 fand zum zweiten Mal die Confoo in Montreal statt. Stolze 144 Talks, 3 Workshops und eine Keynote, bis zu 8 Sessions gleichzeitig, was für ein - [Der Vier Gewinnt Server zur iBuildings Challenge](https://phpgangsta.de/der-vier-gewinnt-server-zur-ibuildings-challenge) - ibuildings hat Anfang diesen Jahres einen Wettbewerb gestartet bei dem man ein möglichst gut spielendes Vier-Gewinnt PHP-Script erstellen soll. Der Einsendeschluss ist der 31.03.2011, ihr könnt also auch noch teilnehmen! Da ich auch eine KI erstellt habe (bin sehr gespannt auf das Ergebnis des Turniers) möchte ich hier meine kleine Vier-Gewinnt-Webseite vorstellen, die ich während - [PHP Clouds und Platform as a Service (PaaS): cloudControl](https://phpgangsta.de/php-clouds-und-platform-as-a-service-paas-cloudcontrol) - Wie bereits gestern in der PHP-PaaS-Übersicht angekündigt hier nun die Nutzung eines PHP-PaaS-Dienstes anhand von cloudControl, dem aktuell einzigen am Markt befindlichen Anbieter für PHP-Clouds (2 weitere stehen bereits in den Startlöchern, siee Übersicht). Ein weiterer Vorteil ist dass cloudControl eine deutsche Firma ist und aktuell auf den Amazon EC2 Servern in Irland hostet, und - [PHPStorm 2.0 - meine favorisierte IDE für PHP](https://phpgangsta.de/phpstorm-2-0-meine-favorisierte-ide-fur-php) - Am 14. Februar 2011 ist PHPStorm 2.0 erschienen, also vor einem Monat, höchste Zeit sich die neue Version genauer anzuschauen und die Features zu beleuchten. Seit dem ersten Tag, an dem ich PHPStorm kennengelernt habe, möchte ich es nicht mehr missen, ich trauere eclipse PDT keine Träne nach. Natürlich könnte ich nun eine lange Liste - [Abhängigkeiten automatisiert verwalten mit Pundle](https://phpgangsta.de/abhangigkeiten-automatisiert-verwalten-mit-pundle) - Ein Gastbeitrag von Timo Puschkasch Student aus Stuttgart, seit längerem als Webentwickler mit PHP und Ruby sowie gelegentlich als Blogger tätig. Seit kurzem auch in der UG Stuttgart anzutreffen. Lead Developer des vorgestellten Projekts. Es gibt heutzutage zwei Arten von PHP-Anwendungen: die Einen bringen ihre Abhängigkeiten in einem riesigen zip-Archiv mit und arbeiten entweder mit - [Symfony Live Paris 2011 Slides](https://phpgangsta.de/symfony-live-paris-2011-slides) - Am 2. bis 5. März diesen Jahres fand die Symfony Live 2011 in Paris statt. Am 2. fand ein Trainings-Tag statt, am 5. war der Hacking Day, und dazwischen 2 Tage Konferenz. Viele Talks behandeln natürlich das Symfony 2 Framework, es sind aber auch einige generelle PHP Themen dabei, und vielleicht kann man sich bei - [Linkpool Nummer 16](https://phpgangsta.de/linkpool-nummer-16) - Interessante Einsichten, wie t3n.de gehostet wurde die letzten Jahre: Massenhosting, eigener Serverraum, Housing und nun Individualhosting: http://t3n.de/news/t3nde-gehostet-290436/ Hat jemand schon Erfahrungen mit diesem PHP Application Server? http://www.photon-project.com/ Interessante ZendCon Session Podcast Episode über die Memcached Extension: http://devzone.zend.com/article/13104-ZendCon-Sessions-Episode-040-Memcached-the-better-Memcache-interface Audio Mitschnitt + Präsentation von der Dutch PHP Conference 2010 über Datenbankversionierung: http://techportal.ibuildings.com/2011/03/01/dpcradio-database-version-control-without-pain/ Auch von der Dutch PHP - [Slides der PHP London Conference 2011: PHPUK2011](https://phpgangsta.de/slides-der-php-london-conference-2011-phpuk2011) - Am 24. und 25. Februar fand die PHP London Conference 2011 statt. Eine sehr gut dokumentierte Konferenz, ich habe zu jedem Talk die Slides finden können: EDIT: Nun sind auch alle Vorträge als Video verfügbar! Growing up with PHP Andrew Betts PHP in a Mobile Ecosystem Ivo Jansch HTML5 and CSS3 Today Martin Beeby ZeroMQ - [Slides der PHP Unconference Europe 2011 in Manchester](https://phpgangsta.de/slides-der-php-unconference-europe-2011-in-manchester) - Ich habe schwer überlegt, nach Manchester zu fliegen und an der europäischen PHP Unconference teilzunehmen, die Hamburger Unconference ist ja ein Highlight jedes Jahr. Doch Kosten von knapp 250 Euro (Flüge, Hotelzimmer, Eintritt etc.) für 2 Tage haben mich dann doch abgeschreckt. Man merkte auch deutlich, dass die Resonanz recht gering war, die Tickets waren - [PHP Clouds und Platform as a Service (PaaS): Übersicht](https://phpgangsta.de/php-clouds-und-platform-as-a-service-paas-ubersicht) - "Claudia hat in der Cloud Klaus das Herz geklaut". Die Cloud ist mittlerweile kein reiner Hype mehr, sondern scheint sich zu manifestieren, und es gibt mehr und mehr Anbieter mit interessanten Angeboten, wo in bestimmten Situationen eine Cloud Sinn macht. Wir sollten uns aber klar machen, dass die Cloud nicht die Lösung für alles ist, - [UDP Nachrichten versenden und empfangen](https://phpgangsta.de/udp-nachrichten-versenden-und-empfangen) - Das Transport Protokol UDP ist der kleine Bruder von TCP. UDP ist nicht verlässlich, die Reihenfolge der Pakete ist beim Empfänger eventuell eine andere als beim Absender und es gibt nur eine Fehler-Erkennung, aber keine Fehler-Korrektur. Doch UDP bietet auch Vorteile: Es ist deutlich schneller als TCP (schneller meint hier dass die Pakete schneller beim - [Linkpool Nummer 15](https://phpgangsta.de/linkpool-nummer-15) - http://www.incloud.de/blog/2011/02/programming-professional-javascript-while-staying-sane http://karrierebibel.de/suchthilfe-25-anzeichen-dass-sie-social-media-abhangig-sind/ http://www.dotdeb.org/2011/01/31/lets-monitor-your-php-applications-with-pinba/ http://www.harrieverveer.com/2011/02/01/benchmarking-xdebug/ SQL Injection: Bild von http://bullshit.tumblr.com/post/3208223711/jacobjoaquin-r03-urban-sql-injection - [Welche PHP-Feeds habt ihr in eurem Reader?](https://phpgangsta.de/welche-php-feeds-habt-ihr-in-eurem-reader) - Da ich immer auf der Suche bin nach tollen Web-Blogs und speziell PHP-Artikeln (egal ob deutsch oder englisch) frage ich doch mal hier in die Runde nach eurer Liste der Feeds, die ihr gern lest. Ich fasse dann alle hier oben zusammen, damit ihr euch auch interessante raussuchen könnt die ihr noch nicht kennt. http://manuel-pichler.de - [PHP in_array() die Performance-Bremse](https://phpgangsta.de/php-in_array-die-performance-bremse) - Dies ist ein Gastartikel von Dominik Siebel. Dominik ist 25 Jahre alt und arbeitet als Webentwickler und Consultant bei TWT Business Solutions GmbH in Düsseldorf. Sein Hauptaufgabenbereich ist die Entwicklung von Inter- und Intranetapplikation im Zusammenspiel mit Google Enterprise Produkten (GSA) auf Basis gängiger Technologien: MySQL, PHP, Java, jQuery, etc. Einleitung Ich bin kürzlich erst - [Softwarequalität in PHP Projekten](https://phpgangsta.de/softwarequalitat-in-php-projekten) - Ein deutsches PHP Buch zum Thema Softwarequalität, von wem könnte das wohl sein? Von den 20 großen PHP-Experten in Deutschland sind mindestens 8 an dem Buch Softwarequalität in PHP Projekten beteiligt. Autoren sind Sebastian Bergmann und Stefan Priebsch, aber es gibt auch große Co-Autoren-Kapitel von Benjamin Eberlei (direct:effekt), Tobias Schlitt, Kore Nordmann und Manuel Pichler - [Farben in der Kommandozeile nutzen](https://phpgangsta.de/farben-in-der-kommandozeile-nutzen) - Wenn man nur Webseiten erstellt braucht man im Normalfall keine Konsolenscripte, aber bei Cronscripten oder anderen Administrationshelfern wird die CLI-Fähigkeit von PHP häufig genutzt. Manchmal möchte man dabei eine farbige Ausgabe, sprich farbige Schrift und farbigen Hintergrund, um Fehler oder wichtige Meldungen auszugeben und die Ausgabe etwas zu strukturieren. Hier meine einfache Klasse, die farbige - [Kleine Aufgabe: Ein Array umbauen](https://phpgangsta.de/kleine-aufgabe-ein-array-umbauen) - Eine kleine Aufgabe, die es zu lösen gibt. Ich habe folgendes Ausgangsarray, das nur positive ganze Zahlen enthält, die nur einmal vorkommen: und möchte: Es sollen also alle zusammenhängenden Arrayelemente zusammengefasst werden, um das Array kleiner zu machen (weniger Speicherplatz/Traffic). In einem zweiten Schritt soll dann dieses Array wieder zurück umgewandelt werden in das Original: - [Slides der PHPBenelux Conference 2011](https://phpgangsta.de/slides-der-phpbenelux-conference-2011) - Am 28. und 29. Januar 2011 fand die PHPBenelux Konferenz 2011 statt, und es waren wieder interessante Vorträge dabei, von denen hier die Slides in einer Übersicht dargestellt werden. Auf dem Plan stand am Freitag Morgen der Tutorial Teil, bei dem in 4 dreieinhalb-stündigen Workshops Wissen vermittelt wurde. Am Freitag Nachmittag sowie am Samstag gab - [Mit Wetterdaten arbeiten: Yahoo Weather API](https://phpgangsta.de/mit-wetterdaten-arbeiten-yahoo-weather-api) - Yahoo bietet, ähnlich wie Google und wetter.com auch eine Wetter-API, allerdings ist diese etwas gewöhnungsbedürftig. Die API gibt einen RSS-Feed zurück, woraus man dann seine Informationen parsen kann. Früher konnte man einfach einen Suchbegriff (Ort oder Postleitzahl) nehmen und die folgende URL aufrufen: http://weather.yahooapis.com/forecastrss?p=59302 Das geht mittlerweile nicht mehr, da Yahoo bei vielen seiner Dienste - [Linkpool Nummer 14](https://phpgangsta.de/linkpool-nummer-14) - Wenn sichere/lange/komplexe Passwörter verboten werden: http://www.troyhunt.com/2011/01/whos-who-of-bad-password-practices.html Texte schon encodiert (z.B. htmlentities) in der Datenbank speichern oder nicht? http://www.d-mueller.de/blog/richtige-stelle-zum-encoden/ Tücken der SplPriorityQueue: http://weierophinney.net/matthew/archives/253-Taming-SplPriorityQueue.html Ziele des Zend Framework 2.0, vorgestellt auf der ZendCon 2010 von Ralph Schindler (und Matthew Weier O'Phinney): http://www.eschrade.com/page/zendcon-2010-podcast-introducing-zend-framework-4d34cc09 PHP Desktop-Applikationen mit Titanium erstellen: http://www.sanisoft.com/blog/2011/01/03/introduction-to-creating-desktop-applications-with-php-and-titanium/ Ein Beitrag von Ulf Wendel zu mysqlnd's Fähigkeiten des - [Mit Wetterdaten arbeiten: wetter.com API](https://phpgangsta.de/mit-wetterdaten-arbeiten-wetter-com-api) - Wie bereits im Artikel gestern über die Google Weather API angekündigt hier die Umsetzung einer wetter.com API Anbindung. Die API von wetter.com ist gut dokumentiert (wenn auch nicht vollständig) im Gegensatz zur Google API, es gibt klare Nutzungsbedingungen wann und in welchem Umfang sie genutzt werden kann. Nachteile der wetter.com API sind: - Man stimmt - [Mit Wetterdaten arbeiten: Google Weather API](https://phpgangsta.de/mit-wetterdaten-arbeiten-google-weather-api) - Wetterdaten können eine kleine nette Information sein für die Nutzer einer Webseite, entweder sie sind auf den jeweiligen Nutzer zugeschnitten und personalisiert, oder für alle Besucher der Webseite des Fussballclubs wird das Wetter der Stadt angezeigt. Es gibt da draußen einige Dienste, die solche Widgets, sprich kleine HTML-Codefragmente zur Verfügung stellen, man muss allerdings bei - [Gefährliche PHP-Funktionen ausschalten](https://phpgangsta.de/gefahrliche-php-funktionen-ausschalten) - PHP ist mächtig, man kann nahezu alles umsetzen, zur Not auch mit Zugriff auf die Kommandozeile. Doch die Macht hat auch immer eine böse Seite, sie kann missbraucht werden. Nicht nur auf shared Webservern sollte man aus Sicherheitsgründen einige Funktionen ausschalten, auch auf einem einzelnen Server, auf der nur die eigene Webseite liegt, sollten die - [Was können wir von anderen lernen](https://phpgangsta.de/was-konnen-wir-von-anderen-lernen) - Ein Gastbeitrag von Timo Puschkasch Student aus Stuttgart, seit längerem als Webentwickler mit PHP und Ruby tätig. Seit kurzem auch in der UG Stuttgart anzutreffen. PHP ist eine der ältesten serverseitigen Web-Sprachen und fast die einzige, die speziell zu diesem Zweck geschrieben wurde. Leider verleitet dies viele Entwickler dazu, den Gedanken, die PHP-Gemeinde könnte über - [Subdomain-Service: Wie erstelle ich dynamisch viele Subdomains?](https://phpgangsta.de/subdomain-service-wie-erstelle-ich-dynamisch-viele-subdomains) - Was eine Subdomain ist brauche ich ja wahrscheinlich nicht zu erzählen, dass es manchmal mehr Sinn machen kann lieber eine neue Subdomain als einen Unterordner anzulegen und wie das geht möchte ich hier zeigen. Die Länge der folgenden Domains ist gleich, es ist also egal ob ich http://domain.de/forum oder http://forum.domain.de anlege. Es gibt jedoch einige - [Slides der ZendCon 2010](https://phpgangsta.de/slides-der-zendcon-2010) - Vom 1. bis zum 4. November fand dieses Jahr die ZendCon statt, eine der wohl größten und bedeutendsten internationalen Konferenzen. Mit über 70 Sessions wurde von hochkarätigen Speakern (die Namen muss man sich mal alle anschauen, phänomenal) der Tagesplan reich gefüllt und sicher war/ist für jeden etwas dabei. Da ihr wahrscheinlich, wie ich auch, nicht - [Linkpool Nummer 13](https://phpgangsta.de/linkpool-nummer-13) - Auch 2010 gab es wieder einen PHP Advent, mit einem Artikel pro Tag: http://phpadvent.org/2010 Ein schöner Zend View Helper, der den Link zu statischen Dateien auf CDNs zusammenbaut: http://antwerpes.it/cdn-view-helper-fur-zend-framework/2010/11/ Kleines Bookmarklet, mit dem man auf beliebigen Webseiten malen kann und dann einen Link dazu weitergeben kann: http://markup.io/ V8 Javascript Engine innerhalb von PHP: http://pecl.php.net/package/v8js PHP - [Wettbewerb: 10.000 Zahlen ausschreiben](https://phpgangsta.de/wettbewerb-10-000-zahlen-ausschreiben) - Heute kam mir eine nette kleine Programmieraufgabe zu Ohren, und da dachte ich gleich an euch. Das könnte eine interessante Aufgabe sein um zu zeigen wie mit unterschiedlichen Vorgehensweisen das Problem gelöst werden kann. Die Aufgabe: Die Zahlen 1 bis 10.000 sollen der Reihe nach ausgeschrieben werden, getrennt durch einen Umbruch. So sieht die Ausgabe - [NoSQL: Ein Einstieg mit MongoDB](https://phpgangsta.de/nosql-ein-einstieg-mit-mongodb) - Ein Gastbeitrag von Florian Heinze, Gründer von vsChart. Für alle die sich fragen, NoSQL – was ist das und wie geht das überhaupt, folgend ein praktischer Einstieg am Beispiel von MongoDB. Zunächst, was bezeichnet genau NoSQL? Der Begriff ist etwas unglücklich. Denn es geht nicht um die Ablehnung der Abfragesprache SQL, sondern um die Befürwortung - [Was fehlt dir an PHP?](https://phpgangsta.de/was-fehlt-dir-an-php) - PHP bietet oft neue Releases mit neuen Features. Nicht immer sind es große Features, aber ab und zu erblicken wir erfreut Funktionen, die das Programmieren vereinfachen bzw. vorher selbst geschriebene Funktionen überflüssig machen. Doch einige Features wünscht man sich schon lange, und es gibt sie einfach nicht. Welches genau diese gewünschten Features sind möchte ich - [Informationsflut aus Sozialen Netzwerken: Beispiel Email-Adressen via Twitter](https://phpgangsta.de/informationsflut-aus-sozialen-netzwerken-beispiel-email-adressen-via-twitter) - Twitter produziert eine Menge Informationen, aber auch eine Menge Müll und gibt auch persönliche Daten preis. Ähnliches gilt für soziale Netzwerke, ich glaub ich muss keine nennen. Ein gefundenes Fressen für alle Spammer und Datensammler. Ab und zu findet man einen Bericht darüber, wie jemand Daten automatisiert gesammelt hat, die frei verfügbar und lesbar sind. - [Große Dateien komprimiert als Download streamen](https://phpgangsta.de/grosse-dateien-komprimiert-als-download-streamen) - Bei großen Dateien gibt es mehrere Probleme. Sie belegen viel Speicherplatz auf der Festplatte, bei der Komprimierung vergeht viel Zeit, die fertig komprimierte Datei belegt wiederum viel Speicherplatz, und eventuell wird auch viel Arbeitsspeicher benötigt beim Komprimieren oder ausliefern via PHP. Viele dieser Probleme lassen sich lösen, wie ich gleich zeigen möchte. Wie vieles auf - [Gewinnspiel bei antwerpes](https://phpgangsta.de/gewinnspiel-bei-antwerpes) - Möchte kurz auf ein nettes Gewinnspiel hinweisen, bei dem man bis Weihnachten 4 PHP Bücher gewinnen kann. Bin gespannt auf die nächsten Fragen, die erste ist gar nicht so einfach, da muss man kurz recherchieren ;-) Viel Spass! http://antwerpes.it/weihnachtsgewinnspiel-2010-teil-1/2010/11/ - [Linkpool Nummer 12](https://phpgangsta.de/linkpool-nummer-12) - Primzahlen testen mit Regulären Ausdrücken: http://zmievski.org/2010/08/the-prime-that-wasnt Infos zu bald kommenden skalaren Type Hints: http://schlueters.de/blog/archives/148-More-on-scalar-type-hints-in-PHP-trunk.html http://sebastian-bergmann.de/archives/900-Scalar-Type-Hints-in-PHP-5.3.99.html Interessante Diskussion über Type Hints: Weak oder Strict: http://www.zfforum.de/showthread.php?t=6505 Kostenloses PHPUnit Training als PDF: http://blog.nickbelhomme.com/php/phpunit-training-course-for-free_282 10 Gründe das Zend Framework zu nutzen: http://blancer.com/tutorials/40338/10-compelling-reasons-to-use-zend-framework/ 10 Fehler, die MySQL Nutzer immer wieder machen: http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/ - [Der Unterschied zwischen fsockopen() und stream_socket_client()](https://phpgangsta.de/der-unterschied-zwischen-fsockopen-und-stream_socket_client) - Oft findet man in seinem Code (oder den benutzten Libraries wie beispielsweise Zend Framework) die Funktion fsockopen(). Daran ist auch eigentlich nichts verwerfliches, sie ist seit PHP 4 verfügbar und tut im Prinzip das selbe wie stream_socket_client(): Sie baut eine Socket-Verbindung zu einem entfernten Server auf, beispielsweise zu einem Webserver: fsockopen() versteht also auch SSL - [Heute ist "Developers Shame Day"!](https://phpgangsta.de/heute-ist-developers-shame-day) - Der bereits angekündigte Developers Shame Day ist (bzw. war) heute, und ich habe mal in meinen alten Dateien gewühlt, und etwas "tolles" gefunden. Getreu unter dem Motto "mit schlechtem Beispiel voran". Weiter unten findet ihr auch weitere Beiträge von anderen Bloggern. Hier die index.php eines alten Projekts: Da bin ich echt froh, dass wir heutzutage - [Linkpool Nummer 11](https://phpgangsta.de/linkpool-nummer-11) - Evercookie: Das Cookie, das der User nicht mehr los wird http://samy.pl/evercookie/ Über PHP-Entwicklung für Android http://www.developer.com/features/article.php/52691_3904261_1/Build-Your-First-PHP-for-Android-Application.htm Kleines Javascript Spiel zum Zerschiessen von Webseiten, gegen die Langeweile zwischendurch http://erkie.github.com/ Sehr ausführliche Auflistung von Beispielfragen für die Zend Zertifizierung http://jagatk.wordpress.com/2010/09/27/zend-certification-php-5-sample-questions/ Warum der MySQL Timestamp vom PHP Timestamp abweicht trotz gleichem Systemdatum http://blog.pumka.net/2010/10/24/why-mysql-timestamp-is-24-seconds-different-from-php/ Interessantes (meist rein theoretisches) Problem: - [Test von Googles neuem Apache Modul mod_pagespeed](https://phpgangsta.de/test-von-googles-neuem-apache-modul-mod_pagespeed) - Google kündigt an, die Welt applaudiert: Das neue Apache-Modul mod_pagespeed soll automatisch Webseiten schneller machen, ohne Aufwand und für jede Seite, eine bis zu 50% schnellere Webseite wird versprochen. Google selbst hat natürlich auch etwas davon: Wenn jede Webseite schneller abrufbar ist, können die Suchmaschinen-Spider schneller und mehr crawlen... Doch wenn man es selbst ausprobiert - [Schämt euch am 3. November!](https://phpgangsta.de/schamt-euch-am-3-november) - Cem Derin, der php hacker, ruft am 3.11.2010 zum Developers Shame Day auf. Jeder Programmierer möge doch bitte an diesem Tag seinen ältesten und beschämensten Code publizieren, für den man sich und Grund und Boden schämen muss. Die Programmiersprache ist dabei egal. Bin gespannt was dabei herum kommt, ich werde auch mal schauen ob ich - [6-wöchige Testabwesenheit erfolgreich beendet](https://phpgangsta.de/6-wochige-testabwesenheit-erfolgreich-beendet) - Wie ihr ja vielleicht gemerkt habt war es recht still hier im Blog. Ich hab in den letzten Wochen absichtlich nichts veröffentlicht um einmal die Folgen in Bezug auf Besucherzahlen sehen zu können. Außerdem schreibe ich gerade einen mehrseitigen Artikel für das PHP-Magazin, der auch Teile meiner "Blog-Zeit" beansprucht. Eigentlich hätte ich erwartet dass die - [Eindrücke der aktuellen PhpStorm IDE Vorschau](https://phpgangsta.de/eindrucke-der-aktuellen-phpstorm-ide-vorschau) - Aktuell steige ich auf eine neue IDE um, und ich möchte euch ein paar Einblicke der Vorzüge und Features geben, die ich an Eclipse PDT vermisst habe und nun gefunden habe. Ich benutze seit einigen Wochen PhpStorm von JetBrains und muss sagen dass es mir deutlich besser gefällt als PDT. PDT habe ich nun 3 - [Der Download, der sich selbst löscht](https://phpgangsta.de/der-download-der-sich-selbst-loscht) - Manchmal kann es nützlich sein dass eine Datei nur einmal heruntergeladen werden kann und dann gelöscht wird, weil sie nicht mehr benötigt wird und nur Platz verschwendet. Bietet man die Datei direkt zum Download an (sprich eine direkte URL zur Datei), dann liefert der Webserver die Datei auch auch an den Browser, aber sie wird - [Frühzeitig Memory Limit Probleme entdecken](https://phpgangsta.de/fruhzeitig-memory-limit-probleme-entdecken) - Vorausschauendes oder defensives Programmieren wird häufig vernachlässigt. Man geht allzu häufig davon aus, dass die Umgebung immer die selbe ist und wenn es einmal funktioniert, dann funktioniert es immer. Zum defensiven Programmieren gehört aber nicht nur, alle möglichen Fälle von Parametern abzufangen die jemand in eine Methode reinstopfen könnte, sondern auch die Prüfung der Webservereigenschaften. - [PHP Test für Fortgeschrittene: Der Gewinner, alle Fragen und Antworten](https://phpgangsta.de/php-test-fur-fortgeschrittene-der-gewinner-alle-fragen-und-antworten) - So, da der PHP-Test für Fortgeschrittene offiziell beendet ist werden wir nun also den Gewinner der ZCE-Praxis-Tests ermitteln. Außerdem sind hier alle Fragen (und Antworten) aufgelistet die im Test vorkommen, sodass darüber diskutiert werden kann. Wer den Test (nochmal) machen möchte um sein PHP-Wissen zu testen kann das natürlich weiterhin tun. Ich habe die Beschränkung - [PHP Profiling mit XDebug und KCachegrind](https://phpgangsta.de/php-profiling-mit-xdebug-und-kcachegrind) - So, nun will ich das Thema nachholen, was ich am letzten Donnerstag hab anklingen lassen. Am Wochenende ist dann jedoch das Gewinnspiel dazwischengekommen, sodass ich nun etwas zum Thema PHP-Profiler schreibe. Profiler? Sind das nicht die FBI-Psychiater, die anhand von Tatorten und den Opfern etwas über den Täter aussagen können, wie er lebt und denkt? - [PHP hat Ticks](https://phpgangsta.de/php-hat-ticks) - Vor einigen Tagen hatte ich mit einem meiner Kollegen in der Firma ein Gespräch über Profiler (XDebug). Dabei erzählte er dass er vor einiger Zeit einen rudimentären Profiler gebastelt hat der ähnliches kann wie XDebug heute: Sein Profiler konnte die Laufzeit eines jeden Befehls in einem Script feststellen und in eine Datenbank loggen. Außerdem bekam - [Mein Spielplan-Algorithmus](https://phpgangsta.de/mein-spielplan-algorithmus) - Vor 2 Wochen hatte ich ja dazu aufgerufen ein algorithmisches Problem zur Berechnung eines Spielplan zu lösen. Es gab in den Kommentaren einige gute Ansätze und auch eine gültige Lösung wenn ich es richtig gesehen habe, und wie versprochen werde ich heute meine Lösung veröffentlichen. Vielleicht sollten wir uns nochmal das Grundproblem ins Gedächtnis rufen: - [Linkpool Nummer 10](https://phpgangsta.de/linkpool-nummer-10) - Toller neuer HTML5 Editor. Ist das Ende von TinyMCE endlich in Sicht? http://aloha-editor.com/ 10 Dinge über Software-Entwicklung, die man nicht an der Uni lernt http://it-republik.de/jaxenter/news/10-Dinge-ueber-Software-Entwicklung-die-man-nicht-an-der-Uni-lernt-055679.html Nette Übersicht der memcache(d) Extensions: http://brian.moonspot.net/php-memcached-issues XDebug 2.1 ist raus: http://derickrethans.nl/xdebug-2.1-released.html SSH-Server in PHP: http://blog.magicaltux.net/2010/06/27/php-can-do-anything-what-about-some-ssh/ Falls man mal nicht weiß was man als Commit Message eingeben soll: http://whatthecommit.com/ PDT 2.2 - [Gewinner der großen Geburtstagsverlosung](https://phpgangsta.de/gewinner-der-grossen-geburtstagsverlosung) - Es ist soweit, die Geburtstags-Aktion ist beendet und nun werden wir die Gewinner der Preise bestimmen. Erst einmal an dickes Dankeschön an alle, die mitgemacht haben, fleißig getwittert und gebloggt haben und somit insgesamt 155 Kommentare zusammengekommen sind. Davon sind 2 Einträge Trackbacks, 2 Einträge waren Ergänzungen um Twitter-Links, und 3 Einträge sind ungültig, mehr - [Der Blog feiert 1. Geburtstag! Mit großer Verlosung!](https://phpgangsta.de/der-blog-feiert-1-geburtstag-mit-groser-verlosung) - Mit kleiner Verspätung können wir heute den ersten Geburtstag dieses Blogs feiern! Vor knapp mehr als einem Jahr begann ich zum ersten Mal mit Wordpress einen eigenen Blog zu erstellen und mit PHP- und allerlei Webthemen zu füllen. Mittlerweile sind es 141 Artikel geworden und mit der Zeit hat sich dann auch der ein oder - [Neue PHP 5.3 Zertifizierung: Beta Tester gesucht](https://phpgangsta.de/neue-php-5-3-zertifizierung-beta-tester-gesucht) - Zend hat eine aktualisierte Version seines PHP Zertifikats (nun "PHP 5.3 Zertifikat") vorbereitet und sucht nun Beta-Tester, die diesen Test einmal bestreiten. Sie wollen damit unter anderem die Schwierigkeit der Fragen einschätzen lernen, sodass der finale Test angemessen ist. Dieser Beta-Test kostet nichts, man muss sich nur dafür anmelden bis zum 15.07.2010. Dann werden geeignete - [Eine Progressbar in der Konsole](https://phpgangsta.de/eine-progressbar-in-der-konsole) - Wer des öfteren Konsolenscripte in PHP schreibt kennt das Problem vielleicht: Das neue Admin-Script scheint wunderbar zu laufen, aber irgendwie möchte man den aktuellen Fortschritt beobachten können, denn solche Scripte laufen auch mal mehrere Minuten oder Stunden. Häufig gibt man dann bei jedem Schleifendurchlauf einen Punkt aus, sodass sich die Konsole mit Punkten füllt. Oder - [PHP Magazin Jahresabos zu gewinnen](https://phpgangsta.de/php-magazin-jahresabos-zu-gewinnen) - Kurze Eilmeldung: In Jan Walthers PHP Performance Blog kann man ein Jahres-Abo für das PHP-Magazin gewinnen. Heute um 15 Uhr wird die Liste geschlossen, also schnell mitmachen! - [Algorithmus-Wettbewerb Teil 2: Spielplan errechnen](https://phpgangsta.de/algorithmus-wettbewerb-teil-2-spielplan-errechnen) - Tüftler aufgepasst, ich habe eine neue Aufgabe, die es möglichst effektiv zu lösen gilt. In der Vergangenheit hatte ich bereits nach Wegberechnungen auf einem Spielfeld für ein Browsergame gefragt, heute soll es um einen Spielplan gehen den es zu errechnen gilt. Wir haben folgende Ausgangslage: X Spieler möchten ein Turnier veranstalten, wobei jeweils einer gegen - [Linkpool Nummer 9](https://phpgangsta.de/linkpool-nummer-9) - Ein kleiner Tipp wie man eine neue Produktiv-Version testen kann obwohl die Maintenance-Seite aktiv ist (Könnte man auch zur Absicherung von Admin-Interfaces etc. nehmen, ist aber mit Vorsicht zu geniessen - Security by Obscurity): http://bigwhoop.ch/artikel/49/2010-06-03/Webapplikationsupdate-trotz-Wartungsseite-testen 10 Dinge, über die sich Entwickler am meisten ärgern: http://it-republik.de/dotnet/artikel/10-Dinge-ueber-die-sich-Entwickler-am-meisten-aergern-3113.html Kleines Beispiel wie nützlich der relativ unbekannte Validator Zend_Validate_Db_NoRecordExists ist: - [X-Frame-Options Header gegen ClickJacking](https://phpgangsta.de/x-frame-options-header-gegen-clickjacking) - ClickJacking hatte ich in einem älteren Beitrag bereits erwähnt, und es gibt bereits seit langem Gegenmaßnahmen. Der IE8 hat damals ein neues Feature eingeführt, welches mittlerweile von den anderen Browsern auch umgesetzt wurde, und dieses Feature stelle ich hier vor. Wir als Webseitenbetreiber können damit unterbinden, dass unsere Seite in einem Frame (IFrame eingeschlossen) dargestellt - [Yahoo! Query Language (YQL) erklärt](https://phpgangsta.de/yahoo-query-language-yql-erklart) - Vorwarnung: Dieser Post ist relativ lang, aber mit vielen Beispielen gefüllt und sehr interessant wie ich finde. Wer durchhält, wird belohnt! Wer von euch schonmal auf Web-APIs zugegriffen hat weiß dass die APIs alle unterschiedlich sind, ein einheitlicher Zugriff ist nicht möglich. Des weiteren möchte man eventuell Daten von Webseiten abgreifen, z.B. direkt aus einer - [(Fast) Alle Slides der IPC SE 2010](https://phpgangsta.de/slides-der-ipc-se-2010) - So, hier nun fast alle Präsentationen zu den Sessions auf der International PHP Conference Spring Edition 2010. Wer kann die Lücken füllen? Sonntag ---------------------------------------------------------- Continuous Inspection and Integration of PHP Projects Sebastian Bergmann Präsentation auf Slideshare ---------------------------------------------------------- Advanced-Eclipse-Workshop Bastian Feder, Nils Langner, Sven Kiera Präsentation auf Slideshare ---------------------------------------------------------- Softwarearchitektur mit PHP Johann-Peter Hartmann Präsentation auf - [15 Jahre PHP: Glückwunsch zum Geburtstag!](https://phpgangsta.de/15-jahre-php-gluckwunsch-zum-geburtstag) - Bereits 1994 begann Rasmus Lerdorf mit der ersten Umsetzung seiner Ideen zu einer Webscriptsprache, und am 08. Juni 1995 veröffentlichte er Version 1.0 der Personal Home Page Tools (PHP Tools). Rasant ging es weiter, bereits am 16. April 1996 verkündete Rasmus Version 2.0 der mittlerweile PHP/FI (Form Interpreter) genannten Sprache. Darin war bereits nativer Support - [Linkpool Nummer 8](https://phpgangsta.de/linkpool-nummer-8) - Growl-ähnliche Benachrichtigungen auf dem Desktop aus dem Browser heraus: http://www.peterkroener.de/web-notifications/ Sammlung von HTML5 Beispielen: http://html5watch.tumblr.com/ Sehr umfangreicher Artikel über Password Hashing, SQL Injection und alles was mit User-Administration zu tun hat: http://php-security.org/2010/05/26/mops-submission-10-how-to-manage-a-php-applications-users-and-passwords/ Das Zend Framework 2.0 ist nun per Git verfügbar, auch auf Github: http://www.zendframeworkinaction.com/2010/06/04/zend-framework-2-development-starting-in-earnest/ Das Geburtstags-Pacman-Spiel bei Google ist nach wie vor online: http://www.google.de/pacman/ - [Die IPC geht zu Ende: Der letzte Tag](https://phpgangsta.de/die-ipc-geht-zu-ende-der-letzte-tag) - Nach 6 Stunden Schlaf klingelte der Wecker, schnell aus den Federn, Sachen packen und im Auto verstauen. Das Frühstück noch mitnehmen und dann wieder via Bus, Bahn und Fußweg Richtung Konferenz. Dort angekommen direkt in den Talk über Doctrine 2, da mir CSS/CSRF bereits bekannt waren. Der Talk soll allerdings auch sehr interessant gewesen sein, - [Applikationslogin mittels SSL-Zertifikat](https://phpgangsta.de/applikationslogin-mittels-ssl-zertifikat) - Passworte haben Nachteile, das wissen wir alle. Sie müssen genügend komplex aber trotzdem merkbar sein, die Länge und Art der Zeichen sind dafür verantwortlich wie einfach es zu erraten ist. Fast niemand verwendet Passworte mit mehr als 8 oder 10 Zeichen. Ohne wirksame Brute-Force-Gegenmaßnahmen sind diese innerhalb von Stunden oder wenigen Tagen knackbar. Auch ein - [Neue Phishing-Methode: Tabnabbing](https://phpgangsta.de/neue-phishing-methode-tabnabbing) - Stellt euch vor, ihr geht auf eine harmlose Webseite: www.flashspiele.de . Dann fällt euch ein, dass ihr noch euren GoogleMail Account prüfen wollt. Tab öffnen und bei GoogleMail einloggen. Dann möchtet ihr noch euren Social-Network-Account checken, ihr öffnet also einen neuen Tab und öffnet www.facebook.com . In der Zwischenzeit ändert die flashspiele.de Seite ihr Favicon - [Linkpool Nummer 7](https://phpgangsta.de/linkpool-nummer-7) - Blogartikel über Mutation Testing, sehr interessant um seine Tests zu testen: http://blog.astrumfutura.com/index.php?/plugin/tag/mutateme Webseitengeschwindigkeit ist wichtig: http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/ Zend Framework 1.10.4: http://devzone.zend.com/article/12078-Zend-Framework-1.10.4-Released Einfacher forken unter Linux mit PCNTL: http://kore-nordmann.de/blog/0098_native_job_queue.html Git post-receive Hooks mit Gearman umgesetzt: http://weierophinney.net/matthew/archives/240-Writing-Gearman-Workers-in-PHP.html PHP Microbenchmarking http://code.ning.com/2010/05/php-microbenchmarking/ Der "Month of PHP Security" hat begonnen: http://php-security.org/ - [Flattr - Einfach Bedanken im Internet](https://phpgangsta.de/flattr-einfach-bedanken-im-internet) - Vor ein paar Wochen hörte man in den Medien, dass die Pirate-Bay-Macher ein neues Projekt haben: Flattr. Damit soll man sehr einfach und schnell für Dienste bezahlen können, aber nicht im herkömmlichen Sinn wo der Anbieter einen festen Preis bestimmt, sondern der Besucher bestimmt, wieviel Geld er dem Anbieter geben möchte. Es geht also nicht - [Die mail.de GmbH sucht Javascript-Entwickler](https://phpgangsta.de/die-mail-de-gmbh-sucht-javascript-entwickler) - Wir suchen aktuell in der Firma eine(n) Javascript-Entwickler(in), und ich glaube hier tummeln sich viele Leute aus der passenden Fachrichtung. Falls du interessiert bist oder jemanden kennst, der Interesse hat, melde dich bitte bei der angegebenen Kontaktadresse. Der ideale Kanditat ist ein(e) fähige(r) Javascriptler(in), der/die sich mit Mootools auskennt (oder sich schnell einarbeiten kann), mehrjährige - [Die große PHP-Blog-Sammlung](https://phpgangsta.de/die-grosse-php-blog-sammlung) - Ein Bekannter fragte mich letztens, wieviele halbwegs aktuelle deutsche PHP-Blogs es gibt, die auch etwas Niveau haben, und ich konnte nicht anders antworten als "Pff, öhh, gute Frage, ich würde schätzen X, aber ich selbst kenne nur 5 davon". Problematisch sind bei diesen Kriterien vor allem "halbwegs aktuell" und "etwas Niveau". Es gibt in diversen - [Inline Grafiken in HTML E-Mails mit Zend_Mail automatisch versenden](https://phpgangsta.de/inline-grafiken-in-html-e-mails-mit-zend_mail-automatisch-versenden) - Ich (Ralf Eggert) stand neulich vor dem Problem, dass ich alle Grafiken in einer HTML E-Mail automatisch als Inline-Images identifizieren und dann an die E-Mail anhängen wollte. Die Grundidee zur Lösung des Problems ist es, mit einem regulären Ausdruck alle Grafiken zu finden und dann entsprechend anzuhängen. Beim Versand gab es ein paar Probleme, die - [PHP und Zend Framework Video-Podcasts und -Serien](https://phpgangsta.de/php-und-zend-framework-video-podcasts-und-serien) - Falls ihr euch in das Zend Framework einarbeiten wollt, müsst, oder es kennenlernen möchtet, seien euch neben dem offiziellen Quickstart-Guide oder Büchern zu Zend Framework auch noch 2 Video-Podcasts ans Herz gelegt. Mein Favorit ist Zendcasts: In gut verständlichem Englisch und mittlerweile über 60 Videos erklärt Jon Lebensold wirklich alles, was man mit dem Framework - [Linkpool Nummer 6](https://phpgangsta.de/linkpool-nummer-6) - Why you can't work at work: http://bigthink.com/ideas/18522 Die Power und Geheimnisse von Javascript: http://www.phphatesme.com/blog/webentwicklung/the-mysteries-of-javascript-fu-media-europe-edition Start-Stop-Daemon, einfach PHP-Dienste unter Linux einrichten: http://till.klampaeckel.de/blog/archives/94-start-stop-daemon,-Gearman-and-a-little-PHP.html Javascript Exceptions in Userbrowsern mitloggen: http://www.exceptionhub.com/ Mail Transport Resource für Zend Framework: http://framework.zend.com/manual/de/zend.application.available-resources.html#zend.application.available-resources.mail Der Beginn einer Serie über Websockets: http://pehbehbeh.de/webentwicklung/javascript/tutorial-websockets-grundlagen-interface/ - [Sockets, Streams und Streamfilter](https://phpgangsta.de/sockets-streams-und-streamfilter) - In einem älteren Artikel schrieb ich bereits über Socket Server in PHP, heute möchte ich etwas sehr ähnliches vorstellen, jedoch mittels Streams, wo uns andere Möglichkeiten zur Verfügung stehen. Ich möchte nun also auf einen Socket, sprich häufig einen TCP-Port, zugreifen und ihn als Datenstrom behandeln. Dazu erstellen wir erstmal einen Server, der auf Port - [Zend Certified Engineer](https://phpgangsta.de/zend-certified-engineer) - Seit Montag gehöre ich zu den aktuell 371 zertifizierten PHP5-Entwicklern in Deutschland, ich darf mich nun also "Zend Certified Engineer" nennen *jubel*! Hier ist der Beweis, meine eigene Seite in den Zend-Yellow-Pages. Bereits letztes Jahr kam die Idee, sich an diese Aufgabe zu wagen, doch nachdem ich mir Lektüre besorgt hatte (PDFs mit mehreren hundert - [Einen eigenen Zend_Filter erstellen](https://phpgangsta.de/einen-eigenen-zend_filter-erstellen) - Zend_Filter sind kleine Hilfsfunktionen, die Eingaben filtern und eine eventuell geänderte Ausgabe zurück liefern falls die Eingabe nicht den Kriterien entsprach. Dabei besteht die Ausgabe immer aus einer Untermenge der Eingabe, ungültige Zeichen werden heraus gefiltert. Oder aber Eingabezeichen werden transformiert, sprich umgewandelt. Häufig genutzte Filter sind beispielsweise Hier einige Beispiele wie man sie nutzen - [ZCE Online Praxis Tests](https://phpgangsta.de/zce_online_praxis_tests) - Aus meinen Vorbereitungen zum Zend Certified Engineer habe ich noch 6 Zend PHP5-Zertifizierung Online-Praxis-Tests übrig die ich verschenken möchte. Natürlich sollen diese an einen PHP-Entwickler gehen, der auch die Prüfung ablegen möchte und sie als Vorbereitung nutzen kann. Wenn ich es richtig gelesen habe sind sie noch bis zum 04.09.2010 gültig (wobei in meinem Zend-Account - [Linkpool Nummer 5](https://phpgangsta.de/linkpool-nummer-5) - Was für eine aufregende Woche: Polen verliert ihr Präsidentenpaar, in Afghanistan fallen deutsche Soldaten, eine Aschewolke nebelt Europa ein, ein Video "Collateral Murder" aus dem Irak taucht bei Wikileaks auf. Aber auch in der IT-Welt gibt es hier und da interessante News und Blogeinträge: Deployment kurz und gut zusammengefasst in einer Präsentation: http://www.phphatesme.com/blog/webentwicklung/taming-the-deployment-beast/ Mit HTML5 - [Mit der eBay-API seine Auktionen beobachten](https://phpgangsta.de/mit-der-ebay-api-seine-auktionen-beobachten) - Nach dem letzten Artikel über die eBay-API und das Erstellen von Auktionen wollen wir nun unsere Auktionen beobachten und Informationen periodisch abfragen. Damit können wir uns selbst beispielsweise eine tägliche Übersicht senden oder die Auktionen auf unserer Webseite darstellen. Die entsprechende API-Funktion heißt GetSellerList, sie liefert uns Informationen über unsere Auktionen eines bestimmten Zeitraums. Wenn - [International PHP Conference in Berlin und PHP Unconference in Hamburg](https://phpgangsta.de/international-php-conference-in-berlin-und-php-unconference-in-hamburg) - Letztes Wochenende wurde der Ticketverkauf der PHP Unconference 2010 in Hamburg gestartet, und nur 6 Tage später waren die 200 Tickets ausverkauft, Wahnsinn! Auch dieses Jahr werde ich wieder mit von der Partie sein, letztes Jahr war spitze und ich bin mir sicher dass ich auch dieses Jahr wieder viel Neues mit nach Hause nehmen - [Debug Ausgaben im Code vergessen?](https://phpgangsta.de/debug-ausgaben-im-code-vergessen) - Wahrscheinlich ist es jedem schon einmal passiert: Irgendwo ist ein var_dump() oder file_put_contents('/tmp/blub') im Code vergessen worden, natürlich in einem sehr unwahrscheinlichen Programmzweig, und unverhofft kommt eine Email mit einer "komischen Ausgabe" inklusive internen Informationen von einem Benutzer. Aua! Doch was kann man dagegen machen? Die beste Lösung ist natürlich: Keine Debug-Ausgaben solcher Art benutzen, - [Linkpool Nummer 4](https://phpgangsta.de/linkpool-nummer-4) - Heute nur 4 kurze Links, die es aber in sich haben: PHP6 ist released! http://giorgiosironi.blogspot.com/2010/04/php-6-finally-released.html Unsere geliebte XDebug-Extension wird bald kostenpflichtig http://derickrethans.nl/xdebug-will-cost-money.html Alle IPv4 Adressen sind vergeben, das Internet muß für 24 Stunden abgeschaltet werden zum Umrüsten: http://www.tagesschau.de/ausland/internetabschaltung100.html Weitere wichtige Nachrichten des Tages (unbedingt Lesen, einige wichtige Änderungen wird es geben und tolle neue Produkte!): - [Adress- und Kontaktdaten als VCard exportieren](https://phpgangsta.de/adress-und-kontaktdaten-als-vcard-exportieren) - VCards sind kleine Dateien, die Personen- und Adressbuch-Daten enthalten. Diese Dateien kann man wunderbar an Emails dranhängen, oder aber als Export + Import zwischen verschiedenen Programmen (Outlook, Thunderbird, Mac OS X Addressbook etc) nutzen. Als Premium-Mitglied bei Xing kann man alle seine Kontakte dort auch exportieren und in die oben genannten Applikationen oder auch in - [Mit PHP eine eBay-Auktion starten](https://phpgangsta.de/mit-php-eine-ebay-auktion-starten) - eBay, wie viele andere große Webseiten und Dienste bietet Entwicklern natürlich auch eine API, mit der man leicht eigene Applikationen erstellen und eBay steuern kann. Nahezu alles, was man bei eBay auf der Webseite machen kann, kann man auch via API steuern, beispielsweise Verkaufen, Kaufen, Bieten, Bewerten, Suchen usw. Um auf die API zuzugreifen müssen - [Die "Technik" hinter 7-PDF Server](https://phpgangsta.de/die-technik-hinter-7-pdf-server) - So, nachdem Michael dankenswerterweise seinen ersten Blogartikel über die 7-PDF PHP Library verfasst hat, wird es nun Zeit euch meinem ersten Gastbeitrag überhaupt in einem Online-Blog zu präsentieren. Ich muss gestehen, ich bin daher ein wenig aufgeregt. Ich möchte euch zuerst einmal einige technische Hintergrundinformationen zum 7-PDF Server geben, bevor es dann weiter zu den - [Zend_View Output Filter: Whitespaces aus HTML entfernen](https://phpgangsta.de/zend_view-output-filter-whitespaces-aus-html-entfernen) - Zend Framework implementiert das Intercepting-Filter-Pattern, und dadurch ist es sehr einfach nach der Generierung des HTML-Codes (Postprocessor) einen Filter einzufügen, der die Ausgabe noch verändert. Natürlich gibt es auch Präprozessor-Filter, in denen man häufig die Authentifizierung prüft oder Eingabeparameter validiert. Vorstellen könnte man sich beispielsweise einen Filter, der bestimmte Textblöcke ersetzt, um zum Beispiel aus - [Speichern der Session-Daten im Memcached](https://phpgangsta.de/speichern-der-session-daten-im-memcached) - Normalerweise speichert PHP die Session-Daten lokal auf der Festplatte, und zwar im Verzeichnis das in der php.ini unter session.save_path eingetragen ist (z.B. /tmp unter Linux). Das sollte man jedoch dringend anpassen wenn man mehrere Applikationen auf einem Webserver laufen hat, da sonst alle Applikationen dort ihre Session-Daten im selben Verzeichnis ablegen. Wer sich in Applikation - [Windows-Applikation mit PHP-GTK2 erstellen](https://phpgangsta.de/windows-applikation-mit-php-gtk2-erstellen) - Vielleicht habt ihr schon mal davon gehört, aber es wahrscheinlich noch nie genutzt: PHP GTK2. Diese PHP-Extension ist dafür da, mit PHP eine Client-Oberfläche zu erstellen. Hört sich komisch an, geht aber ziemlich gut und einfach, habe es vor Jahren bereits gehört und heute nun endlich mal ausprobiert. Hier zuerst ein Screenshot meines "Hello World" - [84 Formate nach PDF konvertieren mit 7-PDF](https://phpgangsta.de/84-formate-nach-pdf-konvertieren-mit-7-pdf) - Vor kurzem bin ich von Thorsten Hodes auf sein Projekt aufmerksam gemacht worden und er fragte, ob das vielleicht von Interesse ist und ich es hier mal vorstellen möchte. Natürlich möchte ich! Sein Projekt heißt 7-PDF und ist ein Service bzw. Server, mit dessen Hilfe man nahezu jedes bekannte Bild- und Textformat (aktuell werden 84 - [Verschiedene Möglichkeiten, mit PHP zu twittern](https://phpgangsta.de/verschiedene-moglichkeiten-mit-php-zu-twittern) - Twitter lebt natürlich von manuell eingetippten Kommentaren, aber ab und zu ist es auch sinnvoll und nötig, automatisiert Tweets zu senden. Das geht dank der vielseitigen API auf verschiedensten Wegen, wovon ich einige hier vorstellen möchte. Den Anfang macht eine Funktion von Fabien Potencier. Zur Nutzung dieser Funktion ist keine Extension oder Framework nötig, es - [Twitter-Applikationen mit Zend_Oauth](https://phpgangsta.de/twitter-applikationen-mit-zend_oauth) - Kurz vorab: Ich möchte mich bei euch Lesern bedanken, ihr habt mich dazu gebracht hier nun den 100. Artikel zu verfassen. Außerdem folgen mir aktuell 98 Leute bei Twitter (vielleicht werden es ja heute 100?), wenn das kein Grund zu feiern ist! Danke euch dafür! Doch nun gehts los: In den Kommentaren zu meinem Artikel - [Linkpool Nummer 3](https://phpgangsta.de/linkpool-nummer-3) - Interessante Vorstellung, Maßnahmen zu ergreifen innerhalb von 3 Minuten, um den Server zu retten während er überrannt wird: http://www.stochasticgeometry.ie/2010/03/10/performance-tuning-a-server-in-three-minutes-while-being-slashdotte/ Schöne Übersicht von Ralf Eggert zum Zend Framework 2.0 Fortschritt: http://blog.zf-info.de/2010/03/11/die-entwicklung-vom-zend-framework-2-0-hat-begonnen/ Interessantes Webinar am 17.03.2010 zu den Neuerungen von Zend Framework 1.10, mit Matthew Weier O’Phinney und Ralph Schindler: http://devzone.zend.com/article/11954-Webinar---New-in-Zend-Framework-1.10 Noch ein interessantes Webinar am 17.03.2010 - [Cheatsheets für Entwickler](https://phpgangsta.de/cheatsheets-fur-entwickler) - Da fast jeder Entwickler das ein oder andere Cheatsheet auf seinem Schreibtisch liegen hat möchte ich hier einige gute Quellen zusammentragen. Für alle Sprachen und viele Programme sind diese Hilfsblätter verfügbar, sie hier einzeln zu verlinken wäre Wahnsinn. Falls ein wichtiger Link fehlt, bitte ergänzen! http://www.addedbytes.com/cheat-sheets/ http://www.cheat-sheets.org/ http://devcheatsheet.com/ http://www.petefreitag.com/item/455.cfm http://www.tripwiremagazine.com/2009/12/60-very-useful-cheat-sheets-for-web-developers.html http://sixrevisions.com/resources/cheat_sheets_web_developer/ http://www.webhostingsearch.com/articles/30-web-developer-cheat-sheets.php http://www.extratuts.com/25-cheat-sheets-web-developer-should-have - [Expires-Header und Komprimierung aktivieren im Apache2](https://phpgangsta.de/expires-header-und-komprimierung-aktivieren-im-apache2) - Wie wir alle wissen kann man die größten Performanceverbesserungen auf der Browserseite erreichen. Ich habe bereits das Zusammenfassen von CSS- und Javascript-Dateien vorgestellt, ebenso wie das Zusammenfassen von Bildern in CSS-Sprites. Damit wird die Anzahl der Request schonmal reduziert. Aber es gibt natürlich noch mehr zu tun, beispielsweise die Requests noch weiter reduzieren durch gute - [Linkpool Nummer 2](https://phpgangsta.de/linkpool-nummer-2) - Heute eine kurze Linkliste, irgendwie war die Anzahl der guten Blogartikel diese Woche nicht so hoch. Oder ich hab sie nicht gelesen, falls ihr welche habt, her damit! Sehr coole Webseite, die Tests durchführt und viele nützliche Graphen anzeigt, wie verschiedene Browser (IE7/IE8) eine Seite laden und anzeigen. Gute Ergänzung zu YSlow/Google Pagespeed etc. http://www.webpagetest.org - [Bug in PHP 5.3.0's mail() Funktion](https://phpgangsta.de/bug-in-php-5-3-0s-mail-funktion) - [Edit: Der Bug wurde mit 5.3.2 behoben, siehe Changelog http://www.php.net/ChangeLog-5.php#5.3.2: Fixed bug #50907 (X-PHP-Originating-Script adding two new lines in *NIX). (Ilia)] Vielleicht hat noch jemand von euch das Problem. Ziel war einfach nur, eine kleine Mail von meinem Mac OS X aus PHP heraus zu versenden. Dazu ist hier PHP 5.3.0 installiert, ebenso wie ein - [Dateidownload via PHP mit Speedlimit und Resume](https://phpgangsta.de/dateidownload-via-php-mit-speedlimit-und-resume) - Wenn man statische Dateien zum Download anbieten möchte lässt man das meistens den Webserver erledigen. Dann sind auch häufig Funktionalitäten wie ein Speedlimit oder das Wiederaufnehmen des Downloads (Resume) möglich. Doch was macht man, wenn etwas mehr Kontrolle nötig ist, beispielsweise eine Authentifizierung in PHP, die Datei erst in Echtzeit berechnet werden muss oder die - [Das IMAP Protokoll im Detail betrachtet](https://phpgangsta.de/das-imap-protokoll-im-detail-betrachtet) - IMAP ist heutzutage das Email-Postfach-Zugriffsverfahren der Wahl. Bei IMAP bleiben die Emails auf dem Server (es sei denn man löscht sie), es werden Ordner unterstützt in die man die Emails verschieben kann. Außerdem werden zum Beispiel Flags auf dem Server gespeichert wenn eine Email gelesen wurde. All das ist bei POP3 anders, weshalb IMAP in - [Kostenloses SSL-Zertifikat holen und einrichten](https://phpgangsta.de/kostenloses-ssl-zertifikat-holen-und-einrichten) - Ab heute ist phpgangsta.de auch über https erreichbar. Wer also sicher gehen möchte dass er auch auf dem richtigen Server landet und keinen "Mann in der Mitte" zuhören kann ab jetzt auch https://www.phpgangsta.de besuchen. Warum hat das eigentlich nicht jeder? Gäbe es keine Nachteile wäre das wohl so, aber normalerweise kosten SSL-Zertifikate Geld, viel Geld, - [Software grafisch darstellen mit Code_Swarm](https://phpgangsta.de/software-grafisch-darstellen-mit-code_swarm) - Hier erstmal das Video, damit ihr seht worum es geht: Dies ist das Video, das ich gerade erstellt habe, und zwar vom Zend Framework 1.10 branch. Man sieht, wo welche Programmierer mitgeholfen haben, wer häufig welche Art von Dateien bearbeitet usw. Mit mehr Zeit könnte man da noch andere coole Dinge mit anstellen, wie beispielsweise - [Versionierungssysteme (auch SCM genannt)](https://phpgangsta.de/versionierungssysteme-auch-scm-genannt) - Nahezu jedes OpenSource-Projekt hat ein svn-Repository. Aber was genau ist das eigentlich? Und gibt es Alternativen? SVN (Subversion) ist das wohl bekannteste Version Control System(VCS). Häufig wird diese Art von Software auch Source Configuration Management system (SCM) genannt. Das Hauptziel ist es, eine gemeinsame Platform für Quelltexte bereitzustellen, um mit vielen Personen gleichzeitig daran zu - [Wordpress Addon SexyBookmarks hinzugefügt](https://phpgangsta.de/wordpress-addon-sexybookmarks-hinzugefugt) - Da ich mir natürlich wünsche dass meine Artikel auf anderen Seiten weiterverlinkt werden, vereinfache ich nun das Setzen von Bookmarks bei bekannten Diensten sowie das Retweeten mit Hilfe des Wordpress-Addons SexyBookmarks. Dadurch sind nun unter jedem Artikel ein paar Symbole von Sozialen Netzwerken und Bookmark-Diensten, mit denen man mit einem Klick den Artikel verlinken kann. - ["PHP Gangsta" ist online!](https://phpgangsta.de/phpgangsta-ist-online) - Da ist er, mein eigener kleiner Blog rund um PHP! Ich möchte mich kurz vorstellen, mein Name ist Michael Kliewe und ich komme aus dem schönen Oelde in Westfalen. Als Mann habe ich nicht unbedingt ein Problem damit, mein Alter zu verraten, also dürft ihr erfahren, dass ich aktuell (noch) 27 bin. Dies ändert sich - [HipHop für PHP](https://phpgangsta.de/hiphop-fur-php) - Gestern war nun der große erhoffte Tag, Facebook wollte seinen neuen "PHP-Compiler" veröffentlichen. Bis jetzt ist das noch nicht passiert, allerdings gab es ein offizielles Announcement und einen Videostream, in dem Näheres erläutert wurde. Edit: Auf GitHub findet man mittlerweile den Sourcecode. Hier ein paar erste Fakten, so wie ich sie bisher gelesen habe: "HipHop - [Lesepool Nummer 1](https://phpgangsta.de/lesepool-nummer-1) - Wer über das Wochenende nicht bereits genug ausgelastet ist, kann hier noch einige interessante Artikel und Webseiten lesen, die ich so in den letzten Tagen gesammelt habe: PHP: Month of Bugs in PHP: May 2010 http://www.suspekt.org/2010/02/19/sneak-preview-month-of-php-security-2010/ Symfony 2 soll das schnellste Framework sein? Padraic Brady beschleunigt das Zend Framework http://blog.astrumfutura.com/archives/421-PHP-Framework-Benchmarks-Entertaining-But-Ultimately-Useless.html Changelog Zend Framework 1.10.2 http://framework.zend.com/changelog/1.10.2 - [Gratulation an "PHP Hates Me" für 500 eindrucksvolle Artikel!](https://phpgangsta.de/gratulation-an-php-hates-me-fur-500-eindrucksvolle-artikel) - Tja, was soll ich viel sagen, einer meiner fast täglichen Stammblogs über PHP, und mehr oder weniger Inspirator für meinen eigenen Blog feiert heute: "PHP Hates Me" hat an den letzten 500 Arbeitstagen 500 Artikel veröffentlicht, Gratulation meinerseits! Auf einige interessante Artikel habe ich ja bereits verwiesen hier im Blog. Immer interessant finde ich auch - [6 Methoden, ein Verzeichnis rekursiv zu scannen](https://phpgangsta.de/6-methoden-ein-verzeichnis-rekursiv-zu-scannen) - Wer von euch kennt solchen Code: So wird es häufig gemacht, aber hier wird natürlich nur ein Verzeichnis durchsucht und keine Unterordner betrachtet. Und häufig schleichen sich dort auch Fehler ein, beispielsweise wenn man im obigen Beispiel nur schreibt. Es gibt aber noch eine Menge anderer Möglichkeiten, die ich hier einmal vorstellen und vergleichen möchte. - [Wordpress Bilder optimieren mit WP-Smash.it und Zend_Http_Client](https://phpgangsta.de/wordpress-bilder-optimieren-mit-wp-smash-it-und-zend_http_client) - Die Wordpress Mediathek wächst und wächst, ab und zu sind auch recht große Screenshots dabei oder gar Bilder der Digitalkamera, die häufig sehr groß sind und Metadaten enthalten. Mit dem Service Smush.it von Yahoo kann man sehr einfach seine Bilder optimieren lassen. Man lädt die zu optimierenden Bilder hoch und erhält eine Auswertung, wieviel Prozent - [PHP Online IDE: CodeRun](https://phpgangsta.de/php-online-ide-coderun) - Hier ein kleiner Tip für euch: Schaut euch mal diese Online IDE von CodeRun an. Dort kann man PHP-Code online im Browser schreiben und auch Laufen lassen. Wenn man dort ein entsprechendes Paket gekauft hat kann man direkt aus der IDE auch Deployen. Falls man seine Quelltexte veröffentlichen möchte kann man einen Permalink erstellen und - [UML Diagramm automatisch erstellen mit phuml](https://phpgangsta.de/uml-diagram-automatisch-erstellen-mit-phuml) - Da im php hates me Blog heute morgen ein Artikel zum Thema UML im Web erschienen ist, möchte ich auch noch eine Software vorstellen, die ich mal genutzt habe, um von zwei bestehenden Projekten ein Klassendiagramm zu erstellen. Wem UML garnichts sagt, möge sich den Artikel bei der Wikipedia durchlesen: http://en.wikipedia.org/wiki/Unified_Modeling_Language Zuerst zeige ich euch - [PHP und HTTP AUTH bei 1und1 Webhosting](https://phpgangsta.de/php-und-http-auth-bei-1und1-webhosting) - Um das Zend Framework in der Webhosting-Umgebung bei 1und1 ans Laufen zu bekommen, gibt es ein paar Kleinigkeiten zu beachten: Als erstes muss man bei 1und1 in der .htaccess-Datei angeben welche PHP-Version man benutzen möchte. Dies macht man mit der Zeile Außerdem muß man noch die folgenden 2 Zeilen hinzufügen, sonst erhält man einen 500er - [Was ist gerade auf meinem Server los?](https://phpgangsta.de/was-ist-gerade-auf-meinem-server-los) - Ich möchte hier ein kleines PHP-Script vorstellen das ich mir vor einiger Zeit mal geschrieben habe um einen schnellen Überblick meines Servers zu bekommen. Ich möchte dazu die letzten Zeilen einiger Logdateien anzeigen lassen. Anstatt mich dazu via SSH zum Server zu verbinden und alle Dateien durchzuschauen (tail -f), habe ich hier eine kleine Admin-Webseite, - [Kein Hexenwerk: SMS/MMS mit PHP versenden](https://phpgangsta.de/kein-hexenwerk-smsmms-mit-php-versenden) - Ziemlich kompliziert? Ziemlich teuer? Ich zeige euch das Gegenteil an einem kurzen Beispiel. Ohne hier Werbung machen zu wollen werde ich in meinem Beispiel die Schnittstellen von www.sms77.de nutzen. Es gibt da draußen hunderte andere Anbieter, die vielleicht besser oder günstiger sind. Falls ihr einen Favoriten habt, nur her damit. Ich habe vor Jahren ein - ["Meinten Sie": Eingaben verbessern mit levenshtein() und soundex()](https://phpgangsta.de/meinten-sie-eingaben-verbessern-mit-levenshtein-und-soundex) - Wer kennt es nicht: Wenn man in ein Suchfeld einen Suchbegriff eingibt, sich dabei jedoch vertippt oder es keine Suchergebnisse gibt, bekommt man manchmal einen alternativen Suchenbegriff vorgeschlagen, der mehr Ergebnisse liefert oder den falsch eingegebenen Begriff berichtigt. "Meinten Sie vielleicht" oder "Did you mean". Doch wie funktioniert das? Am einfachsten erledigt man diese Aufgabe - [Einen LDAP-Server/ActiveDirectory administrieren mit Zend_Ldap](https://phpgangsta.de/einen-ldap-ad-server-administrieren-mit-zend_ldap) - Ein Directory-Server zur zentralen Administration von Benutzeraccounts, Adressbüchern und anderen Resourcen aller Art ist eine feine Sache, sobald man mehrere Rechner, Dienste und/oder Benutzer zu administrieren hat. Nicht nur im Firmenumfeld, auch zu Hause haben IT-Spezies mehr und mehr einen LDAP (Leightweight Directory Access Protocol)-kompatiblen Server, der die genannten Informationen zentral zur Verfügung stellt. Ohne - [Zwei Variablenwerte tauschen](https://phpgangsta.de/zwei-variablenwerte-tauschen) - Gestern bin ich auf eine interessante Aufgabe gestossen. Eigentlich war es ein sehr einfacher Test bei einem Bewerbungsgespräch an einen Software-Entwickler-Kandidaten. Die Aufgabe lautete: "Du hast 2 Variablen mit 2 Werten belegt. Tausche die beiden Werte schnell und effektiv aus." Die Erwartung war: Wenn der Kandidat nicht sofort anfängt, eine temporäre dritte Variable zu erstellen, - [Pagerank-Update](https://phpgangsta.de/pagerank-update) - Am 31.12.2009 war es wieder soweit: Google hat seine Pageranks aktualisiert, wie man auf dieser Update-Seite sehen kann. Und es gibt erfreuliches zu berichten: Mein kleiner Blog ist bereits auf PR 4 gestiegen! Whao! Danke an euch, an alle Leser, Feed-Abonenten und anderen Blogger, die mich verlinken! Das ist wirklich nochmal ein riesen Schritt, Anfang - [26C3 und PHP](https://phpgangsta.de/ccc-congress-und-php) - Seit gestern läuft der 26. Chaos Computer Congress (26C3). Da ich gestern Besuch hatte, konnte ich leider dem Stream nicht folgen, aber wie man hörte war er sowieso mehr offline als online. Bisher gibt es auch nur unoffizielle Mitschnitte zum Download, aber trotzdem ist der Andrang relativ groß, sodass ich auch bei den inoffiziellen Torrents - [Google's Cloud kostenlos als CDN nutzen](https://phpgangsta.de/googles-cloud-kostenlos-als-cdn-nutzen) - Cloud, CDN? Schonmal gehört. Es soll toll sein, aber im Detail weiß ich nicht, was das ist. Wenn so oder ähnlich deine ersten Gedanken waren, habe ich hier ein paar interessante Informationen, wie man das ganze mal praktisch ausprobieren kann. Man mag Google lieben oder hassen, zum kostenlosen Test kann man es ja nutzen, und - [eMail-Postfächer synchronisieren mit imapsync](https://phpgangsta.de/email-postfacher-synchronisieren-mit-imapsync) - Einer der wenigen Artikel, die sich nicht um PHP drehen, aber trotzdem sehr interessant sind ;-) So häufig braucht es der Normalanwender nicht, aber wenn man mal seinen Email-Provider wechselt oder eine Kopie aller seiner Mails auf einem anderen Server haben möchte, gibt es nichts einfacheres als das imapsync-Script von Gilles Lamiral. imapsync ist ein - [co.de Domain](https://phpgangsta.de/co-de-domain) - Da öffnet man nichtsahnend seine Post, und was findet man? Infopost von .co.de! Ich betreibe laut denen eine der wichtigsten Seiten im deutschen Markt, und werde nun gefragt, ob ich bei denen die tolle Domain "phpgangsta.co.de" in der Sunrise-Phase registrieren möchte, für schlappe 99 Euro pro Jahr. Dass es sich dabei nur um eine einfache - [Vergleich der großen PHP-Frameworks: Anzahl Jobs](https://phpgangsta.de/vergleich-der-grosen-php-frameworks-anzahl-jobs) - Wollte nur kurz einen Link in den Raum werfen, den man vielleicht mal länger beobachten kann, um zu sehen wie es mit den PHP Frameworks steht: zend framework, cakephp, symfony, codeigniter Job Trends zend framework jobs - cakephp jobs - symfony jobs - codeigniter jobs Das wars auch schon ;) - [IP-Adressen: Personenbezogene Daten oder nicht?](https://phpgangsta.de/ip-adressen-personenbezogene-daten-oder-nicht) - In der iX 11/2009 fand ich einen sehr interessanten Artikel zum Thema "Zu sorglose Speicherung und Weitergabe von IP-Adressen?". Wir als Informatiker machen uns da eher selten Gedanken drüber, und lassen einfach die Standard-Einstellungen der Software so wie sie sind. Dass dies aber ein Problem sein kann (oder werden kann) zeigt der Artikel recht deutlich. - [Pflichtfelder mit Sternchen markieren via CSS](https://phpgangsta.de/pflichtfelder-mit-sternchen-markieren-via-css) - Oft möchte man in einem Formular eine Prüfung einbinden, die anschlägt, wenn das Feld nicht gefüllt wurde. Das geht mit dem Zend Framework und Zend_Form sehr einfach: Mit der setRequired() Funktion fügen wir automatisch eine NotEmpty-Prüfung hinzu, außerdem erhält das Element die CSS-Klasse "required": Wenn das Formular nun abgeschickt wird und das Feld leer bleibt, - [Programmierprinzipien: Law of Demeter](https://phpgangsta.de/programmierprinzipien_law_of_demeter) - Professor Ian Holland hat zu Beginn der objektorientierten Zeit (1989) bereits eine wichtige Richtlinie definiert, die die lose Kopplung von Klassen sicherstellen soll: Das "Gesetz von Demeter" (Law of Demeter, LoD). Wenn man Klassen soweit es geht voneinander trennt, sind sie übersichtlicher, besser wartbar und testbar, leichter weiterzuentwickeln und wiederzuverwenden. Umgangssprachlich könnte man es beschreiben - [Virtualisierung: ESXi ausprobieren auf dem Mac](https://phpgangsta.de/virtualisierung-esxi-ausprobieren-auf-dem-mac) - Wer sich mit Virtualisierung beschäftigt, kommt um VMWare nicht herum. VMWare Workstation haben sicherlich einige von euch schon ausprobiert, sobald es dann aber in Richtung "Server-Virtualisierung" geht wird die Luft schon dünner. Wenn man Virtualisierungssoftware (auch Hypervisor genannt) grob unterteilen möchte, gibt es 2 Arten: Hypervisor, die direkt auf der Hardware laufen ("bare metal", also - [.Net Programmierer hier? Verlosung zu Basta!-Konferenz-Tickets!](https://phpgangsta.de/net-programmierer-hier-verlosung-zu-basta-konferenz-tickets) - Die Kollegen von webmasterpro haben mich auf ihre neue Verlosung hingewiesen. Falls sich also ein .Net/C#/Silverlight/Azure - Interessierter hier herumtreibt, sollte er an der Verlosung zu den Tickets teilnehmen. Dazu ist einfach nur ein Kommentar dort zu hinterlassen. Es gibt volle 3 Tage Konferenzteilnahme in Darmstadt für die 2010 stattfindende Basta! zu gewinnen. - [Wave Einladungen für Interessierte](https://phpgangsta.de/wave-einladungen-fur-interessierte) - Ich kann mich noch nicht dazu durchringen, ein umfassendes Urteil über Google Wave abzugeben, aber der erste Eindruck ist sehr ernüchternd. Es kommt mir so vor wie ein webbasierter Messenger, bei dem man mehrere Personen in Räume einladen kann und viel Zeit verbraten kann. Nebenbei noch Dateien tauschen. Nichts was man mit Threaded Emails oder - [Blog URL Struktur geändert](https://phpgangsta.de/blog-url-struktur-geandert) - So, nun habe ich etwas Zeit gehabt und auf die suchmaschinenfreundliche URL-Struktur umgestellt. Vorher hatte ich umgestellt auf /%post_id% , sodass Artikel unter https://www.phpgangsta.de/630 verfügbar waren. Das war primär dafür gemacht, dass ich diese kurzen URLs in Twitter nutzen kann, da ich Short-URL-Dienste hasse (man weiß nie was dahinter versteckt ist). Nun habe ich die - [Taugt Zend_Queue etwas?](https://phpgangsta.de/taugt-zend_queue-etwas) - In einem älteren Artikel schrieb ich bereits über asynchrone Aufgaben. Heute möchte ich Zend_Queue vorstellen, womit man Aufgaben speichern kann, die später erledigt werden sollen. Eine solche Message-Queue hat zwei Aufgaben: Aufgaben sollen erstellt werden können inklusive Details was zu tun ist, sowie Möglichkeiten bereitstellen, diese Aufgaben später wieder auslesen zu können, um sie abzuarbeiten. - [Die eigene Suchmaschine in PHP leicht gemacht: Lucene](https://phpgangsta.de/die-eigene-suchmaschine-in-php-leicht-gemacht-lucene) - Nicht nur Google hat ausgereifte Suchalgorithmen, jeder Programmierer kann sich auch seine eigene Volltextsuche auf die Webseite bauen. Das können zum Beispiel alle Unterseiten sein, die durchsucht werden sollen, aber auch Dateien, Emails, Dokumente und Texte jeglicher Art. Ich werde am Ende auch kurz aufzeigen, warum der Mysql-Volltextindex kein guter bzw. schneller Index ist, und - [Kinotipp: Paranormal Activities](https://phpgangsta.de/kinotipp-paranormal-activities) - Heute ein kleiner Artikel, der absolut garnichts mit PHP zu tun hat. Wir waren gerade im Kino, und ich kann jedem nur empfehlen: Geht auch rein und guckt euch den Film an. Paranormal Activities. Zwei von uns vier Leuten sind keine wirklichen Horrorfans, aber wir entschlossen uns doch, reinzugehen. Und es hat uns umgehauen. Trotz - [PHP 5.3.1 und Zend Framework Bug Hunt Day](https://phpgangsta.de/php-5-3-1-und-zend-framework-bug-hunt-day) - Kurze Info: PHP 5.3.1 ist gerade released worden. Über 100 Bugs wurden gefixt. Auf php.net/downloads und windows.php.net/download steht alles zum Download bereit. Außerdem läuft gerade der November Bug Hunt Day des Zend Frameworks. Nach einem Tag sind bereits 59 Issues geschlossen worden, ich bin sehr gespannt wo der Counter morgen Abend steht! Achja, noch eine - [Zuhause im IPv6 Web surfen (Teil1: Ubuntu)](https://phpgangsta.de/zuhause-im-ipv6-web-surfen) - Das neue Internet Protokoll in der Version 6 wird kommen, soviel ist sicher. Da es ein langsamer Umstieg ist, leben wir aktuell in einer zweigeteilten Welt: Der alten IPv4 Welt und der neuen IPv6 Welt. Einige Länder sind bei der Umstellung schneller, andere müssen noch mehr oder weniger dazu gezwungen werden. Ganz getrennt sind die - [Zuhause im IPv6 Web surfen (Teil2: Windows)](https://phpgangsta.de/zuhause-im-ipv6-web-surfen-teil2-windows) - In Teil 1 haben wir bereits die Grundlagen von IPv4to6 Tunneling besprochen, wie man aus einem IPv4 Netz in das IPv6 Netz tunneln kann. Hier nun ein paar Screenshots zur Installation unter Windows: (Diese Installation ist unter Windows 7 gemacht worden, unter Vista/Xp sollte es genauso funktionieren denke ich) Vorher ist eine Verbindung zu http://www.six.heise.de - [Alter Code und das Grausen](https://phpgangsta.de/alter-code-und-das-grausen) - Da Nils in seinem Blog dazu aufgerufen hat, "fiesen Code" zu publizieren, will ich mich daran beteiligen. Die Frage ist, wie "fies" zu definieren ist. Die Aufgabenstellung lautet genau: "Wer kann das fieseste Script basteln?". Ich habe vor Kurzem diesen Code hier in einem sehr alten Verzeichnis gefunden (ich habe ihn also nicht gebastelt, sondern - [Kostenlos zur PHP World Kongress in München!](https://phpgangsta.de/kostenlos-zur-php-world-kongress-in-munchen) - Ich habe heute eine Email erhalten von webmasterpro.de. Dort läuft aktuell eine Verlosung, bei der man ein Ticket für den PHP World Kongress 2009 in München gewinnen kann. Normalerweise kostet das Ticket 890 €! Wer also am 24./25. November 2009 (das ist in genau einer Woche) zum Kongress möchte, muss nur unter dem Artikel einen - [Mein Pagerank](https://phpgangsta.de/mein-pagerank) - So langsam scheint Google zu merken, dass mein Blog wichtig ist! ;-) Am 17.09. war ich noch auf Platz 149 zu finden, wenn man nach "php blog" sucht. 26.09. Platz 95 29.09. Platz 52. 06.10. Platz 46 02.11. Platz 48 Ich bin mir noch nicht ganz sicher, warum das gerade stagniert. Aber es gibt einen - [Asynchron Aufgaben erledigen (lassen)](https://phpgangsta.de/asynchron-aufgaben-erledigen-lassen) - Was könnte der Autor damit meinen, werdet ihr euch fragen. Naja, das ist schnell erklärt: hier und da hat man mal kleine Aufgaben, die evtl. etwas länger dauern, von dessen Ergebnis der User aber nicht wissen muss. Warum also soll man damit seine PHP-Scripte ausbremsen, und den User warten lassen? Ihn interessiert das Ergebnis ja - [Javascript Web Worker](https://phpgangsta.de/javascript-web-worker) - Ergänzend zu einem älteren Artikel über Google Gears hier eine kurze Statusmeldung: Mittlerweile sind die modernen Browser (zur Zeit Firefox 3.5, Safari 4 und Google Chrome) in der Lage, die Funktionalität der Worker auch ohne das Gears-Plugin anzubieten, sodass man auf eine große Anzahl an Nutzern zurückgreifen kann. Wir werden also in Zukunft vermehrt tolle - [Konstanten, Klassenkonstanten und der Zugriff](https://phpgangsta.de/konstanten-klassenkonstanten-und-der-zugriff) - Variablen kennt jeder. Konstante werden deutlich seltener genutzt, haben aber auch ihre Daseinsberechtigung, vor allem bei Werten, die wir einmalig am Anfang setzen wollen und im späteren Verlauf auf keinen Fall geändert werden sollen. Normale Konstanten in PHP werden angelegt mit Darauf zugegriffen wird einfach mit dem Konstantennamen: In der objektorientierten Welt grauselt es einem, - [PHP beschleunigen mit dem APC](https://phpgangsta.de/php-beschleunigen-mit-dem-apc) - Frameworks im Allgemeinen sind eine sehr tolle Sache. Sie bieten eine Menge Klassen und Funktionalitäten, um einem die Arbeit zu erleichtern. Viele Teile eines Frameworks kann man auch einzeln nutzen, und diese sind häufig auch recht schlank gehalten. Kernkomponenten jedoch, wie in diesem Beispiel das MVC-Konzept des Zend Frameworks, neigen dazu, recht viele Funktionen mitzubringen, - [PHP und die lose Typisierung](https://phpgangsta.de/php-und-die-lose-typisierung) - Heute mal eine sehr praktische Erfahrung: Der Kollege nebenan fragte, ob ich mal kurz rübergucken kann, er verstehe die Ausgabe einer Funktion nicht. Vereinfacht sah der Code so aus (über Sinn und Unsinn soll hier nicht diskutiert werden, es ist nur vereinfacht dargestellt): Die Funktion erwartet ein Array mit Header-Informationen. Diese sollen durchlaufen werden, und - [Client-IP Problem bei Reverse-Proxy-Betrieb](https://phpgangsta.de/client-ip-problem-bei-reverse-proxy-betrieb) - In einem meiner letzten Artikel schrieb ich ja bereits über Reverse-Proxies. Der Reverse-Proxy nimmt die Verbindung vom Client (Browser) entgegen, dann kann er entweder selbst den Request bedienen (statische Dateien von der lokalen Platte oder aus dem Cache), oder er verbindet sich zu einem der Backend-Webserver, ruft dort die geforderte Datei ab, und sendet sie - [Webseite testen mit Browser Sandboxen](https://phpgangsta.de/webseite-testen-mit-browser-sandboxen) - Wer halbwegs professionell Webseiten erstellt, möchte natürlich auch, dass alle Besucher die Seite so sehen, wie es der Entwickler geplant hat. Leider gibt es teilweise deutliche Unterschiede, wie eine Webseite in den verschiedenen Browsern aussieht. Theoretisch ist alles so einfach: Es gibt Standards, um Webseiten zu erstellen, und Standards, wie die Browser den (X)HTML Quelltext - [Algorithmus-Wettbewerb: Shortest Path](https://phpgangsta.de/algorithmus-wettbewerb-shortest-path) - Da eine Diskussion in den Kommentaren aufkam, warum eine Berechnung einer "Browsergame-Weltkarte" so lang dauert, möchte ich hier dazu aufrufen, euer geballtes Uni-Wissen anzubringen und der ganzen Welt zu zeigen, wie man das Problem effizient und schnell löst. Ausgangslage: Wir haben eine quadratische Weltkarte, die aus 100*100 Feldern besteht. Da die Spieler von jedem Feld - [Gewinnspiel: Zend Framework Poster](https://phpgangsta.de/gewinnspiel-zend-framework-poster) - Ich habe noch ein Zend Framework Poster von mayflower zu verschenken. In der Firma habe ich bereits eins an die Wand gepinnt, und jetzt ist mir noch ein zweites in die Hand gefallen. Wenn ihr es kostenlos zugeschickt haben wollt, müsst ihr nur eine der folgenden Bedingungen erfüllen: Einen schönen Gastartikel hier im Blog verfassen - [Verteiltes Rechnen mit Javascript und Google Gears](https://phpgangsta.de/verteiltes-rechnen-mit-javascript-und-google-gears) - Wie ich ja bereits des öfteren anmerkte, habe ich früher ein Browsergame programmiert. Begonnen habe ich 2003, als es erst recht wenige Browsergames gab, und diese auch alle von Privatleuten als Hobby betrieben wurden. Da man natürlich Alleinstellungsmerkmale braucht gegen "die Konkurrenz", baut man viele Ideen ein, die andere nicht haben. Unter anderem war in - [GeoLocation mit modernen Browsern](https://phpgangsta.de/geolocation-mit-modernen-browsern) - Der ein oder andere von euch hat vielleicht schonmal mit GeoLocations experimentiert. Es gibt freie GeoDatenbanken und GeoIP-Datenbanken, mit denen man eine IP-Adresse umwandeln kann in einen Ort (bzw. Region/Land). Als ich nun vor einigen Monaten hörte, dass der Firefox bald eine neue GeoLocation-Funktionalität erhält, womit dann viele neue standortabhängige Dienste möglich sind, war ich - [PHP-Unconference 2009 am Wochenende](https://phpgangsta.de/php-unconference-2009-am-wochenende) - Die PHP-Unconference findet dieses Jahr wieder statt, und zwar vom 12.09. - 13.09.2009 (also nächstes Wochenende!) im Hamburger Geomatikum. Da ich den Termin letztes Jahr verpasst habe, bin ich umso glücklicher, dieses Jahr dabei sein zu können. Da ich dort privat hinfahre, kommt mir der Preis von 25 Euro natürlich sehr entgegen. Andere (größere) PHP-Konferenzen - [CSS Sprites](https://phpgangsta.de/css-sprites) - In einem meiner letzten Artikel zum Thema " Externe Javascript Dateien zusammenfassen" haben wir bereits gemerkt, dass man HTTP-Requests verringern sollte, um die Performance auf dem Client und die Benutzererfahrung zu verbessern. Dies kann im Falle von CSS-Dateien weniger effektiv sein als beispielsweise bei Javascript-Dateien. Bei Bildern in großer Anzahl muss der Browser diese auch - [Traffic pro eingeloggtem User herausfinden](https://phpgangsta.de/traffic-pro-eingeloggtem-user-herausfinden) - Den Traffic einer ganzen Seite herauszufinden ist nicht sonderlich schwer in Zeiten von awstats, webalizer und diversen anderen Apache-Log-Analyzern. Doch ich wollte damals bei meinem eigenen Browsergame den Traffic pro eingeloggtem User messen. Idee war damals, den "Free Accounts" 100MB pro Monat zu schenken, falls mehr benötigt wird, muss ein Premium-Account her. Doch wie stellt - [Optimierung meines Blogs](https://phpgangsta.de/optimierung-meines-blogs) - SEO ist in aller Munde. Es gibt Millionen von SEO-Experten, die einen "100%-ig auf Platz 1 bei Google" bringen können. Natürlich für viel Geld, und mit komischen, teils verbotenen Methoden. Ich verlasse mich da lieber auf die kleinen Tipps und Tricks, die man so liest, und die auch Sinn machen. Auch Google gibt Webmastern Tipps, - [Echo, Print und die Parameter](https://phpgangsta.de/echo-print-und-die-parameter) - Wenn man sehr viel mit Strings und Stringausgaben arbeitet, und dabei maximale Performance braucht, gibt es einige Tricks, die dabei helfen, die letzten Prozente rauszuholen. Bedenkt also: Diese leichten Performance-Unterschiede bringen nur bei sehr großen Scripten etwas. Bei einer kleinen Webseite oder ähnlichem ist der Unterschied zu vernachlässigen, da zählt mehr die persönliche Vorliebe und - [CSS aufräumen mit "Dust-Me Selectors"](https://phpgangsta.de/css-aufraumen-mit-dust-me-selectors) - Ein tolles Firefox-Addon habe ich in meinem Repertoire gefunden, das ich euch vorstellen möchte: Dust-Me Selectors. Damit kann man einfach seine Seite durch browsen, und das Addon zeigt an, welche CSS-Selektoren geladen werden, welche davon genutzt werden und welche nicht genutzt werden. Es findet sowohl inline-CSS als auch externe CSS-Dateien. Alternativ kann man auch eine - [Wie erstelle ich einen Socket-Server in PHP?](https://phpgangsta.de/wie-erstelle-ich-einen-socket-server-in-php) - In einem meiner letzten Artikel über Windows-Dienste habe ich ja bereits angesprochen, dass auch Dienste aller Art in PHP realisiert werden können. In jenem Artikel erwähnte ich auch, dass es bereits Webserver, FTP-Server, DNS-Server etc. in PHP gibt. Heute zeige ich euch, wie man das machen kann. Grundsätzlich haben all diese Dienste gemeinsam, dass sie - [Was ist "Cross Site Request Forgery" (CSRF)?](https://phpgangsta.de/was-ist-cross-site-request-forgery-csrf) - Der ein oder andere mag es schon mal gelesen haben, aber es fristet nach wie vor ein Nischen-Dasein: Cross-Site Request Forgery. Dieses Sicherheitsproblem von Webseiten aller Art (es macht eigentlich nur Sinn wenn es einen Login auf der Seite gibt) ist recht verbreitet, und ich möchte es hier zusammenfassen und Beispiele zeigen, wie auch eure - [Ein PHP-Script als Windows-Dienst starten](https://phpgangsta.de/ein-php-script-als-windows-dienst-starten) - Viele wichtige Dinge weltweit laufen permanent und tun endlos ihren Job. Webserver warten auf Besucher, Berechnungsprogramme rechnen Tag und Nacht, FTP-Server warten auf Datenübertragungen und SSH-Server warten auf Benutzer. Auch mit PHP kann man all solche Dinge lösen. Es gibt bereits DNS-Server geschrieben in PHP, selbst ein Webserver in PHP ist verfügbar, ein Continuous Integration - [Daten verschlüsselt übertragen mit PHP und SSH](https://phpgangsta.de/daten-verschlusselt-ubertragen-mit-php-und-ssh) - Kann man mit PHP Daten oder Dateien zwischen 2 Rechnern verschlüsselt übertragen? Natürlich kann man, wenn die Gegenstelle es auch beherrscht. Hier soll es weder um eine Verschlüsselung zwischen Browser und Webserver (HTTPS) noch um die verschlüsselte Kommunikation zu einem Mailserver (IMAPS oder POPS) oder einem FTP (FTPS) gehen, sondern um eine Verschlüsselung zwischen 2 - [Mit PHP das Server-Betriebssystem erkennen](https://phpgangsta.de/mit-php-das-server-betriebssystem-erkennen) - Häufig möchte man das Betriebssystem des Besuchers erkennen, um beispielsweise Statistiken zu führen. Noch häufiger wird natürlich der Browser abgefragt, aber das ist hier auch nicht gemeint. In diesem Fall möchte ich das Betriebssystem erkennen, unter dem mein PHP-Script läuft. "Warum willst du das herausfinden, du weißt doch wohl, wo deine Scripte laufen!" sagt ihr - [LDAP Authentifizierung und andere Abfragen](https://phpgangsta.de/ldap-authentifizierung-und-andere-abfragen) - Zuhause beim Programmieren oder bei der Erstellung von einfachen Webseiten wird man mit LDAP wahrscheinlich nicht viel zu tun haben, doch wenn man häufiger Intranet-Projekte erstellt oder in irgendeiner Weise den Login an ein OpenLDAP-Verzeichnis oder ActiveDirectory knüpfen will, kommt man an LDAP kaum vorbei. Grundsätzliche Informationen über LDAP und ActiveDirectory findet man natürlich bei - [Status, und bevor ich es wieder vergesse](https://phpgangsta.de/status-und-bevor-ich-es-wieder-vergesse) - Als erstes möchte ich mich entschuldigen für die letzten Tage, wo ich nichts von mir hab hören lassen. Durch den Urlaub, den ich letzte Woche hatte, habe ich den Blog etwas vernachlässigt. Außerdem bin ich nach wie vor auf der Suche nach einem stabilen, unbefristeten Job als PHP-Entwickler hier im Münsterland, weshalb ich hier und - [Sinnvolle SVN Hooks für PHP Projekte](https://phpgangsta.de/sinnvolle-svn-hooks-fur-php-projekte) - Dieser Artikel ist nur für diejenigen gedacht, die SVN bereits kennen. Wer jetzt die Stirn runzelt, möge sich vorher bei wikipedia oder youtube informieren und mal erste Versuche mit einem SVN-Server sammeln. Erstmal zur Begrifflichkeit ansich: Hooks sind Interfaces zu kleinen externen Programmen, die zu bestimmten Zeiten während eines Programmablaufs aufgerufen werden können. Sie klinken - [Gewinner des Buches steht fest](https://phpgangsta.de/gewinner-des-buches-steht-fest) - So, ich habe es doch noch geschafft, der Gewinner der Verlosung steht fest. Fix einen schönen Zufallsgenerator geschrieben (natürlich in PHP mit dem Zend Framework, Dojo und ein bischen Javascript), und dann das ganze auch noch aufgenommen. Die php-Dateien gibts natürlich auch zum Download, falls ihr auch mal einen so schönen Zufallsgenerator braucht ;-) (Also - [Verlosung des Buches "PHP 5.3 - Die Neuerungen"](https://phpgangsta.de/verlosung-des-buches-php-5-3-die-neuerungen) - So, nun ist es soweit, ich verlose das vor kurzem von mir gewonnene Buch "PHP 5.3 - Die Neuerungen" von entwickler.press. Was müßt ihr dafür tun? Eigentlich nicht viel. Da ich keine Adressen sammeln möchte (weder postalische noch Email-Adressen), habe ich mir etwas anderes ausgedacht. Nicht ganz uneigennützig, aber ihr sollt ja auch etwas dafür - [PHP beschleunigen mittels Caching: Zend_Cache](https://phpgangsta.de/php-beschleunigen-mittels-caching-zend_cache) - Der Titel ist vielleicht nicht ganz korrekt: PHP selbst kann man durch Caching nicht direkt beschleunigen, aber PHP-Applikationen. Sobald man mit Datenbanken und Objekten arbeitet, fällt einem schnell auf, dass man gern für vieles eigene Objekte bastelt. Häufig ist es so, dass es für fast jede Tabelle eine Klasse gibt, und jede Zeile einer Tabelle - [Nicht-HTML-Responses mit dem Zend Framework](https://phpgangsta.de/nicht-html-responses-mit-dem-zend-framework) - Wenn man dynamische Bilder oder RSS-Feeds oder einen AJAX/JSON-Service oder ein Excel-Export mithilfe des Zend Frameworks erstellen will, mußt man 2-3 wichtige Dinge beachten. Der Code soll dann in einem Rss-/Graph-/Ajax-/Export-Controller stehen. Ein Problem bekommt man, wenn man ein Layout benutzt (Zend_Layout). Denn dann wird dieses Layout immer ausgegeben. Im hier betrachteten Fall wäre das - [PDT 2.1 unter Windows mit Subclipse SVN Client](https://phpgangsta.de/pdt-2-1-unter-windows-mit-subclipse-svn-client) - Meine aktuell favorisierte IDE für PHP ist eclipse. Eclipse ist eine vielfach nutzbare IDE, die ursprünglich für Java gedacht ist, aber auch andere Sprachen wie PHP, C, C++ und einige weitere unterstützt. Zend höchstselbst entwickelt die "PHP Development Tools", auch PDT genannt, was im Prinzip ein eclipse inclusive aller nötigen PHP-Module plus den Zend-Local-Debugger ist. - [PHP 5.3 released!](https://phpgangsta.de/php-5-3-released) - Closures, Late Static Binding, Namespaces, neuer Mysql Native Driver, Garbage Collection und und und. Wem das (noch) nichts sagt, sollte sich in den nächsten Tagen und Wochen damit beschäftigen (hier im Blog werde ich sicherlich auch einiges davon vorstellen), denn PHP 5.3 wurde soeben offiziell released! http://www.php.net/downloads.php Ich persönlich würde damit zwar noch nicht auf - [Firewall Beschränkungen prüfen](https://phpgangsta.de/firewall-beschrankungen-prufen) - Zuhause hat man diese Probleme wohl nicht so sehr, und auch auf einem Rootserver braucht man sich nur sehr selten damit rumplagen: Firewalls, die den Zugriff auf andere Systeme blocken. Firewalls sind im Prinzip nichts anderes als Programme (oder Hardware), die im Netzwerk oder auf einem System installiert sind und Netzwerkpakete (nicht nur TCP/IP, sondern - [Erste Twitter Tests](https://phpgangsta.de/erste-twitter-tests) - Da Twitter in aller Munde ist, habe ich es mir am Wochenende nun auch mal angeschaut und mir einen Account eingerichtet. Zwar schon die letzten Monate des öfteres gehört und gelesen, konnte ich mich bisher nicht davon überzeugen lassen. Da auch keiner meiner Bekannten twittert, war der Anreiz nicht wirklich groß. Jetzt am Wochenende habe - [Thumbnails erstellen mit PHP](https://phpgangsta.de/thumbnails-erstellen-mit-php) - Da es im Zend Framework keine schöne Klasse für diese Aufgabe gibt (Zend_Image gab es mal als Proposal, wurde aber abgelehnt), muss man anderweitig eine Lösung finden. Ich habe dazu eine uralte Funktion, die aber nach wie vor fabelhaft funktioniert. Man übergibt einfach nur den Pfad zur Quelldatei (häufig ist das eine hochgeladene Datei, es - [Ich mache mit: OpenStreetMap!](https://phpgangsta.de/ich-mache-mit-openstreetmap) - Schon seit über 2 Jahren kenne ich das Projekt OpenStreetMap (OSM). Im April hat mich dann das Fieber gepackt und ich habe angefangen, meinen Heimatort Oelde zu kartographieren. Zu diesem Zeitpunkt gab es ungefähr 10 eingezeichnete Straßen, wohl von jemandem, der mal zufällig durchgefahren ist. Doch zuerst ein paar grundlegende Informationen: OSM ist eine freie - [Interessante PHP Links](https://phpgangsta.de/interessante-php-links) - So, heute würde ich gern einige Seiten nennen, die interessant sein könnten für alle, die mit PHP und dem Zend Framework zu tun haben. Ich liste sie hier einfach auf, erwartet keine großen Erklärungen und Meinungen, sie sind alle gut und interessant ;-) Blogs http://www.phphatesme.com http://weierophinney.net/matthew/ IT News aller Art: http://www.heise.de http://www.golem.de http://www.tomshardware.de ZF http://framework.zend.com - [PHP und die Konsole/STDIN](https://phpgangsta.de/php-und-die-konsolestdin) - Heute in der Firma durfte ich einen kleinen Ausflug auf die Konsole machen. Ziel war es, ein kleines Script zu schreiben, welches via "Standard-Eingabe" ein serialisiertes Objekt erhält, und dann eine Email versendet mit Informationen aus diesem Objekt. Da man das nicht allzu oft macht, hier ein paar Grundlagen: Sowohl unter Linux als auch Windows - [Design angepasst](https://phpgangsta.de/design-angepasst) - So, ich habe das Theme gewechselt, und mein Bruder hat mir sogar einen individuellen Header spendiert! Alles was Grafik betrifft ist nicht so mein Ding, aber dafür kennt man ja seine Leute :-) Danke dafür! - [Wordpress und meine Plugins](https://phpgangsta.de/wordpress-und-meine-plugins) - Da dies mein erster Blog ist, experimentiere ich natürlich auch etwas mit Wordpress. Aktuell habe ich die Plugins WP-Cumulus WP-Memory-Usage WP-ServerInfo SyntaxHighlighter Evolved installiert. Gibt es sonst noch welche, die ich unbedingt kennen muss und nutzen sollte? Was tut ihr gegen Spam in den Comments? Akismet wird ja bereits mitgeliefert, man muss es nur noch - [PHP und das Zend Framework](https://phpgangsta.de/php-und-das-zend-framework) - Wer öfter programmiert, wird früher oder später auf Frameworks zurückgreifen. Frameworks, das sind Sammlungen von häufig genutztem Programmcode, heutzutage für jede ernsthafte Programmiersprache erhältlich und ziemlich mächtig. Sie können einem durchaus 50% der Zeit ersparen, denn viele Dinge braucht man immer wieder, und genau diese Dinge sind mit guten Frameworks abgedeckt. Frameworks bieten einem auch ## Seiten - [Newsletter](https://phpgangsta.de/newsletter) - [newsletter] - [Datenschutzerklärung](https://phpgangsta.de/datenschutzerklaerung) - Wer wir sind Die Adresse unserer Website ist: https://www.phpgangsta.de. Welche personenbezogenen Daten wir sammeln und warum wir sie sammeln Kommentare Wenn Besucher Kommentare auf der Website schreiben, sammeln wir die Daten, die im Kommentar-Formular angezeigt werden, außerdem die IP-Adresse des Besuchers und den User-Agent-String (damit wird der Browser identifiziert), um die Erkennung von Spam zu - [Über mich | Impressum](https://phpgangsta.de/ueber-mich-impressum) - Tja, was soll ich schreiben. In meinem Personalausweis stehen unter dem Stichwort Name in Druckbuchstaben 2 Worte: Michael Kliewe. Geboren wurde ich im September 1981, und wohne im westfälischen Oelde. Ich arbeite aktuell in Gütersloh bei der mail.de GmbH als Software Developer und PHP ist mein täglich Brot. Meinen Werdegang kann man am besten bei - [Archiv](https://phpgangsta.de/archiv) - [smart_archives] - [Buchtipps](https://phpgangsta.de/buchtipps) - Ich habe in meinem Leben schon einige hundert Bücher und Magazine gelesen, viele davon behandeln PHP oder das Programmieren allgemein. Hier eine Liste von Büchern, die ich gelesen habe. Sowohl für Anfänger aber auch für Fortgeschrittene und professionelle Entwickler ist etwas dabei: Softwarequalität in PHP Projekten (Rezension) You want to do WHAT with PHP? PHP ## Kategorien - [Allgemein](https://phpgangsta.de/category/allgemein) - [PHP](https://phpgangsta.de/category/php) - [Privates](https://phpgangsta.de/category/private) - [windows](https://phpgangsta.de/category/windows) - [Javascript](https://phpgangsta.de/category/javascript) - [Linux](https://phpgangsta.de/category/linux) - [Server-Software](https://phpgangsta.de/category/server-software) ## Schlagwörter - [Vorstellung](https://phpgangsta.de/tag/vorstellung) - [Michael Kliewe](https://phpgangsta.de/tag/michael-kliewe) - [Gangsta](https://phpgangsta.de/tag/gangsta) - [Xing](https://phpgangsta.de/tag/xing) - [zend framework](https://phpgangsta.de/tag/zend-framework) - [wordpress](https://phpgangsta.de/tag/wordpress) - [plugins](https://phpgangsta.de/tag/plugins) - [design](https://phpgangsta.de/tag/design) - [uml](https://phpgangsta.de/tag/uml) - [svn](https://phpgangsta.de/tag/svn) - [git](https://phpgangsta.de/tag/git) - [vcs](https://phpgangsta.de/tag/vcs) - [eclipse](https://phpgangsta.de/tag/eclipse) - [browser](https://phpgangsta.de/tag/browser) - [xenocode](https://phpgangsta.de/tag/xenocode) - [sandbox](https://phpgangsta.de/tag/sandbox) - [osm](https://phpgangsta.de/tag/osm) - [thumbnail](https://phpgangsta.de/tag/thumbnail) - [gd](https://phpgangsta.de/tag/gd) - [image](https://phpgangsta.de/tag/image) - [ftp](https://phpgangsta.de/tag/ftp) - [port](https://phpgangsta.de/tag/port) - [firewall](https://phpgangsta.de/tag/firewall) - [porttest](https://phpgangsta.de/tag/porttest) - [twitter](https://phpgangsta.de/tag/twitter) - [ccc](https://phpgangsta.de/tag/ccc) - [twittersuite](https://phpgangsta.de/tag/twittersuite) - [php 5.3](https://phpgangsta.de/tag/php-5-3) - [release](https://phpgangsta.de/tag/release) - [rss](https://phpgangsta.de/tag/rss) - [ajax](https://phpgangsta.de/tag/ajax) - [Zend_Layout](https://phpgangsta.de/tag/zend_layout) - [html](https://phpgangsta.de/tag/html) - [excel](https://phpgangsta.de/tag/excel) - [entwickler.press](https://phpgangsta.de/tag/entwickler-press) - [rezension](https://phpgangsta.de/tag/rezension) - [migration](https://phpgangsta.de/tag/migration) - [Zend_Cache](https://phpgangsta.de/tag/zend_cache) - [buch](https://phpgangsta.de/tag/buch) - [Verlosung](https://phpgangsta.de/tag/verlosung) - [phphatesme](https://phpgangsta.de/tag/phphatesme) - [Gewinner](https://phpgangsta.de/tag/gewinner) - [profiling](https://phpgangsta.de/tag/profiling) - [cachegrind](https://phpgangsta.de/tag/cachegrind) - [xdebug](https://phpgangsta.de/tag/xdebug) - [subversion](https://phpgangsta.de/tag/subversion) - [hooks](https://phpgangsta.de/tag/hooks) - [Job](https://phpgangsta.de/tag/job) - [php hates me](https://phpgangsta.de/tag/php-hates-me) - [Blog](https://phpgangsta.de/tag/blog) - [LDAP](https://phpgangsta.de/tag/ldap) - [Authentication](https://phpgangsta.de/tag/authentication) - [Active Directory](https://phpgangsta.de/tag/active-directory) - [Zend_Auth_Adapter_Ldap](https://phpgangsta.de/tag/zend_auth_adapter_ldap) - [Verschlüsselung](https://phpgangsta.de/tag/verschlusselung) - [SSH](https://phpgangsta.de/tag/ssh) - [SFTP](https://phpgangsta.de/tag/sftp) - [dienst](https://phpgangsta.de/tag/dienst) - [service](https://phpgangsta.de/tag/service) - [pecl](https://phpgangsta.de/tag/pecl) - [win32service](https://phpgangsta.de/tag/win32service) - [CSRF](https://phpgangsta.de/tag/csrf) - [Security](https://phpgangsta.de/tag/security) - [Token](https://phpgangsta.de/tag/token) - [XSS](https://phpgangsta.de/tag/xss) - [NoScript](https://phpgangsta.de/tag/noscript) - [socket](https://phpgangsta.de/tag/socket) - [chat server](https://phpgangsta.de/tag/chat-server) - [css](https://phpgangsta.de/tag/css) - [speed](https://phpgangsta.de/tag/speed) - [fast](https://phpgangsta.de/tag/fast) - [firefox](https://phpgangsta.de/tag/firefox) - [addon](https://phpgangsta.de/tag/addon) - [Dust-Me Selectors](https://phpgangsta.de/tag/dust-me-selectors) - [aufräumen](https://phpgangsta.de/tag/aufraumen) - [echo](https://phpgangsta.de/tag/echo) - [print](https://phpgangsta.de/tag/print) - [performance](https://phpgangsta.de/tag/performance) - [SEO](https://phpgangsta.de/tag/seo) - [SEO all in One Pack](https://phpgangsta.de/tag/seo-all-in-one-pack) - [Optimierung](https://phpgangsta.de/tag/optimierung) - [Suchmaschinen Optimierung](https://phpgangsta.de/tag/suchmaschinen-optimierung) - [Wordpress Plugin](https://phpgangsta.de/tag/wordpress-plugin) - [apache](https://phpgangsta.de/tag/apache) - [webserver](https://phpgangsta.de/tag/webserver) - [log](https://phpgangsta.de/tag/log) - [mysql](https://phpgangsta.de/tag/mysql) - [datenbank](https://phpgangsta.de/tag/datenbank) - [access_log](https://phpgangsta.de/tag/access_log) - [sprites](https://phpgangsta.de/tag/sprites) - [css sprites](https://phpgangsta.de/tag/css-sprites) - [browser performance](https://phpgangsta.de/tag/browser-performance) - [Geolocation](https://phpgangsta.de/tag/geolocation) - [PHP Unconference 2009](https://phpgangsta.de/tag/php-unconference-2009) - [Unconference](https://phpgangsta.de/tag/unconference) - [Hamburg](https://phpgangsta.de/tag/hamburg) - [PHP Unconference](https://phpgangsta.de/tag/php-unconference) - [Session](https://phpgangsta.de/tag/session) - [PHP Performance](https://phpgangsta.de/tag/php-performance) - [Pessimierung](https://phpgangsta.de/tag/pessimierung) - [Cache](https://phpgangsta.de/tag/cache) - [Gears](https://phpgangsta.de/tag/gears) - [Google](https://phpgangsta.de/tag/google) - [Distributed Computing](https://phpgangsta.de/tag/distributed-computing) - [Dijkstra](https://phpgangsta.de/tag/dijkstra) - [Shortest Path](https://phpgangsta.de/tag/shortest-path) - [Pagerank](https://phpgangsta.de/tag/pagerank) - [Suche](https://phpgangsta.de/tag/suche) - [Podcast](https://phpgangsta.de/tag/podcast) - [ZendCasts](https://phpgangsta.de/tag/zendcasts) - [process](https://phpgangsta.de/tag/process) - [popen](https://phpgangsta.de/tag/popen) - [Gearman](https://phpgangsta.de/tag/gearman) - [curl](https://phpgangsta.de/tag/curl) - [server overview](https://phpgangsta.de/tag/server-overview) - [apache access log](https://phpgangsta.de/tag/apache-access-log) - [php tail](https://phpgangsta.de/tag/php-tail) - [Reverse Proxy](https://phpgangsta.de/tag/reverse-proxy) - [Client IP](https://phpgangsta.de/tag/client-ip) - [nginx](https://phpgangsta.de/tag/nginx) - [mod_rpaf](https://phpgangsta.de/tag/mod_rpaf) - [Access Log](https://phpgangsta.de/tag/access-log) - [X_Forwarded_For](https://phpgangsta.de/tag/x_forwarded_for) - [REMOTE_ADDR](https://phpgangsta.de/tag/remote_addr) - [Loose Typing](https://phpgangsta.de/tag/loose-typing) - [lose Typisierung](https://phpgangsta.de/tag/lose-typisierung) - [APC](https://phpgangsta.de/tag/apc) - [Bytecode Cache](https://phpgangsta.de/tag/bytecode-cache) - [Benchmark](https://phpgangsta.de/tag/benchmark) - [PHPUnit](https://phpgangsta.de/tag/phpunit) - [Konstanten](https://phpgangsta.de/tag/konstanten) - [Klassenkonstanten](https://phpgangsta.de/tag/klassenkonstanten) - [define](https://phpgangsta.de/tag/define) - [constant](https://phpgangsta.de/tag/constant) - [Web Worker](https://phpgangsta.de/tag/web-worker) - [mail()](https://phpgangsta.de/tag/mail) - [php mail function](https://phpgangsta.de/tag/php-mail-function) - [mail.add_x_header](https://phpgangsta.de/tag/mail-add_x_header) - [X-PHP-Originating-Script](https://phpgangsta.de/tag/x-php-originating-script) - [php asynchron](https://phpgangsta.de/tag/php-asynchron) - [system](https://phpgangsta.de/tag/system) - [PR](https://phpgangsta.de/tag/pr) - [Suchmaschinenergebnis](https://phpgangsta.de/tag/suchmaschinenergebnis) - [PHP World Kongress 2009](https://phpgangsta.de/tag/php-world-kongress-2009) - [Kongress](https://phpgangsta.de/tag/kongress) - [Conference](https://phpgangsta.de/tag/conference) - [IPv6](https://phpgangsta.de/tag/ipv6) - [Ubuntu](https://phpgangsta.de/tag/ubuntu) - [gw6c](https://phpgangsta.de/tag/gw6c) - [DualStack](https://phpgangsta.de/tag/dualstack) - [IPv6-Tunnel](https://phpgangsta.de/tag/ipv6-tunnel) - [Tunnelbroker](https://phpgangsta.de/tag/tunnelbroker) - [IPv6 Windows](https://phpgangsta.de/tag/ipv6-windows) - [Gateway6 Client](https://phpgangsta.de/tag/gateway6-client) - [gw6c Windows](https://phpgangsta.de/tag/gw6c-windows) - [CSP](https://phpgangsta.de/tag/csp) - [Content Security Policy](https://phpgangsta.de/tag/content-security-policy) - [Bug Hunt Day](https://phpgangsta.de/tag/bug-hunt-day) - [Memcached](https://phpgangsta.de/tag/memcached) - [Kino](https://phpgangsta.de/tag/kino) - [Paranormal Activities](https://phpgangsta.de/tag/paranormal-activities) - [Horror](https://phpgangsta.de/tag/horror) - [Lucene](https://phpgangsta.de/tag/lucene) - [Searchengine](https://phpgangsta.de/tag/searchengine) - [FTS](https://phpgangsta.de/tag/fts) - [Fulltextsearch](https://phpgangsta.de/tag/fulltextsearch) - [Volltextsuche](https://phpgangsta.de/tag/volltextsuche) - [Zend_Queue](https://phpgangsta.de/tag/zend_queue) - [Message Queue](https://phpgangsta.de/tag/message-queue) - [Asynchron](https://phpgangsta.de/tag/asynchron) - [Parallel](https://phpgangsta.de/tag/parallel) - [htaccess](https://phpgangsta.de/tag/htaccess) - [redirect](https://phpgangsta.de/tag/redirect) - [Google Wave](https://phpgangsta.de/tag/google-wave) - [Wave](https://phpgangsta.de/tag/wave) - [Invitations](https://phpgangsta.de/tag/invitations) - [Law of Demeter](https://phpgangsta.de/tag/law-of-demeter) - [LoD](https://phpgangsta.de/tag/lod) - [Single Responsibility Principle](https://phpgangsta.de/tag/single-responsibility-principle) - [Tell don't ask](https://phpgangsta.de/tag/tell-dont-ask) - [Softwareentwicklung](https://phpgangsta.de/tag/softwareentwicklung) - [Gesetz von Demeter](https://phpgangsta.de/tag/gesetz-von-demeter) - [Basta](https://phpgangsta.de/tag/basta) - [.Net](https://phpgangsta.de/tag/net) - [C#](https://phpgangsta.de/tag/c) - [Silverlight](https://phpgangsta.de/tag/silverlight) - [Konferenz](https://phpgangsta.de/tag/konferenz) - [Virtualisierung](https://phpgangsta.de/tag/virtualisierung) - [VMWare](https://phpgangsta.de/tag/vmware) - [ESXi](https://phpgangsta.de/tag/esxi) - [Hypervisor](https://phpgangsta.de/tag/hypervisor) - [required](https://phpgangsta.de/tag/required) - [Zend_Form](https://phpgangsta.de/tag/zend_form) - [Asterisk](https://phpgangsta.de/tag/asterisk) - [Sternchen](https://phpgangsta.de/tag/sternchen) - [IP-Adressen](https://phpgangsta.de/tag/ip-adressen) - [Personenbezogene Daten](https://phpgangsta.de/tag/personenbezogene-daten) - [PHP Frameworks](https://phpgangsta.de/tag/php-frameworks) - [CakePHP](https://phpgangsta.de/tag/cakephp) - [Symfony](https://phpgangsta.de/tag/symfony) - [CodeIgniter](https://phpgangsta.de/tag/codeigniter) - [Webserver Logs](https://phpgangsta.de/tag/webserver-logs) - [Datenschutz](https://phpgangsta.de/tag/datenschutz) - [.co.de](https://phpgangsta.de/tag/co-de) - [Subdomain](https://phpgangsta.de/tag/subdomain) - [imapsync](https://phpgangsta.de/tag/imapsync) - [Mails synchronisieren](https://phpgangsta.de/tag/mails-synchronisieren) - [Mail Backup](https://phpgangsta.de/tag/mail-backup) - [IMAP Konten](https://phpgangsta.de/tag/imap-konten) - [Postfächer](https://phpgangsta.de/tag/postfacher) - [Google App Engine](https://phpgangsta.de/tag/google-app-engine) - [Cloud](https://phpgangsta.de/tag/cloud) - [CDN](https://phpgangsta.de/tag/cdn) - [Content Delivery Network](https://phpgangsta.de/tag/content-delivery-network) - [26C3](https://phpgangsta.de/tag/26c3) - [Familen Duell](https://phpgangsta.de/tag/familen-duell) - [PR 4](https://phpgangsta.de/tag/pr-4) - [ECMAScript 5](https://phpgangsta.de/tag/ecmascript-5) - [Web Storage](https://phpgangsta.de/tag/web-storage) - [localStorage](https://phpgangsta.de/tag/localstorage) - [sessionStorage](https://phpgangsta.de/tag/sessionstorage) - [Javascript Database](https://phpgangsta.de/tag/javascript-database) - [openDatabase](https://phpgangsta.de/tag/opendatabase) - [HTML5](https://phpgangsta.de/tag/html5) - [PHP Blog](https://phpgangsta.de/tag/php-blog) - [PHP Blogs](https://phpgangsta.de/tag/php-blogs) - [Sammlung](https://phpgangsta.de/tag/sammlung) - [Variablen tauschen](https://phpgangsta.de/tag/variablen-tauschen) - [temporäre Variable](https://phpgangsta.de/tag/temporare-variable) - [bitweise XOR](https://phpgangsta.de/tag/bitweise-xor) - [Bewerbung](https://phpgangsta.de/tag/bewerbung) - [levenshtein](https://phpgangsta.de/tag/levenshtein) - [soundex](https://phpgangsta.de/tag/soundex) - [similar_text](https://phpgangsta.de/tag/similar_text) - [String Ähnlichkeit](https://phpgangsta.de/tag/string-ahnlichkeit) - [metaphone](https://phpgangsta.de/tag/metaphone) - [Zend_Ldap](https://phpgangsta.de/tag/zend_ldap) - [OpenLdap](https://phpgangsta.de/tag/openldap) - [SMS](https://phpgangsta.de/tag/sms) - [SMS77](https://phpgangsta.de/tag/sms77) - [SMS Gateway](https://phpgangsta.de/tag/sms-gateway) - [Email2SMS](https://phpgangsta.de/tag/email2sms) - [DirectoryIterator](https://phpgangsta.de/tag/directoryiterator) - [Filesystem handles](https://phpgangsta.de/tag/filesystem-handles) - [opendir](https://phpgangsta.de/tag/opendir) - [readdir](https://phpgangsta.de/tag/readdir) - [scandir](https://phpgangsta.de/tag/scandir) - [tail](https://phpgangsta.de/tag/tail) - [fseek](https://phpgangsta.de/tag/fseek) - [Facebook](https://phpgangsta.de/tag/facebook) - [HipHop](https://phpgangsta.de/tag/hiphop) - [PHP Compiler](https://phpgangsta.de/tag/php-compiler) - [1und1 Webhosting](https://phpgangsta.de/tag/1und1-webhosting) - [HTTP Authorization](https://phpgangsta.de/tag/http-authorization) - [x-mapp-php5](https://phpgangsta.de/tag/x-mapp-php5) - [PHP_AUTH_USER](https://phpgangsta.de/tag/php_auth_user) - [PHP_AUTH_PW](https://phpgangsta.de/tag/php_auth_pw) - [Online IDE](https://phpgangsta.de/tag/online-ide) - [CodeRun](https://phpgangsta.de/tag/coderun) - [Kleinster Blog](https://phpgangsta.de/tag/kleinster-blog) - [Minimaler Code](https://phpgangsta.de/tag/minimaler-code) - [Blog System](https://phpgangsta.de/tag/blog-system) - [Zend_Http_Client](https://phpgangsta.de/tag/zend_http_client) - [WP_Smush.it](https://phpgangsta.de/tag/wp_smush-it) - [wp smushit](https://phpgangsta.de/tag/wp-smushit) - [Bilder optimieren](https://phpgangsta.de/tag/bilder-optimieren) - [png](https://phpgangsta.de/tag/png) - [Mediathek](https://phpgangsta.de/tag/mediathek) - [API](https://phpgangsta.de/tag/api) - [Code_Swarm](https://phpgangsta.de/tag/code_swarm) - [software visualisation](https://phpgangsta.de/tag/software-visualisation) - [gource](https://phpgangsta.de/tag/gource) - [7-PDF](https://phpgangsta.de/tag/7-pdf) - [PDF Konverter](https://phpgangsta.de/tag/pdf-konverter) - [PHP PDF erstellen](https://phpgangsta.de/tag/php-pdf-erstellen) - [PDF Service](https://phpgangsta.de/tag/pdf-service) - [GTK2](https://phpgangsta.de/tag/gtk2) - [php_gtk2](https://phpgangsta.de/tag/php_gtk2) - [PHP Windows Programm](https://phpgangsta.de/tag/php-windows-programm) - [PHP Oberfläche](https://phpgangsta.de/tag/php-oberflache) - [Lesepool](https://phpgangsta.de/tag/lesepool) - [Zend_Service_Twitter](https://phpgangsta.de/tag/zend_service_twitter) - [Twitter API](https://phpgangsta.de/tag/twitter-api) - [twitter curl](https://phpgangsta.de/tag/twitter-curl) - [Download Script](https://phpgangsta.de/tag/download-script) - [PHP Speed Limit](https://phpgangsta.de/tag/php-speed-limit) - [Resume Download](https://phpgangsta.de/tag/resume-download) - [Design Pattern](https://phpgangsta.de/tag/design-pattern) - [Buchvorstellung](https://phpgangsta.de/tag/buchvorstellung) - [PHP Design Patterns](https://phpgangsta.de/tag/php-design-patterns) - [apache2](https://phpgangsta.de/tag/apache2) - [expires header](https://phpgangsta.de/tag/expires-header) - [deflate](https://phpgangsta.de/tag/deflate) - [mod_expires](https://phpgangsta.de/tag/mod_expires) - [IMAP](https://phpgangsta.de/tag/imap) - [IMAP Befehle](https://phpgangsta.de/tag/imap-befehle) - [IMAP Commands](https://phpgangsta.de/tag/imap-commands) - [IMAP Telnet](https://phpgangsta.de/tag/imap-telnet) - [IMAP Protokoll](https://phpgangsta.de/tag/imap-protokoll) - [Cheatsheet](https://phpgangsta.de/tag/cheatsheet) - [Cheatsheets](https://phpgangsta.de/tag/cheatsheets) - [Hilfsblätter](https://phpgangsta.de/tag/hilfsblatter) - [Zend_Mail_Storage_Imap](https://phpgangsta.de/tag/zend_mail_storage_imap) - [Zend_Mail](https://phpgangsta.de/tag/zend_mail) - [Zend_Oauth](https://phpgangsta.de/tag/zend_oauth) - [OAuth](https://phpgangsta.de/tag/oauth) - [PDF Server](https://phpgangsta.de/tag/pdf-server) - [Konverter](https://phpgangsta.de/tag/konverter) - [Installation](https://phpgangsta.de/tag/installation) - [OpenOffice.org](https://phpgangsta.de/tag/openoffice-org) - [vcard](https://phpgangsta.de/tag/vcard) - [export](https://phpgangsta.de/tag/export) - [vcf](https://phpgangsta.de/tag/vcf) - [View Filter](https://phpgangsta.de/tag/view-filter) - [Zend_Filter_Interface](https://phpgangsta.de/tag/zend_filter_interface) - [strip whitespaces](https://phpgangsta.de/tag/strip-whitespaces) - [session.save_handler](https://phpgangsta.de/tag/session-save_handler) - [session memcached](https://phpgangsta.de/tag/session-memcached) - [session_set_save_handler](https://phpgangsta.de/tag/session_set_save_handler) - [zend_session](https://phpgangsta.de/tag/zend_session) - [memcache](https://phpgangsta.de/tag/memcache) - [Intercepting Filter Pattern](https://phpgangsta.de/tag/intercepting-filter-pattern) - [eBay API](https://phpgangsta.de/tag/ebay-api) - [AddItem](https://phpgangsta.de/tag/additem) - [PHP eBay](https://phpgangsta.de/tag/php-ebay) - [PHP Sicherheit](https://phpgangsta.de/tag/php-sicherheit) - [Konvertierung](https://phpgangsta.de/tag/konvertierung) - [Debug Ausgaben](https://phpgangsta.de/tag/debug-ausgaben) - [var_dump](https://phpgangsta.de/tag/var_dump) - [file_put_contents](https://phpgangsta.de/tag/file_put_contents) - [Firebug](https://phpgangsta.de/tag/firebug) - [FirePHP](https://phpgangsta.de/tag/firephp) - [Zend_Log](https://phpgangsta.de/tag/zend_log) - [Zend_Log_Writer_Firebug](https://phpgangsta.de/tag/zend_log_writer_firebug) - [Auktion per API](https://phpgangsta.de/tag/auktion-per-api) - [eBay](https://phpgangsta.de/tag/ebay) - [GetSellerList](https://phpgangsta.de/tag/getsellerlist) - [XML](https://phpgangsta.de/tag/xml) - [IPC](https://phpgangsta.de/tag/ipc) - [International PHP Conference](https://phpgangsta.de/tag/international-php-conference) - [Berlin](https://phpgangsta.de/tag/berlin) - [mail.de](https://phpgangsta.de/tag/mail-de) - [Linkpool](https://phpgangsta.de/tag/linkpool) - [Skipfish](https://phpgangsta.de/tag/skipfish) - [GetMyeBaySelling](https://phpgangsta.de/tag/getmyebayselling) - [Deployment](https://phpgangsta.de/tag/deployment) - [phpMyAdmin](https://phpgangsta.de/tag/phpmyadmin) - [stream](https://phpgangsta.de/tag/stream) - [stream filter](https://phpgangsta.de/tag/stream-filter) - [stream_filter_append](https://phpgangsta.de/tag/stream_filter_append) - [ZCE](https://phpgangsta.de/tag/zce) - [Zend Certified Engineer](https://phpgangsta.de/tag/zend-certified-engineer) - [PHP5 Prüfung](https://phpgangsta.de/tag/php5-prufung) - [Zertifikat](https://phpgangsta.de/tag/zertifikat) - [Zend Yellow Pages](https://phpgangsta.de/tag/zend-yellow-pages) - [Zend_Filter](https://phpgangsta.de/tag/zend_filter) - [Custom](https://phpgangsta.de/tag/custom) - [Praxis-Online-Test](https://phpgangsta.de/tag/praxis-online-test) - [Gewinnspiel](https://phpgangsta.de/tag/gewinnspiel) - [Start-Stop-Daemon](https://phpgangsta.de/tag/start-stop-daemon) - [ExceptionHub](https://phpgangsta.de/tag/exceptionhub) - [Wissenstest](https://phpgangsta.de/tag/wissenstest) - [Test](https://phpgangsta.de/tag/test) - [Fortgeschrittene](https://phpgangsta.de/tag/fortgeschrittene) - [Video2Brain](https://phpgangsta.de/tag/video2brain) - [PHP Tutorial](https://phpgangsta.de/tag/php-tutorial) - [HTML Email](https://phpgangsta.de/tag/html-email) - [Inline Grafiken](https://phpgangsta.de/tag/inline-grafiken) - [Content-ID](https://phpgangsta.de/tag/content-id) - [PCNTL](https://phpgangsta.de/tag/pcntl) - [Microbenchmarking](https://phpgangsta.de/tag/microbenchmarking) - [Mutation Testing](https://phpgangsta.de/tag/mutation-testing) - [SSL Login](https://phpgangsta.de/tag/ssl-login) - [OpenSSL](https://phpgangsta.de/tag/openssl) - [Public Key](https://phpgangsta.de/tag/public-key) - [Signatur](https://phpgangsta.de/tag/signatur) - [Jobs](https://phpgangsta.de/tag/jobs) - [Javascript Entwickler](https://phpgangsta.de/tag/javascript-entwickler) - [Stellenausschreibung](https://phpgangsta.de/tag/stellenausschreibung) - [Flattr](https://phpgangsta.de/tag/flattr) - [Payment](https://phpgangsta.de/tag/payment) - [Tabnabbing](https://phpgangsta.de/tag/tabnabbing) - [Phishing](https://phpgangsta.de/tag/phishing) - [CSS History](https://phpgangsta.de/tag/css-history) - [Tab](https://phpgangsta.de/tag/tab) - [International PHP Conference Spring Edition 2010](https://phpgangsta.de/tag/international-php-conference-spring-edition-2010) - [#ipcse](https://phpgangsta.de/tag/ipcse) - [PTI](https://phpgangsta.de/tag/pti) - [Slides](https://phpgangsta.de/tag/slides) - [Doctrine](https://phpgangsta.de/tag/doctrine) - [Dependency Injection](https://phpgangsta.de/tag/dependency-injection) - [Websockets](https://phpgangsta.de/tag/websockets) - [Zend Framework 2](https://phpgangsta.de/tag/zend-framework-2) - [15 Jahre](https://phpgangsta.de/tag/15-jahre) - [Geburtstag](https://phpgangsta.de/tag/geburtstag) - [Personal Home Page Tools](https://phpgangsta.de/tag/personal-home-page-tools) - [PHP/FI](https://phpgangsta.de/tag/phpfi) - [Rasmus Lerdorf](https://phpgangsta.de/tag/rasmus-lerdorf) - [PHP Test](https://phpgangsta.de/tag/php-test) - [Präsentationen](https://phpgangsta.de/tag/prasentationen) - [Sessions](https://phpgangsta.de/tag/sessions) - [YQL](https://phpgangsta.de/tag/yql) - [Yahoo](https://phpgangsta.de/tag/yahoo) - [Query](https://phpgangsta.de/tag/query) - [SQL](https://phpgangsta.de/tag/sql) - [Yahoo! Query Language](https://phpgangsta.de/tag/yahoo-query-language) - [ClickJacking](https://phpgangsta.de/tag/clickjacking) - [X-FRAME-OPTIONS](https://phpgangsta.de/tag/x-frame-options) - [DENY](https://phpgangsta.de/tag/deny) - [SAMEORIGIN](https://phpgangsta.de/tag/sameorigin) - [CSS3](https://phpgangsta.de/tag/css3) - [Zend_Validate_Db_NoRecordExists](https://phpgangsta.de/tag/zend_validate_db_norecordexists) - [MongoDB](https://phpgangsta.de/tag/mongodb) - [Algorithmus](https://phpgangsta.de/tag/algorithmus) - [Wettbewerb](https://phpgangsta.de/tag/wettbewerb) - [PHP Magazin](https://phpgangsta.de/tag/php-magazin) - [Jahresabo](https://phpgangsta.de/tag/jahresabo) - [Zend_Progressbar](https://phpgangsta.de/tag/zend_progressbar) - [Zend_Progressbar_Adapter_Console](https://phpgangsta.de/tag/zend_progressbar_adapter_console) - [Progressbar](https://phpgangsta.de/tag/progressbar) - [Konsole](https://phpgangsta.de/tag/konsole) - [Fortschritt](https://phpgangsta.de/tag/fortschritt) - [Shell](https://phpgangsta.de/tag/shell) - [Spielplan](https://phpgangsta.de/tag/spielplan) - [Lösung](https://phpgangsta.de/tag/losung) - [Certification](https://phpgangsta.de/tag/certification) - [Beta Tester](https://phpgangsta.de/tag/beta-tester) - [PHP Bücher](https://phpgangsta.de/tag/php-bucher) - [Planning Poker Set](https://phpgangsta.de/tag/planning-poker-set) - [PHPStorm](https://phpgangsta.de/tag/phpstorm) - [Greatnet](https://phpgangsta.de/tag/greatnet) - [Galileo Press](https://phpgangsta.de/tag/galileo-press) - [Demobereich](https://phpgangsta.de/tag/demobereich) - [t3n Magazin](https://phpgangsta.de/tag/t3n-magazin) - [Gewinnnspiel](https://phpgangsta.de/tag/gewinnnspiel) - [Tick](https://phpgangsta.de/tag/tick) - [register_tick_function](https://phpgangsta.de/tag/register_tick_function) - [Profiler](https://phpgangsta.de/tag/profiler) - [Backtrace](https://phpgangsta.de/tag/backtrace) - [Abwesenheit](https://phpgangsta.de/tag/abwesenheit) - [Traffic](https://phpgangsta.de/tag/traffic) - [Besucher](https://phpgangsta.de/tag/besucher) - [Visitis](https://phpgangsta.de/tag/visitis) - [EAP](https://phpgangsta.de/tag/eap) - [PHP IDE](https://phpgangsta.de/tag/php-ide) - [JetBrains](https://phpgangsta.de/tag/jetbrains) - [Beta](https://phpgangsta.de/tag/beta) - [Download](https://phpgangsta.de/tag/download) - [PHP Download Script](https://phpgangsta.de/tag/php-download-script) - [Script löscht sich selbst](https://phpgangsta.de/tag/script-loscht-sich-selbst) - [Script löschen](https://phpgangsta.de/tag/script-loschen) - [unlink](https://phpgangsta.de/tag/unlink) - [memory_limit](https://phpgangsta.de/tag/memory_limit) - [memory_get_peak_usage](https://phpgangsta.de/tag/memory_get_peak_usage) - [Developers Shame Day](https://phpgangsta.de/tag/developers-shame-day) - [phphacker](https://phpgangsta.de/tag/phphacker) - [DSD](https://phpgangsta.de/tag/dsd) - [übler Code](https://phpgangsta.de/tag/ubler-code) - [lustiger Code](https://phpgangsta.de/tag/lustiger-code) - [mod_pagespeed](https://phpgangsta.de/tag/mod_pagespeed) - [ZendCon](https://phpgangsta.de/tag/zendcon) - [ZC10](https://phpgangsta.de/tag/zc10) - [fsockopen](https://phpgangsta.de/tag/fsockopen) - [stream_socket_client](https://phpgangsta.de/tag/stream_socket_client) - [SSL](https://phpgangsta.de/tag/ssl) - [Zippen](https://phpgangsta.de/tag/zippen) - [Zip Download](https://phpgangsta.de/tag/zip-download) - [Streaming](https://phpgangsta.de/tag/streaming) - [Komprimierung](https://phpgangsta.de/tag/komprimierung) - [Twitter Email Grabber](https://phpgangsta.de/tag/twitter-email-grabber) - [Email Sammler](https://phpgangsta.de/tag/email-sammler) - [Spammer](https://phpgangsta.de/tag/spammer) - [elePHPant](https://phpgangsta.de/tag/elephpant) - [elePHPants](https://phpgangsta.de/tag/elephpants) - [PHP Elefant](https://phpgangsta.de/tag/php-elefant) - [Weihnachten](https://phpgangsta.de/tag/weihnachten) - [Einstieg](https://phpgangsta.de/tag/einstieg) - [NoSQL](https://phpgangsta.de/tag/nosql) - [Missing Features](https://phpgangsta.de/tag/missing-features) - [Fehlende Funktionen](https://phpgangsta.de/tag/fehlende-funktionen) - [ifset](https://phpgangsta.de/tag/ifset) - [NewRelic](https://phpgangsta.de/tag/newrelic) - [Monitoring](https://phpgangsta.de/tag/monitoring) - [RPM](https://phpgangsta.de/tag/rpm) - [Zahlen ausschreiben](https://phpgangsta.de/tag/zahlen-ausschreiben) - [Zahlen schreiben](https://phpgangsta.de/tag/zahlen-schreiben) - [Zahlen als Strings ausgeben](https://phpgangsta.de/tag/zahlen-als-strings-ausgeben) - [Pimcore](https://phpgangsta.de/tag/pimcore) - [CMS](https://phpgangsta.de/tag/cms) - [WYSIWYG](https://phpgangsta.de/tag/wysiwyg) - [ExtJs](https://phpgangsta.de/tag/extjs) - [Community](https://phpgangsta.de/tag/community) - [Ruby](https://phpgangsta.de/tag/ruby) - [Zukunft](https://phpgangsta.de/tag/zukunft) - [Subdomain-Dienst](https://phpgangsta.de/tag/subdomain-dienst) - [Subdomain-Service](https://phpgangsta.de/tag/subdomain-service) - [Subdomain-Script](https://phpgangsta.de/tag/subdomain-script) - [disable_functions](https://phpgangsta.de/tag/disable_functions) - [Sicherheit](https://phpgangsta.de/tag/sicherheit) - [php.ini](https://phpgangsta.de/tag/php-ini) - [Google Weather](https://phpgangsta.de/tag/google-weather) - [Wetter API](https://phpgangsta.de/tag/wetter-api) - [Wetter](https://phpgangsta.de/tag/wetter) - [Wetterdaten](https://phpgangsta.de/tag/wetterdaten) - [wetter.com](https://phpgangsta.de/tag/wetter-com) - [Yahoo Weather API](https://phpgangsta.de/tag/yahoo-weather-api) - [SimplePie](https://phpgangsta.de/tag/simplepie) - [CLI](https://phpgangsta.de/tag/cli) - [Kommandozeile](https://phpgangsta.de/tag/kommandozeile) - [Farben](https://phpgangsta.de/tag/farben) - [Schrift](https://phpgangsta.de/tag/schrift) - [farbige Ausgabe](https://phpgangsta.de/tag/farbige-ausgabe) - [Feeds](https://phpgangsta.de/tag/feeds) - [Reader](https://phpgangsta.de/tag/reader) - [in_array](https://phpgangsta.de/tag/in_array) - [isset](https://phpgangsta.de/tag/isset) - [Doppelte Einträge](https://phpgangsta.de/tag/doppelte-eintrage) - [Buchtipp](https://phpgangsta.de/tag/buchtipp) - [Qualität](https://phpgangsta.de/tag/qualitat) - [QA](https://phpgangsta.de/tag/qa) - [PHPBenelux](https://phpgangsta.de/tag/phpbenelux) - [Talks](https://phpgangsta.de/tag/talks) - [phpbnl](https://phpgangsta.de/tag/phpbnl) - [phpbnl11](https://phpgangsta.de/tag/phpbnl11) - [Aufgabe](https://phpgangsta.de/tag/aufgabe) - [Vier Gewinnt](https://phpgangsta.de/tag/vier-gewinnt) - [Vier Gewinnt Computer](https://phpgangsta.de/tag/vier-gewinnt-computer) - [Vier Gewinnt KI](https://phpgangsta.de/tag/vier-gewinnt-ki) - [Vier Gewinnt Programm](https://phpgangsta.de/tag/vier-gewinnt-programm) - [Gauss](https://phpgangsta.de/tag/gauss) - [Glockenkurve](https://phpgangsta.de/tag/glockenkurve) - [#phpuceu](https://phpgangsta.de/tag/phpuceu) - [PHP Unconference Europe](https://phpgangsta.de/tag/php-unconference-europe) - [IaaS](https://phpgangsta.de/tag/iaas) - [PaaS](https://phpgangsta.de/tag/paas) - [cloudControl](https://phpgangsta.de/tag/cloudcontrol) - [PHPFog](https://phpgangsta.de/tag/phpfog) - [#phpuk2011](https://phpgangsta.de/tag/phpuk2011) - [PHP London Conference](https://phpgangsta.de/tag/php-london-conference) - [UDP](https://phpgangsta.de/tag/udp) - [Socket-Server](https://phpgangsta.de/tag/socket-server) - [#phpuk11](https://phpgangsta.de/tag/phpuk11) - [MP3](https://phpgangsta.de/tag/mp3) - [ID3V1](https://phpgangsta.de/tag/id3v1) - [ID3v2](https://phpgangsta.de/tag/id3v2) - [getID3](https://phpgangsta.de/tag/getid3) - [#confoo](https://phpgangsta.de/tag/confoo) - [Confoo 2011](https://phpgangsta.de/tag/confoo-2011) - [Confoo Conference](https://phpgangsta.de/tag/confoo-conference) - [Symfony Live Paris](https://phpgangsta.de/tag/symfony-live-paris) - [#sflive2011](https://phpgangsta.de/tag/sflive2011) - [proctitle](https://phpgangsta.de/tag/proctitle) - [Prozessname](https://phpgangsta.de/tag/prozessname) - [Prozesstitel](https://phpgangsta.de/tag/prozesstitel) - [PHPStorm 2.0](https://phpgangsta.de/tag/phpstorm-2-0) - [Pundle](https://phpgangsta.de/tag/pundle) - [Dependency](https://phpgangsta.de/tag/dependency) - [Tool](https://phpgangsta.de/tag/tool) - [Automatisierung](https://phpgangsta.de/tag/automatisierung) - [PHPStorm Features](https://phpgangsta.de/tag/phpstorm-features) - [GitHub Integration](https://phpgangsta.de/tag/github-integration) - [discount](https://phpgangsta.de/tag/discount) - [günstiger](https://phpgangsta.de/tag/gunstiger) - [Rabatt](https://phpgangsta.de/tag/rabatt) - [IDE](https://phpgangsta.de/tag/ide) - [Coupon Code](https://phpgangsta.de/tag/coupon-code) - [Four in A Line](https://phpgangsta.de/tag/four-in-a-line) - [Challenge](https://phpgangsta.de/tag/challenge) - [Namespace](https://phpgangsta.de/tag/namespace) - [Feature](https://phpgangsta.de/tag/feature) - [Zend_Mail_Transport_File](https://phpgangsta.de/tag/zend_mail_transport_file) - [content.de](https://phpgangsta.de/tag/content-de) - [Erfahrungen](https://phpgangsta.de/tag/erfahrungen) - [Content](https://phpgangsta.de/tag/content) - [Texte](https://phpgangsta.de/tag/texte) - [Passwörter](https://phpgangsta.de/tag/passworter) - [Richtlinien](https://phpgangsta.de/tag/richtlinien) - [Mindestlänge](https://phpgangsta.de/tag/mindestlange) - [late static binding](https://phpgangsta.de/tag/late-static-binding) - [LSB](https://phpgangsta.de/tag/lsb) - [Singleton](https://phpgangsta.de/tag/singleton) - [self](https://phpgangsta.de/tag/self) - [static](https://phpgangsta.de/tag/static) - [Zend_Auth](https://phpgangsta.de/tag/zend_auth) - [Authentifizierung](https://phpgangsta.de/tag/authentifizierung) - [Login](https://phpgangsta.de/tag/login) - [Gutschein](https://phpgangsta.de/tag/gutschein) - [Extension](https://phpgangsta.de/tag/extension) - [Erweiterung](https://phpgangsta.de/tag/erweiterung) - [#phpcomcon](https://phpgangsta.de/tag/phpcomcon) - [PHP Community Conference](https://phpgangsta.de/tag/php-community-conference) - [Callback](https://phpgangsta.de/tag/callback) - [Hook](https://phpgangsta.de/tag/hook) - [call_user_func](https://phpgangsta.de/tag/call_user_func) - [Coders at Work](https://phpgangsta.de/tag/coders-at-work) - [mitp](https://phpgangsta.de/tag/mitp) - [RegexIterator](https://phpgangsta.de/tag/regexiterator) - [#phpday11](https://phpgangsta.de/tag/phpday11) - [#phpday2011](https://phpgangsta.de/tag/phpday2011) - [#phpday](https://phpgangsta.de/tag/phpday) - [Dutch PHP Conference 2011](https://phpgangsta.de/tag/dutch-php-conference-2011) - [#dpc11](https://phpgangsta.de/tag/dpc11) - [Phar](https://phpgangsta.de/tag/phar) - [eval](https://phpgangsta.de/tag/eval) - [create_function](https://phpgangsta.de/tag/create_function) - [Rechenaufgabe](https://phpgangsta.de/tag/rechenaufgabe) - [Arithmetik](https://phpgangsta.de/tag/arithmetik) - [Y2k38](https://phpgangsta.de/tag/y2k38) - [Timestamp](https://phpgangsta.de/tag/timestamp) - [2038 bug](https://phpgangsta.de/tag/2038-bug) - [integer overflow](https://phpgangsta.de/tag/integer-overflow) - [php|tek11](https://phpgangsta.de/tag/phptek11) - [Bloggeburtstag](https://phpgangsta.de/tag/bloggeburtstag) - [DPC](https://phpgangsta.de/tag/dpc) - [Orchestra.io](https://phpgangsta.de/tag/orchestra-io) - [Zend](https://phpgangsta.de/tag/zend) - [Yubico](https://phpgangsta.de/tag/yubico) - [Urlaub](https://phpgangsta.de/tag/urlaub) - [Crowd-Lesepool](https://phpgangsta.de/tag/crowd-lesepool) - [Gastartikel](https://phpgangsta.de/tag/gastartikel) - [MD5](https://phpgangsta.de/tag/md5) - [Cronjob](https://phpgangsta.de/tag/cronjob) - [exec](https://phpgangsta.de/tag/exec) - [Array](https://phpgangsta.de/tag/array) - [Index](https://phpgangsta.de/tag/index) - [assoziativ](https://phpgangsta.de/tag/assoziativ) - [set_error_handler](https://phpgangsta.de/tag/set_error_handler) - [error_reporting](https://phpgangsta.de/tag/error_reporting) - [Warning](https://phpgangsta.de/tag/warning) - [Fatal Error](https://phpgangsta.de/tag/fatal-error) - [PHP Unconference 2011](https://phpgangsta.de/tag/php-unconference-2011) - [#phpuchh](https://phpgangsta.de/tag/phpuchh) - [SHA1](https://phpgangsta.de/tag/sha1) - [register_shutdown_function](https://phpgangsta.de/tag/register_shutdown_function) - [json_encode](https://phpgangsta.de/tag/json_encode) - [#phpuc](https://phpgangsta.de/tag/phpuc) - [Passwort](https://phpgangsta.de/tag/passwort) - [bcrypt](https://phpgangsta.de/tag/bcrypt) - [Hash](https://phpgangsta.de/tag/hash) - [Hashing](https://phpgangsta.de/tag/hashing) - [wkhtmltoimage](https://phpgangsta.de/tag/wkhtmltoimage) - [wkhtmltopdf](https://phpgangsta.de/tag/wkhtmltopdf) - [Screenshot](https://phpgangsta.de/tag/screenshot) - [Screenshots erstellen](https://phpgangsta.de/tag/screenshots-erstellen) - [WebsiteToImage](https://phpgangsta.de/tag/websitetoimage) - [meist genutzte Passworte](https://phpgangsta.de/tag/meist-genutzte-passworte) - [IDN](https://phpgangsta.de/tag/idn) - [IDNA](https://phpgangsta.de/tag/idna) - [Punycode](https://phpgangsta.de/tag/punycode) - [Umlautdomains](https://phpgangsta.de/tag/umlautdomains) - [gnupg](https://phpgangsta.de/tag/gnupg) - [gpg](https://phpgangsta.de/tag/gpg) - [IPC2011](https://phpgangsta.de/tag/ipc2011) - [Very Early Bird](https://phpgangsta.de/tag/very-early-bird) - [linux](https://phpgangsta.de/tag/linux-2) - [openssh](https://phpgangsta.de/tag/openssh) - [Private Key](https://phpgangsta.de/tag/private-key) - [Inotify](https://phpgangsta.de/tag/inotify) - [Continuous Testing](https://phpgangsta.de/tag/continuous-testing) - [PDF](https://phpgangsta.de/tag/pdf) - [Polyfills](https://phpgangsta.de/tag/polyfills) - [Shims](https://phpgangsta.de/tag/shims) - [Modernizr](https://phpgangsta.de/tag/modernizr) - [Telnet](https://phpgangsta.de/tag/telnet) - [SMTP](https://phpgangsta.de/tag/smtp) - [SMTP Befehle](https://phpgangsta.de/tag/smtp-befehle) - [SMTP Protokoll](https://phpgangsta.de/tag/smtp-protokoll) - [PDF generieren](https://phpgangsta.de/tag/pdf-generieren) - [Exportieren](https://phpgangsta.de/tag/exportieren) - [dompdf](https://phpgangsta.de/tag/dompdf) - [FPDF](https://phpgangsta.de/tag/fpdf) - [LiveDocx](https://phpgangsta.de/tag/livedocx) - [Änderungen überwachen](https://phpgangsta.de/tag/anderungen-uberwachen) - [Github](https://phpgangsta.de/tag/github) - [FileWatcher](https://phpgangsta.de/tag/filewatcher) - [Coupon](https://phpgangsta.de/tag/coupon) - [Bild Copyright](https://phpgangsta.de/tag/bild-copyright) - [Text hinzufügen](https://phpgangsta.de/tag/text-hinzufugen) - [Bildbearbeitung](https://phpgangsta.de/tag/bildbearbeitung) - [FrOSCon](https://phpgangsta.de/tag/froscon) - [#froscon11](https://phpgangsta.de/tag/froscon11) - [Mini-Storage-Grid](https://phpgangsta.de/tag/mini-storage-grid) - [Crowdsourcing](https://phpgangsta.de/tag/crowdsourcing) - [Netzwerk](https://phpgangsta.de/tag/netzwerk) - [PHP Version](https://phpgangsta.de/tag/php-version) - [PHP Version verstecken](https://phpgangsta.de/tag/php-version-verstecken) - [expose_php Off](https://phpgangsta.de/tag/expose_php-off) - [Alte Versionen](https://phpgangsta.de/tag/alte-versionen) - [HEAD](https://phpgangsta.de/tag/head) - [Problem](https://phpgangsta.de/tag/problem) - [Zend_Config_Ini](https://phpgangsta.de/tag/zend_config_ini) - [parse_ini_file](https://phpgangsta.de/tag/parse_ini_file) - [Cross-Site-Scripting](https://phpgangsta.de/tag/cross-site-scripting) - [Animiertes GIF](https://phpgangsta.de/tag/animiertes-gif) - [Animierte CAPTCHAs](https://phpgangsta.de/tag/animierte-captchas) - [GIFEncoder](https://phpgangsta.de/tag/gifencoder) - [Ticket](https://phpgangsta.de/tag/ticket) - [Gewinn](https://phpgangsta.de/tag/gewinn) - [Social Media Buttons](https://phpgangsta.de/tag/social-media-buttons) - [Javascript Performance](https://phpgangsta.de/tag/javascript-performance) - [Heise](https://phpgangsta.de/tag/heise) - [Plugin](https://phpgangsta.de/tag/plugin) - [Browser Anteile](https://phpgangsta.de/tag/browser-anteile) - [StatCounter](https://phpgangsta.de/tag/statcounter) - [Code](https://phpgangsta.de/tag/code) - [Seminar](https://phpgangsta.de/tag/seminar) - [Deutsche Informatik Akademie](https://phpgangsta.de/tag/deutsche-informatik-akademie) - [Kurs](https://phpgangsta.de/tag/kurs) - [7zip](https://phpgangsta.de/tag/7zip) - [Packen](https://phpgangsta.de/tag/packen) - [Compression](https://phpgangsta.de/tag/compression) - [SevenZipArchive](https://phpgangsta.de/tag/sevenziparchive) - [Tests](https://phpgangsta.de/tag/tests) - [Compile](https://phpgangsta.de/tag/compile) - [7za](https://phpgangsta.de/tag/7za) - [YubiKey](https://phpgangsta.de/tag/yubikey) - [Artikel](https://phpgangsta.de/tag/artikel) - [Velocity](https://phpgangsta.de/tag/velocity) - [VelocityEU](https://phpgangsta.de/tag/velocityeu) - [PHP 5.4](https://phpgangsta.de/tag/php-5-4) - [Traits](https://phpgangsta.de/tag/traits) - [Arbeitsplatz](https://phpgangsta.de/tag/arbeitsplatz) - [Foto](https://phpgangsta.de/tag/foto) - [Upload](https://phpgangsta.de/tag/upload) - [Interactive Shell](https://phpgangsta.de/tag/interactive-shell) - [PHP Shell](https://phpgangsta.de/tag/php-shell) - [#ipc11](https://phpgangsta.de/tag/ipc11) - [Fotos](https://phpgangsta.de/tag/fotos) - [Erinnerung](https://phpgangsta.de/tag/erinnerung) - [Produktivität](https://phpgangsta.de/tag/produktivitat) - [CLI Webserver](https://phpgangsta.de/tag/cli-webserver) - [Embedded Webserver](https://phpgangsta.de/tag/embedded-webserver) - [readline](https://phpgangsta.de/tag/readline) - [Console](https://phpgangsta.de/tag/console) - [Autocompletion](https://phpgangsta.de/tag/autocompletion) - [PHPStorm 3.0](https://phpgangsta.de/tag/phpstorm-3-0) - [Aktion](https://phpgangsta.de/tag/aktion) - [Addons](https://phpgangsta.de/tag/addons) - [PGP](https://phpgangsta.de/tag/pgp) - [Fax](https://phpgangsta.de/tag/fax) - [Google Plus](https://phpgangsta.de/tag/google-plus) - [Faxgerät testen](https://phpgangsta.de/tag/faxgerat-testen) - [Fax empfangen](https://phpgangsta.de/tag/fax-empfangen) - [QUnit](https://phpgangsta.de/tag/qunit) - [Sinon.JS](https://phpgangsta.de/tag/sinon-js) - [PhantomJS](https://phpgangsta.de/tag/phantomjs) - [Jenkins](https://phpgangsta.de/tag/jenkins) - [phpcloud](https://phpgangsta.de/tag/phpcloud) - [Zend Cloud](https://phpgangsta.de/tag/zend-cloud) - [Container](https://phpgangsta.de/tag/container) - [Zend Server](https://phpgangsta.de/tag/zend-server) - [ZendCon11](https://phpgangsta.de/tag/zendcon11) - [POP3](https://phpgangsta.de/tag/pop3) - [POP3 Telnet](https://phpgangsta.de/tag/pop3-telnet) - [Kommandos](https://phpgangsta.de/tag/kommandos) - [Protokoll](https://phpgangsta.de/tag/protokoll) - [GeoIP](https://phpgangsta.de/tag/geoip) - [MaxMind](https://phpgangsta.de/tag/maxmind) - [Geo IP](https://phpgangsta.de/tag/geo-ip) - [SlideShare](https://phpgangsta.de/tag/slideshare) - [SlideShow](https://phpgangsta.de/tag/slideshow) - [POP3 Commands](https://phpgangsta.de/tag/pop3-commands) - [Geschenk](https://phpgangsta.de/tag/geschenk) - [Mayflower](https://phpgangsta.de/tag/mayflower) - [antwerpes](https://phpgangsta.de/tag/antwerpes) - [Arduino](https://phpgangsta.de/tag/arduino) - [Adventskalender](https://phpgangsta.de/tag/adventskalender) - [Advent 2011](https://phpgangsta.de/tag/advent-2011) - [YouTube API](https://phpgangsta.de/tag/youtube-api) - [Zend_Gdata_YouTube](https://phpgangsta.de/tag/zend_gdata_youtube) - [YouTube](https://phpgangsta.de/tag/youtube) - [Caching](https://phpgangsta.de/tag/caching) - [Cherokee](https://phpgangsta.de/tag/cherokee) - [Frohe Weihnacht](https://phpgangsta.de/tag/frohe-weihnacht) - [#hashdos](https://phpgangsta.de/tag/hashdos) - [Suhosin](https://phpgangsta.de/tag/suhosin) - [IPv4](https://phpgangsta.de/tag/ipv4) - [Hoster](https://phpgangsta.de/tag/hoster) - [DNS](https://phpgangsta.de/tag/dns) - [Postfix](https://phpgangsta.de/tag/postfix) - [Mailserver](https://phpgangsta.de/tag/mailserver) - [Analytics](https://phpgangsta.de/tag/analytics) - [Besucherzahlen](https://phpgangsta.de/tag/besucherzahlen) - [Visitors](https://phpgangsta.de/tag/visitors) - [Bester Artikel](https://phpgangsta.de/tag/bester-artikel) - [Besucherzeit](https://phpgangsta.de/tag/besucherzeit) - [USB Gadget](https://phpgangsta.de/tag/usb-gadget) - [Mail Notifier](https://phpgangsta.de/tag/mail-notifier) - [Webinterface](https://phpgangsta.de/tag/webinterface) - [Webfrontend](https://phpgangsta.de/tag/webfrontend) - [Features](https://phpgangsta.de/tag/features) - [maxcluster](https://phpgangsta.de/tag/maxcluster) - [Cluster Hosting](https://phpgangsta.de/tag/cluster-hosting) - [HTTPS](https://phpgangsta.de/tag/https) - [Client Certificate](https://phpgangsta.de/tag/client-certificate) - [array_unique](https://phpgangsta.de/tag/array_unique) - [array_count_values](https://phpgangsta.de/tag/array_count_values) - [array_keys](https://phpgangsta.de/tag/array_keys) - [doppelte Werte](https://phpgangsta.de/tag/doppelte-werte) - [#phpbnl12](https://phpgangsta.de/tag/phpbnl12) - [Umfrage](https://phpgangsta.de/tag/umfrage) - [Hosting](https://phpgangsta.de/tag/hosting) - [Version](https://phpgangsta.de/tag/version) - [Changes](https://phpgangsta.de/tag/changes) - [Changelog](https://phpgangsta.de/tag/changelog) - [php.net](https://phpgangsta.de/tag/php-net) - [PayPal](https://phpgangsta.de/tag/paypal) - [PayPal IPN](https://phpgangsta.de/tag/paypal-ipn) - [Instant Payment Notification](https://phpgangsta.de/tag/instant-payment-notification) - [Sofortige Zahlungsbestätigung](https://phpgangsta.de/tag/sofortige-zahlungsbestatigung) - [IPN](https://phpgangsta.de/tag/ipn) - [Online Bezahlung](https://phpgangsta.de/tag/online-bezahlung) - [Backend](https://phpgangsta.de/tag/backend) - [5.4.0](https://phpgangsta.de/tag/5-4-0) - [#phpuk2012](https://phpgangsta.de/tag/phpuk2012) - [PHP UK Conference 2012](https://phpgangsta.de/tag/php-uk-conference-2012) - [ConFoo 2012](https://phpgangsta.de/tag/confoo-2012) - [Google Authenticator](https://phpgangsta.de/tag/google-authenticator) - [2-factor authentication](https://phpgangsta.de/tag/2-factor-authentication) - [App](https://phpgangsta.de/tag/app) - [PHP Conferences 2012](https://phpgangsta.de/tag/php-conferences-2012) - [PHP Konferenzen 2012](https://phpgangsta.de/tag/php-konferenzen-2012) - [Local File Inclusion](https://phpgangsta.de/tag/local-file-inclusion) - [LFI](https://phpgangsta.de/tag/lfi) - [RFI](https://phpgangsta.de/tag/rfi) - [Remote File Inclusion](https://phpgangsta.de/tag/remote-file-inclusion) - [open_basedir](https://phpgangsta.de/tag/open_basedir) - [Android](https://phpgangsta.de/tag/android) - [C2DM](https://phpgangsta.de/tag/c2dm) - [Push Notifications](https://phpgangsta.de/tag/push-notifications) - [Android App Push](https://phpgangsta.de/tag/android-app-push) - [Freelancer](https://phpgangsta.de/tag/freelancer) - [Projektplattform](https://phpgangsta.de/tag/projektplattform) - [Outsourcing](https://phpgangsta.de/tag/outsourcing) - [PHP Programmierer](https://phpgangsta.de/tag/php-programmierer) - [PHP Programmierung](https://phpgangsta.de/tag/php-programmierung) - [PHP Closing Tag](https://phpgangsta.de/tag/php-closing-tag) - [PHP End Tag](https://phpgangsta.de/tag/php-end-tag) - [PHP schliessendes Tag](https://phpgangsta.de/tag/php-schliessendes-tag) - [remove end tag](https://phpgangsta.de/tag/remove-end-tag) - [Helferscript](https://phpgangsta.de/tag/helferscript) - [remove closing tag](https://phpgangsta.de/tag/remove-closing-tag) - [Cache Slam](https://phpgangsta.de/tag/cache-slam) - [Slam Defense](https://phpgangsta.de/tag/slam-defense) - [SPDY](https://phpgangsta.de/tag/spdy) - [Easter Eggs](https://phpgangsta.de/tag/easter-eggs) - [Credits](https://phpgangsta.de/tag/credits) - [Faker](https://phpgangsta.de/tag/faker) - [Testdaten](https://phpgangsta.de/tag/testdaten) - [Adressen](https://phpgangsta.de/tag/adressen) - [Namen](https://phpgangsta.de/tag/namen) - [Funktionen](https://phpgangsta.de/tag/funktionen) - [Methoden](https://phpgangsta.de/tag/methoden) - [SPL](https://phpgangsta.de/tag/spl) - [get_defined_functions](https://phpgangsta.de/tag/get_defined_functions) - [get_declared_classes](https://phpgangsta.de/tag/get_declared_classes) - [strpos](https://phpgangsta.de/tag/strpos) - [Strings suchen](https://phpgangsta.de/tag/strings-suchen) - [iBuildings](https://phpgangsta.de/tag/ibuildings) - [Notifier](https://phpgangsta.de/tag/notifier) - [Sismo](https://phpgangsta.de/tag/sismo) - [header_register_callback](https://phpgangsta.de/tag/header_register_callback) - [selten](https://phpgangsta.de/tag/selten) - [GROUP_CONCAT](https://phpgangsta.de/tag/group_concat) - [Patch](https://phpgangsta.de/tag/patch) - [Stefan Esser](https://phpgangsta.de/tag/stefan-esser) - [CGI](https://phpgangsta.de/tag/cgi) - [Hack](https://phpgangsta.de/tag/hack) - [Errors](https://phpgangsta.de/tag/errors) - [Error messages](https://phpgangsta.de/tag/error-messages) - [T_PAAMAYIM_NEKUDOTAYIM](https://phpgangsta.de/tag/t_paamayim_nekudotayim) - [Fehlermeldungen](https://phpgangsta.de/tag/fehlermeldungen) - [Quiz](https://phpgangsta.de/tag/quiz) - [Reise](https://phpgangsta.de/tag/reise) - [#dchh](https://phpgangsta.de/tag/dchh) - [Developer Conference Hamburg 2012](https://phpgangsta.de/tag/developer-conference-hamburg-2012) - [PHP Releases](https://phpgangsta.de/tag/php-releases) - [Release Dates](https://phpgangsta.de/tag/release-dates) - [Route](https://phpgangsta.de/tag/route) - [Backwards Compatibility](https://phpgangsta.de/tag/backwards-compatibility) - [Rückwärtskompatibilität](https://phpgangsta.de/tag/ruckwartskompatibilitat) - [Release Zyklus](https://phpgangsta.de/tag/release-zyklus) - [Version Historie](https://phpgangsta.de/tag/version-historie) - [#dpc12](https://phpgangsta.de/tag/dpc12) - [Dutch PHP Conference 2012](https://phpgangsta.de/tag/dutch-php-conference-2012) - [php|tek](https://phpgangsta.de/tag/phptek) - [#tek12](https://phpgangsta.de/tag/tek12) - [Chrome](https://phpgangsta.de/tag/chrome) - [libmemcached](https://phpgangsta.de/tag/libmemcached) - [Symfony Live](https://phpgangsta.de/tag/symfony-live) - [Speicherverbrauch](https://phpgangsta.de/tag/speicherverbrauch) - [memory_get_usage](https://phpgangsta.de/tag/memory_get_usage) - [Project Euler](https://phpgangsta.de/tag/project-euler) - [Mathematik](https://phpgangsta.de/tag/mathematik) - [Knobeln](https://phpgangsta.de/tag/knobeln) - [Rechnen](https://phpgangsta.de/tag/rechnen) - [Algorithmen](https://phpgangsta.de/tag/algorithmen) - [webtech](https://phpgangsta.de/tag/webtech) - [WDC](https://phpgangsta.de/tag/wdc) - [Web Developer Conference](https://phpgangsta.de/tag/web-developer-conference) - [#wdc12](https://phpgangsta.de/tag/wdc12) - [DOMDocument](https://phpgangsta.de/tag/domdocument) - [Leerzeichen](https://phpgangsta.de/tag/leerzeichen) - [Umbrüche](https://phpgangsta.de/tag/umbruche) - [Whitespace](https://phpgangsta.de/tag/whitespace) - [#ipc12](https://phpgangsta.de/tag/ipc12) - [Geodaten](https://phpgangsta.de/tag/geodaten) - [Arno Holossi](https://phpgangsta.de/tag/arno-holossi) - [POST](https://phpgangsta.de/tag/post) - [CURLOPT_POSTFIELDS](https://phpgangsta.de/tag/curlopt_postfields) - [Knockd](https://phpgangsta.de/tag/knockd) - [Ports](https://phpgangsta.de/tag/ports) - [Brute-Force](https://phpgangsta.de/tag/brute-force) - [Wake-On-LAN](https://phpgangsta.de/tag/wake-on-lan) - [WOL](https://phpgangsta.de/tag/wol) - [PHP 5.5](https://phpgangsta.de/tag/php-5-5) - [UTC](https://phpgangsta.de/tag/utc) - [DateTime](https://phpgangsta.de/tag/datetime) - [Zeitzonen](https://phpgangsta.de/tag/zeitzonen) - [VPN](https://phpgangsta.de/tag/vpn) - [Anonsphere](https://phpgangsta.de/tag/anonsphere) - [DateTimeZone](https://phpgangsta.de/tag/datetimezone) - [DatePeriod](https://phpgangsta.de/tag/dateperiod) - [www.php-talks.com](https://phpgangsta.de/tag/www-php-talks-com) - [PHP-Talks](https://phpgangsta.de/tag/php-talks) - [Ressourcen](https://phpgangsta.de/tag/ressourcen) - [Screencasts](https://phpgangsta.de/tag/screencasts) - [Konferenzvorträge](https://phpgangsta.de/tag/konferenzvortrage) - [Videos](https://phpgangsta.de/tag/videos) - [Passwort Migration](https://phpgangsta.de/tag/passwort-migration) - [Sleep Sort](https://phpgangsta.de/tag/sleep-sort) - [4chan](https://phpgangsta.de/tag/4chan) - [Bash](https://phpgangsta.de/tag/bash) - [Sortieralgorithmus](https://phpgangsta.de/tag/sortieralgorithmus) - [Sebastian Bergmann](https://phpgangsta.de/tag/sebastian-bergmann) - [Stefan Priebsch](https://phpgangsta.de/tag/stefan-priebsch) - [Interview](https://phpgangsta.de/tag/interview) - [thePHP.cc](https://phpgangsta.de/tag/thephp-cc) - [Wildcard](https://phpgangsta.de/tag/wildcard) - [loopback](https://phpgangsta.de/tag/loopback) - [Softwarequalität](https://phpgangsta.de/tag/softwarequalitat) - [Selbständigkeit](https://phpgangsta.de/tag/selbstandigkeit) - [selbständig](https://phpgangsta.de/tag/selbstandig) - [PHP Summit](https://phpgangsta.de/tag/php-summit) - [Workshops](https://phpgangsta.de/tag/workshops) - [Early Bird](https://phpgangsta.de/tag/early-bird) - [Angestellter](https://phpgangsta.de/tag/angestellter) - [Silent Operator](https://phpgangsta.de/tag/silent-operator) - [session_status()](https://phpgangsta.de/tag/session_status) - [Domainwechsel](https://phpgangsta.de/tag/domainwechsel) - [php-blog.de](https://phpgangsta.de/tag/php-blog-de) - [count_chars](https://phpgangsta.de/tag/count_chars) - [regex](https://phpgangsta.de/tag/regex) - [preg_match](https://phpgangsta.de/tag/preg_match) - [Backreference](https://phpgangsta.de/tag/backreference) - [CRIME](https://phpgangsta.de/tag/crime) - [BEAST](https://phpgangsta.de/tag/beast) - [ext/mysql](https://phpgangsta.de/tag/extmysql) - [password_hash](https://phpgangsta.de/tag/password_hash) - [DDoS](https://phpgangsta.de/tag/ddos) - [myracloud](https://phpgangsta.de/tag/myracloud) - [DNS Amplification Attack](https://phpgangsta.de/tag/dns-amplification-attack) - [Web Application Firewall](https://phpgangsta.de/tag/web-application-firewall) - [Anycast](https://phpgangsta.de/tag/anycast) - [Veranstaltung](https://phpgangsta.de/tag/veranstaltung) - [Doomsday](https://phpgangsta.de/tag/doomsday) - [E-Mail Bearbeitung](https://phpgangsta.de/tag/e-mail-bearbeitung) - [Echtzeit E-Mail](https://phpgangsta.de/tag/echtzeit-e-mail) - [Postfix PHP Transport](https://phpgangsta.de/tag/postfix-php-transport) - [Browserverteilung](https://phpgangsta.de/tag/browserverteilung) - [Seitenaufrufe](https://phpgangsta.de/tag/seitenaufrufe) - [Geräte](https://phpgangsta.de/tag/gerate) - [Betriebssysteme](https://phpgangsta.de/tag/betriebssysteme) - [Besucherquellen](https://phpgangsta.de/tag/besucherquellen) - [Power-Workshops](https://phpgangsta.de/tag/power-workshops) - [Gratis-Ticket](https://phpgangsta.de/tag/gratis-ticket) - [CouchDB](https://phpgangsta.de/tag/couchdb) - [Autocompaction](https://phpgangsta.de/tag/autocompaction) - [Zend Http Client](https://phpgangsta.de/tag/zend-http-client) - [pthread](https://phpgangsta.de/tag/pthread) - [threads](https://phpgangsta.de/tag/threads) - [Explain](https://phpgangsta.de/tag/explain) - [NOW()](https://phpgangsta.de/tag/now) - [Erfolgreiche Softwareprojekte im Web](https://phpgangsta.de/tag/erfolgreiche-softwareprojekte-im-web) - [Buchverlosung](https://phpgangsta.de/tag/buchverlosung) - [Nils Langner](https://phpgangsta.de/tag/nils-langner) - [Opcache](https://phpgangsta.de/tag/opcache) - [OPcode Cache](https://phpgangsta.de/tag/opcode-cache) - [Zend Optimizer Plus](https://phpgangsta.de/tag/zend-optimizer-plus) - [PHP-Days](https://phpgangsta.de/tag/php-days) - [PHP Unconference EU](https://phpgangsta.de/tag/php-unconference-eu) - [TideSDK](https://phpgangsta.de/tag/tidesdk) - [Desktop Anwendungen](https://phpgangsta.de/tag/desktop-anwendungen) - [plattformübergreifend](https://phpgangsta.de/tag/plattformubergreifend) - [GEARMAN_COULD_NOT_CONNECT](https://phpgangsta.de/tag/gearman_could_not_connect) - [GearmanClient](https://phpgangsta.de/tag/gearmanclient) - [array_merge](https://phpgangsta.de/tag/array_merge) - [Bugfixing](https://phpgangsta.de/tag/bugfixing) - [Plant a Billion Trees](https://phpgangsta.de/tag/plant-a-billion-trees) - [PHP Unconf EU](https://phpgangsta.de/tag/php-unconf-eu)