Jährlich: 2011

Vorsicht bei der Verwendung von isset() mit Arrays

Manchmal sucht man Fehler, die man wieder und wieder überliest, weil man die falschen Annahmen getroffen hat und der Code oberflächlich richtig aussieht. Erfahrungsgemäß gibt es dann ein paar „übliche Verdächtige“, die man sich genauer anschaut. Zuweisungen im if-Statement, Vergleiche ohne Typprüfung, empty() und isset() sind dabei immer heiße Kandidaten.

Wenn man die Handbuch-Seite zu isset() durchliest, klingt es, als wäre es problemlos möglich auch die Existenz von Array-Keys zu prüfen. Sogar ein schönes Beispiel gibt es dazu:

< ?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

?>

Doch ganz so einfach ist es leider nicht.

Mehr lesen
Grep für Application-Logs

Bei der Fehlersuche bieten einem die Application-Logs oftmals einen guten Einstiegspunkt. Doch die Suche darin kann zum Teil recht mühsam sein. Vor allem wenn man nicht nach der Fehlermeldung selbst suchen will, sondern zum Beispiel alle Fehler haben will, die einen bestimmten Methodenaufruf im Stacktrace haben. Und dann wollte ich auch nicht nur die Zeile haben, sondern den ganzen Log-Eintrag, inklusive Message und komplettem Stacktrace.

Ich habe mir dafür ein kleines PHP-Skript geschrieben. Vielleicht findet es ja sonst jemand nützlich:

 n";
    exit(1);
}

$filename = 'php://stdin';
if (isset($argv[2])) {
    $filename = $argv[2];
}
$fp = fopen($filename, 'r');

// "2011-11-22T02:16:34+01:00 - "
$startPattern = '#^d{4}(-d{2}){2}Td{2}(:d{2}){2}+d{2}:d{2} - #';
$searchPattern = $argv[1];

$found = false;

while ($line = fgets($fp)) {
    if (preg_match($startPattern, $line)) {
        if (true === $found) {
            foreach ($buffer as $bufferedLine) {
                echo $bufferedLine;
            }
        }

        $buffer = array();
        $found = false;
    }

    if (preg_match($searchPattern, $line)) {
        $found = true;
    }

    $buffer[] = $line;
}

Der Aufruf sieht dann so aus:

$ php loggrep "#Mage_Core_Block_Template#" exception.log

Wichtig ist, dass der Suchbegriff mit PCRE-Syntax (inklusive Delimiter) angegeben wird.

Update 08.11.2011

Jetzt neu: Falls keine Datei angegeben wird, kann das Skript auch von STDIN lesen. Damit kann man auch einfach in gepackten Dateien suchen:

$ zcat exception.log.1.gz | php loggrep "#Mage_Core_Block_Template#"
Mehr lesen
Sovendus holt zweiten Platz bei den CyberChampions Awards

Wir gratulieren unserem Kunden Sovendus ganz herzlich zu dem Erfolg bei den CyberChampions Awards 2011/12. Die Sovendus GmbH errang in der Kategorie High Potentials den zweiten Rang. Damit wurde das früher unter dem Namen Gutscheinconnection bekannt gewordene Netzwerk besonders für seine Innovativität ausgezeichnet. Der jährlich ausgerichtete CyberChampion Award richtet sich an junge Unternehmen aus der Technologieregion, die sich durch Wachstum, Innovation und unternehmerische Persönlichkeit auszeichnen. Dabei müssen die Teilnehmer eine Jury mit ihrem Konzept in einem drei- bis vierseitigen Fragebogen überzeugen. Gewinner werden in den Kategorien NewComer und HighPotentials prämiert.

