Posts in der Kategorie PHP
Wenn ich auf meinem Blog einen neuen Beitrag erstelle, oder einen aktualisiere/lösche, möchte ich gerne eine CI/CD-Pipeline auf meinem Drone Build-Server starten. Dazu habe ich folgendes Plugin geschrieben: Den Drone CI-Token bekommt man, indem man mit seinem Benutzer links unten auf „Account“ klickt. Das Plugin wird einfach im WordPress wp-content/plugins z.B. als start-build.php abgespeichert, und […]
Projektziel: einen Docker-Container bauen, der automatisch die erforderlichen Sachen hat, die MediaWiki braucht um eine LDAP-Anmeldung an einem Domänencontroller hinzubekommen. Annahmen in diesem Projekt: wir haben eine ldap.json und eine angepasste LocalSettings.php nach der offiziellen Anleitung. Wir erstellen also erst einmal beide Dateien (z.B. mit dem regulärem MediaWiki-Docker-Container) und passen uns die dann an.Das Image […]
Ein Kunde hat eine MySQL-Tabelle, in der alle Felder sauber mit Charset utf8_general_ci angelegt wurden. Leider hat die PHP-Anwendung, die in die Tabelle schreibt, Daten in ISO 8859-1 in die Tabelle geschrieben; was dazu geführt hat, dass die Anwendung die Daten sauber lesen und schreiben konnte, andere Programme aber nicht. Diese gingen nämlich davon aus, […]
Ich nutze für meine Seiten eine Art selbstgeschriebenes Framework; die selbe Codebase für alle Anwendungen, in der alles enthalten ist, was ich standardmäßig brauche. Session Handling, Anbindungen an Datenbanken, eine kleine Templateengine, etc. Die Anwendungen an sich wurden bei mir bisher immer nur im „app“-Verzeichnis abgelegt. Hatte ich ein Update für eine Seite, habe ich […]
Um zu verhindern, dass nicht-Administratoren auf das Admin-Dashboard zugreifen können, registrieren wir zuerst einen Listener, der triggert, sobald jemand dieses abrufen möchte: add_action(‚admin_init‘, ‚dashboard_for_admins_only‘); Der Code für die Funktion dashboard_for_admins_only sieht wie folgt aus: function dashboard_for_admins_only() { // Trotzdem Zugriff auf Admin-AJAX zulassen if($_SERVER[‚PHP_SELF‘] == ‚admin-ajax.php‘) return; // Administratoren den Zugriff erlauben if(current_user_can(‚manage_options‘)) return; // […]
Möchten wir einen Benutzer einloggen, benötigen wir erst einmal seine ID. Ein Beispiel, wie wir einen Benutzer über seine Email auslesen können: $user = get_user_by(‚email‘, ‚[email protected]‘); Um den Benutzer dann einzuloggen, wenn er erfolgreich aus der Datenbank geladen wurde: if($user) { wp_set_current_user($user->ID, $user->user_login); wp_set_auth_cookie($user->ID); do_action(‚wp_login‘, $user->user_login); }
In der wp-includes/pluggable.php finden wir die Funktion wp_hash_password, welche (ohne den Code für die Plugins) wie folgt aussieht $s = new PasswordHash(8, true); echo $s->HashPassword(‚test‘); In selbiger Datei finden wir ebenfalls die Funktion wp_check_password, welche auf folgende Art und Weise Passwörter validiert: $s = new PasswordHash(8, true); $s->CheckPassword(‚test‘, ‚$P$123456789012345678901234567890‘); Der String, der mit „$P$“ anfängt, […]