it-swarm.com.de

Was ist die "admin_action_". $ _REQUEST ['action'] Hook verwendet für?

In admin.php wird ein Aktions-Hook mit dem Namen 'admin_action_'.$_REQUEST['action'] ausgelöst. Leider ist es für Plugins etwas nutzlos, da es ganz am Ende von admin.php ausgelöst wird, nachdem alles auf der Seite geladen wurde (sogar die Fußzeile).

Weiß jemand warum es da ist, warum in dieser dummen Position und wenn irgendetwas es intern benutzt?

3
wyrfel

Über die "Annotate" -Funktion der Trac, Sie können sehen, dass dies vor drei Jahren hinzugefügt wurde , nach der Anfrage nach einem generischen POST -Handler, den Plugins verwenden können .

Die Google-Codesuche gibt an, dass zumindest Akismet diesen Hook verwendet und er dort zu dem Zeitpunkt erschien, als er in core eingeführt wurde . Es funktioniert durch direkten Aufruf von admin.php (und nicht die Plugin-Seite). Von dort aus kann es am Ende nur eine Umleitung machen . Der Trick ist also, admin.php?action=your_action aufzurufen, andere URLs funktionieren garantiert nicht.

Viele (aber nicht alle) Admin-Seiten enthalten admin.php als eine Art Initialisierung. In diesem Fall würde Ihre Aktion ausgelöst, bevor eine Ausgabe gesendet wird, da die Administrationsseite admin-header.php nach admin.php enthält. Dies funktioniert nicht auf jeder Admin-Seite: Nicht alle enthalten admin.php, und andere suchen nach "rogue" action-Abfragevariablen und geben Ihnen ein "Sind Sie sicher, dass Sie das tun möchten?" Warnung ( wegen fehlender Nonces? ). Für eine Pluginseite macht admin.php alles : es zeigt den Header an ( es sei denn, die Abfragevariable noheader befindet sich in der URL ), ruft Ihre Seite auf und zeigt die Fußzeile an (es sei denn, Sie haben exit() in Ihrem Code aufgerufen!) . admin.php ruft dann exit() selbst auf, sodass der Hook admin_action_ dort nicht einmal aufgerufen wird.

6
Jan Fabry