Sovendus vernetzt über 200 Onlineshops aus Deutschland, Österreich und der Schweiz mit einem exklusiven Gutscheinsystem. Zahlreiche und namhafte Kunden wie Schlecker, cyberport, zalando, Jochen Schweizer, myToys, HEINE, Yves Rocher oder Hagebau setzen auf die Dienstleistungen von Sovendus. Das System besticht vor allem durch die hohe Einlösequote der Gutscheine. Diese werden ausschließlich an Endkunden verteilt, die bereits im OnlineShop eines Sovendus-Kunden bestellt haben. Die Coupons sind exklusiv und nicht über andere Aktionen im Internet erhältlich. Die Konzentration auf Online-Shopper ermöglicht auch im Newsletter eine überdurchschnittliche Klickrate. Sovendus ist seit 2011 auch in England vertreten, weitere Länder werden folgen.

Flagbit wünscht Sovendus auch weiterhin solch tolle Erfolge und freut sich auf die weitere Zusammenarbeit.

Mehr lesen
New is always better – Google passt Suchalgorithmus an

“New is always better – it’s a rule”, bekannte Serienheld Barney Stinson, als er wieder einmal seine Abneigung gegenüber der Monogamie begründen wollte. Doch diese Aussage scheint auch bei den Entwicklern im Hause Google angekommen zu sein, denn diese haben mal wieder den Suchalgorithmus der weltweit wichtigsten Suchmaschine angepasst und wollen diesmal vor allem aktuellere Ergebnisse in den Vordergrund stellen.

Im hauseigenen Blog erklären die Entwickler, dass diese Änderung sowohl Seiten über aktuelle als auch wiederkehrende Ereignisse wie beispielsweise die olympischen Spiele betrifft. Die Idee dahinter: Sucht jemand im Mai 2012 nach dem Begriff „Olympische Spiele“, so sollen dem User nicht die Auflistung der Leichtathletik-Medaillengewinner von 1956, sondern möglichst viele Informationen zu den Spielen 2012 in London als Ergebnisse weit oben in den SERPs präsentiert werden.

Betroffen werden vor allem viele alte Foreneinträge sein. Jedem ist es sicherlich schon einmal passiert, dass er bei einer Suche zu einem aktuellen Software-Problem zunächst Forendiskussionen aus dem Jahr 2003 zu Gesicht bekam, deren Lösungsansätze in der schnelllebigen IT-Welt natürlich mittlerweile unbrauchbar waren. Dies soll nun der Vergangenheit angehören.

Nach dem vor allem auf relevante und userfreundliche Inhalte abzielenden Panda-Updates, hat sich Google nur also dem Problemfeld „Aktualität“ angenommen. Das besondere: Die Google-Entwickler schätzen, dass 35% aller Suchanfragen betroffen sein werden. Eine deutlich höhere Anzahl als bei Panda.

Für Webseiteninhaber und Betreibern von Online Shops heißt dies nun, ebenfalls verstärkt auf neue Inhalte zu setzen. Ideal eignen sich dafür integrierte Blogs oder News-Ticker, die aktuelle und relevante Ereignisse oder Aktionen rund um die Webpräsenz behandeln und Google zeigen, dass auf diesen Seiten neue Inhalte zu finden sind. In Magento-Shops ist die Einbindung solcher Features relativ einfach möglich, wird allerdings bisher erst in wenigen Fällen genutzt. Auch der dynamische Bereich von Social Media wird dadurch weiter gefördert werden, denn es ist zu vermuten, dass Google auch diesen Faktor in seine Aktualitätsberechnungen berücksichtigen wird. In Kombination werden Social Media und aktuelle Inhalte sicher eine große Rolle unter den von Google berücksichtigten Ranking-Faktoren einnehmen und sollten deshalb auch verstärkt gepusht werden.

Mehr lesen
Magento Fatal error: Call to undefined method Mage_Core_Model_Config_Element::getName()

Fatal error: Call to undefined method Mage_Core_Model_Config_Element::getName() in …/lib/Varien/Simplexml/Element.php on line 390

Das Problem ist warscheinlich eine veraltete PHP-Version. In dem aktuellen Fall ist Magento 1.4.0.1 im Einsatz. Magento setzt die Funktion SimpleXMLElement::getName vorraus, welche erst seit (PHP 5 >= 5.1.3) implementiert ist.
Die Lösung bei einem „Shared Host“ wäre eine nette Mail an den Support mit der Bitte um Umstellung auf die aktuelle Version. Ein Wunder das Magento überhaupt läuft.

 

