Kategorien
Webentwicklung Werkzeuge

“To fix this issue you can simply rename your file to api2.php”

Ich bin ja auch Nutzer von InfiniteWP. Das ist eigentlich ein sehr gutes Tool zum Verwalten von mehreren WordPress-Instanzen.

Nun hatte ich in einem Kundenprojekt eine API entwickelt, die zur Authentifizierung ein WordPress mit einer Nutzerdatenbank verwendet. Dazu habe ich von einem externen Projekt die wp-load.php inkludiert. Das funktionierte auch eine zeitlang auch sehr gut, bis die Agentur, die die Seite betreut, ein paar Änderungen vornahm. Sie installierten unter anderem InfiniteWP. In der datei “api.php” von InfiniteWP ist folgender Code:

if(basename($_SERVER['SCRIPT_FILENAME']) == "api.php"):
    exit;
endif;

Das Ziel dieses Codes ist relativ offensichtlich: Die Datei sollte nicht direkt geladen werden können. Blöd ist: Es wird nur auf den Dateinamen geprüft. Da meine externe Datei, auch api.php heisst, wird aber, sobald ich die wp-load.php include, das exit; ausgeführt.

Ich regte also an, vielleicht nicht nur den Filename zu überprüfen, sondern vielleicht auch den Pfad des aufgerufenen Scripts oder – wie unter WP auch nicht unüblich – auf eine gesetzte Konstante. Auf meine Anfrage beim Support bekam ich folgende Antwort:

Thanks for taking the time to reach out to us on your query. Your patience is greatly appreciated.

We are using api.php in our client plugin to use call back functions for our addons.
To fix this issue you can simply rename your file to api2.php

Are you experiencing any conflict issues with IWP client plugin and other plugins?
Please give us more information so that I can assist you accordingly.

Ich habe dann etwas möglicherweise etwas unhöflich reagiert und gefragt, wie sich das verhält, wenn der nächste dann das gleiche mit proxy.php und jemand anderes dann die index.php seines Plugins so schützt. Und dass ein HTTP Status 200 und eine weiße Seite in dem Fall auch nicht sinnvoll debugbar sind und dass mich das einige Tage Projektverzögerung gekostet hat und ziemlich beschissen ist. Zumal es in WordPress ja auch Beispiele gibt, wie es besser geht.

Erst darauf hin habe ich die Antwort bekommen, dass ein “scope of improvement on our end” vorhanden sei. Da geben sich dann Codequalität und Servicequalität dann echt nichts.

Ich habe mal ein Beispiel geschickt, wie man das sinnvoller lösen kann. Mal sehen, wann ein Update dafür kommt.

Kategorien
Wochenbericht

Wochenbericht 2017.21

Breaking Out Of The Tetris Mindset ist ein wunderbarer Artikel von Christian Heilman und regt zum Nachdenken an, ob nicht  einer der Tetrisblöcke auf einen zutrifft und wie man das Web als ganzes nach vorne bringen kann. Aus eigener Erfahrung weiss ich, dass das im Tagesgeschäft auch schon mal untergehen kann.

CSS

CSS and the First Meaningful Paint und Why We Stopped Using Bootstrap liefern ein paar interessante Gedanken zum Thema CSS Performance und Overbloat.

Eine schöne Erklärung für das Box Model in CSS liefert DailyDrip.

Design

In “Why your design team should consider switching to Figma” wird von einem überzeugten Nutzer erklärt, warum man von Sketch zu Figma wechseln sollte.

Paul Klees Notizbücher sind online.

Den Abschluss zum lachen: Oh, that settles things.

Kategorien
Wochenbericht

Wochenbericht 2017.20

Kris Köhntopp (dessen Blog kein HTTPS hat) hat mal ausgepackt, wie sinnvolle CI und CD funktionieren. Continuous Integration und Continous Deployment. Nicht das Design 🙂

Stefan Baumgartner hat ein responsive Grid ohne Mediaqueries gebaut. Mit 3 Zeilen Code. Das ist ein schickes Beispiel, wenn auch in nicht vielen Fällen praxistauglich. Da müssen schon Spans rein und die Möglichkeit, bei Bedarf Zeilen umzubrechen. Aber das ist dann eben die Arbeit daran. Den Spass hatten wir ja nun schon.

Why you should use standard HTTP methods when designing REST APIs ist eine Zusammenfassung dessen, welche HTTP Methoden für welchen Task bei APIs verwendet werden sollen und wie man sie benutzt, also wo beispielsweise der konzeptionelle Unterschied zwischen PUT und PATCH liegt.

Zum Schluss was zum Lachen: “Students used code

Kategorien
Wochenbericht

Wochenbericht 2017.19

It’s not you, it’s your form: Wie wichtig sinnvoll strukturierte, designte und zugängliche Formulare für Nutzer und Kundenbindung sind.

Ein neues Krankheitsbild grassiert bei Webentwicklern / -designern: classitis

Ein Babyphon im Browser? Gonimo macht’s möglich (und ist Open Source!) via Caschys Blog

Google nutzt eine interessante Möglichkeit, ihre JSON-Responses gegen Hijacking zu schützen.

Backbone ist immer noch ein Ding in 2017 und jemand hat mal eine Zusammenfassung eines “modern index file in 2017” geliefert. Ich bin ein bisschen am weinen wenn ich das lese.

Ich hätte schwören können, dass ich Animista schon mal erwähnt hatte, habe ich aber nicht. Das ganze ist ein Editor um sich CSS-Animationen zusammenzuklicken und den Code zu exportieren. Jetzt fehlt ScrollReveal nur noch die Möglichkeit, eigene Klassen zu verwenden.

Kategorien
Wochenbericht

Wochenbericht 2017.18

Getting Started With Headless Chrome: Chrome / Chromium hat nun einen nativen headless mode. Im Zuge der Ankündigung des headless modes hat der Entwickler von PhantomJS schon seinen Rückzug angekündigt.

CSS Grid in Production listet Sites, die bereits jetzt auf CSS Grids setzen. Mal sehen, wie lange das wirklich so ein Nischen-Ding bleibt. Eric Meyer hat bei A List Apart schon mal gezeigt, wie man das ganze mit Progressive Enhancement und @supports umsetzt

Die MP3 Patente sind ausgelaufen: MP3 is now officially free (as in beer and speech) and open. Im Zuge der Verlagerung von lokaler Musik zu Streaming und Mobile sind allerdings längst andere technische Fragestellungen (und Möglichkeiten) aufgetaucht

Machen wir uns nichts vor: Echte Perfomance ist immer besser, aber wenn die Seite performant wirkt, ist das auch schon ein ziemlich guter Ansatz, wenn der Rest nicht erreichbar ist. Designing for the Appearance of Speed

Async iterators and generators: Await in Async functions im Callback als Verarbeitung von Streams. Eine ziemlich interessante Idee.

Ein bisschen Spaß muss sein: HTTP Status Codes in a nutshell