Mehr lesen
TYPO3 4.6 steht zum Download bereit

Und wieder etwas neues aus der TYPO3-Welt. Nach FLOW3 steht seit gestern auch die neuste Version 4.6 von TYPO3 zum Download bereit. Die bereits angekündigten Änderungen und neuen Funktionen können nun also ausführlich getestet werden.

Die Arbeit mit TYPO3 sollte nun deutlich performanter werden, da das Caching-Framework nun per default in der neuen TYPO3-Instanz aktiviert ist und für mehr Leistung sorgt. Dies geschieht durch unmittelbaren Zugriff des TYPO3-Cores auf den Cache. Diese Standardisierung ermöglicht Entwicklern einfachere Optimierungsvorgänge. Die Systemextensions Extbase und Fluid wurden aktualisiert und verbessert, der neue XLIFF-Standard soll die Übersetzungsarbeit deutlich erleichtern. Interessant für Redakteure wird auch die Arbeit mit dem neuen Formular Inhaltselement. Dieses soll eine Formularerstellung mittels Drag & Drop sowie WYSIWYG-Editor ermöglichen und somit die Arbeit im Backend weiter erleichtern.

Trotz der gewohnten Betonung auf Rückwärtskompatibilität wird empfohlen die standardmäßig installierten Extensions saltedpasswords und rsaauth bei Updates manuell zu installieren, da sonst Komplikationen auftreten könnten. Ebenso sollte beachtet werden, dass mit dem Erscheinen von TYPO3 4.6 auch der Support zu TYPO3 4.3 beendet wird.

Für weitere Informationen sollten wie immer die Release Notes beachtet werden.

Mehr lesen
Magento-Module – goldenes Kalb oder die Büchse der Pandora?

Eines der größten Argumente für Open-Source-Systeme wie Magento sind verfügbare Module, welche die Funktionalität des Grundsystems um Lösungen für wiederkehrende Aufgabenstellungen erweitern. Magento bietet auf seiner Plattform Connect sowohl unentgeltliche als auch kostenpflichtige Module an. Das Installieren wird dem Shop-Betreiber durch den Magento Connect Manager auch sehr einfach gemacht, ein neues Modul ist in Nullkommanichts installiert und vollführt von nun an seinen Dienst. Doch gerade die mit der geringen Komplexität einhergehende niedrige Hemmschwelle beim Integrieren neuer Module kann zu großen Problemen führen. Die meisten Betreiber von Magento-Online-Shops gehen mit der Installation von Modulen deutlich zu unkritisch, teilweise naiv um und sollten die Extensions deutlich häufiger hinterfragen. Die Liste der Problematiken, die durch Module heraufbeschworen werden können, ist relativ lang:

Mehr lesen
Sicherheit bei TYPO3

Eines der größten Themen im Jahr 2011 für die digitale Gesellschaft ist das Problemfeld Sicherheit im Netz. Spektakuläre Fälle wie die Angriffe auf Sony oder die Aktivitäten der Gruppierung „Anonymous“ finden in der Presse Beachtung und stoßen bei vielen Webseitenbetreibern auf großes Echo. Daher steht diese Thematik auch innnerhalb der TYPO3 Community in der Diskussion. Bei den Betreibern der Webseiten herrscht derzeit zumeist Verunsicherung vor und viele stellen sich die Frage, wie sicher denn Ihre Webseite sei. Als TYPO3-Dienstleister können wir in jedem Fall nur raten, sowohl TYPO3 als auch die installierten Extensions immer auf dem neusten Stand zu halten und sich per typo3.org oder TYPO3 Announce Mailing List stets über aktuelle Probleme zu informieren. Da diese Ratschläge aber vielen als zu allgemein gelten, wollen wir hier ein paar Empfehlungen des TYPO3-Cookbooks darstellen, die, sofern befolgt, die TYPO3-Instanz gleich sicherer machen.

  • Installationstool sichern: Das Installationstool sollte nach Gebrauch entweder deaktiviert oder gleich das ganze Verzeichnis entfernt werden. Alternativ kann man auch den Zugriff per .htacess auf bestimmte Hosts, Netzwerke oder Domains beschränken.
  • Admin Password/Namen: Was auch für andere Netzwerke gilt, sollte auch bei der Verwaltung von TYPO3-Instanzen gelten: Das Admin-Password sollte sofort nach der Einrichtung geändert werden. Noch sicherer wird das ganz natürlich, wenn der default-Admin durch neue, personalisierte Admin-Nutzer ersetzt wird.
  • Keine Demo Packages für Live-Systeme nutzen: Diese Packages sind wie der Name eigentlich schon sagt nur zum Testen gedacht.
  • Rechtevergabe im Datei System: Beachten, wer welche Rechte bekommt, lieber sparsam verteilen. Auf jeden Fall User Accounts kein Schreibrecht auf Webservern geben.
  • Unnötigen Code und Extensions entfernen: Wirklich nur das lassen, was wirklich gebraucht wird, um keine unnötige Angriffsfläche zu bieten.
  • Sicherheitsoptionen: TYPO3 bietet einige Sicherheitsoptionen. Hier sind nur wenige allgemeingültige Aussagen möglich (bspw sollte in jedem Falle der der EncryptionKey gesetzt werden), je nach System sind aber unterschiedliche Parameter hilfreich.
Sicherheit TYPO3

Mit rechtzeitigen Updates halten Sie Ihr TYPO3 vor Angriffen verschlossen.

Das Kochbuch hält noch weitere Tipps parat, aber die hier genannten sind auf jeden Fall die wichtigsten, um für ausreichende Sicherheit im TYPO3-System zu sorgen.

Um auf eventuelle Angriffe reagieren zu können ist es des Weiteren natürlich wichtig, immer Backups zu erstellen, am besten vom kompletten System, aber zumindest von allen Dateien im root. Ebenso sollten die Logs gespeichert werden, um eventuelle Schwachstellen zu erkennen und den oder die Angreifer ausfindig machen zu können.

Sofern es tatsächlich mal zu einem Angriff kommt und Sie erkennen diesen, sollten die betroffenen Webseiten oder gar die ganzen Server vom Netz genommen werden, bevor sich Viren und Co. noch weiter verbreiten. Danach kann in Ruhe eine saubere Version eingespielt werden. Mit den mitgespeicherten Logs kann man den Angriff analysieren. Viel wichtiger als das Erkennen der Angreifer ist dabei das Erkennen der Schwachstellen. Liegt diese im TYPO3 Core oder bei Extensions, sollte in jedem Falle das TYPO3 Security Team informiert werden.

Mehr lesen
FLOW3-Schulung

Drei Flagbit-Mitarbeiter, Frederic Gaus, Andreas Bouche und Niki Müller, nahmen gestern an einer FLOW3-Schulung im wunderschönen, aber derzeit auch nicht gerade preiswerten Zürich teil. Die Veranstaltung wurde relativ kurzfristig von snowflakes productions organisiert, denen wir für die tolle Organisation sowie das interessante Event auch noch einmal Danke sagen wollten.

Unter anderem stellte TYPO 3 5- und FLOW3-Chefentwickler Robert Lemke das mächtige Framework vor, dessen Ausführungen die Teilnehmer begeisterten. Das Potenzial von FLOW3 wurde durch die Schulung noch verstärkter ersichtlich und wir sind gespannt, welche Entwicklung das Framework in Zukunft nehmen wird und freuen uns damit unsere Erfahrungen zu machen.

 

Mehr lesen
google_wallet
Google Wallet startet

Auch wenn wir ein wenig in Gefahr geraten, bald als Google-Werbe-Blog zu erscheinen, wollen wir kurz auf den Start des neuesten Produktes der Entwickler aus Kalifornien, dem Google Wallet, verweisen, zumal die Auswirkungen dieser Technologie nicht nur auf den Offline-Handel beschränkt sein bleiben.

Mit dem Launch können vorerst jedoch nur Besitzer eines Nexus 4G Smartphones in den USA den neuen Dienst in Kooperation mit dem PayPass-System von Mastercard nutzen. Bei diesem System hält der Nutzer im Regelfalle seine Kreditkarte an ein spezielles Kartenlesegerät und kann so schnell und unkompliziert zahlen. Dieser Vorgang ist nun auch mit dem Smartphone möglich. Die Übertragung der Daten erfolgt mit dem im Handy integrierten NFC-Chip, in dem die Zahlungsinformationen des Nutzers gespeichert sind. Nach und nach sollen das Bezahlen mit weiteren Karten möglich sein, auch eine Zusammenarbeit mit Visa und American Express ist bereits geplant. Gesichert ist das Verfahren durch eine zusätzliche PIN und dem sog. „Secure Element“, das die sensiblen Daten getrennt von den restlichen Informationen auf dem Smartphone speichert.

Bereits seit Sommer lief ein Feldtest, der für Google offenbar zufriedenstellend verlief. Die zugrunde liegende NFC-Technik war auch bereits in den für das PayPass-System genutzten Kreditkarten eingebaut und wird nun für das Wallet genutzt. Derzeit können Kunden der Citibank mit einer Mastercard den Dienst bereits nutzen, alternativ bietet Google auch eine hauseigene Prepaid-Karte Early Adopter an. Neben weiteren Kartenanbietern wartet man vor allem auf die flächendeckende Einführung weiterer NFC-fähigen Smartphones.

Doch Google wäre nicht Google, wenn die Ziele nicht schon wieder viel weiter gesteckt wären. Neben der Bezahlfunktion sollen weitere Dienstleistungen wie Kundenkarten oder Gutscheine ermöglicht werden. Hier ist vor allem die Synchronisation des Wallet mit Google Offers als Konkurrenz zu Groupon interessant, zumal Google sich mit dem Ankauf von Daily Deal weiter in diesem Bereich verstärkt hat. Das Ganze soll per App realisiert werden. Vor allem das Thema Sicherheit steht dabei noch im Brennpunkt, Kritiker weisen vor allem darauf hin, dass eine PIN allein nicht ausreichend Schutz biete. Zudem wird die Kopplung an traditionelle Kreditkarten ebenso bemängelt wie (natürlich!) der mangelnde Datenschutz für die sensiblen Kontendaten.

Auch die deutschen Mobilfunkunternehmen Telekom, Vodafone und O2 wollen sich für ihr Payment-Projekt Mpass die NFC-Technologie zu Nutze machen und damit im nächsten Jahr ebenfalls den breiten Markt in Angriff nehmen.

Inwieweit dies Auswirkungen auf E-Commerce Plattformen wie Magento haben wird, ist noch unklar. Zumindest fürs erste scheint eine Kooperation zwischen Google und Magento in diesem Bereich unwahrscheinlich, hat doch PayPal, wie Magento eine eBay-Tochter, auch schon gegen Google Wallet geklagt, es geht mal wieder um Plagiatsvorwürfe und Abwerbung von Topkräften. Die Technologie an sich ist jedoch auf für Magento interessant. Vor allem im Hinblick auf Mobile Commerce ist denkbar, dass Bezahlvorgänge ebenfalls über das Wallet oder vergleichbare Systeme laufen könnten und hier E-Commerce und Offline-Handel wieder einen Schritt näher zusammenrücken. Gespannt sein darf man auch auf die Entwicklungen im Bereich Sicherheit. Das es mit einer zusätzlichen Pin und dem derzeitigen Secure-Element für das Wallet nicht getan ist, zumal Angriffsflächen erst durch die flächendeckende Einführung jetzt geboten werden, dessen ist man sich auch im Hause Google bewusst. Wenn man den Geldbeutel inklusive Kreditkarten in Zukunft wirklich komplett ersetzen will, sind noch ein paar Errungenschaften zu erwarten, die auch auch für Magento und Co. durchaus interessante Entwicklungen anstoßen könnten.

Mehr lesen
1 2 3 6