Warum admin-ajax.php verwenden und wie funktioniert es?
-
-
Bemerkenswerterweise würdejede Antwort darüber sprechen,warum `themen/beispiel/json.php` alsgroße Sicherheitslücke angesehen werden sollteOf note, any answer would talk about why `themes/example/json.php` should be considered a major security vulnerability
- 2
- 2015-06-10
- Tom J Nowell
-
2 Antworten
- Stimmen
-
- 2015-06-10
1) Warum sollten Sie
admin-ajax.php
verwenden,anstatt Ihrenjsonin einem separaten Code zu codieren? Datei wiethemes/example/json.php
und verschlüsseln Sie Ihre Daten dort?Die Verwendung von
admin-ajax.php
bedeutet,dass der WordPress Coregeladen und verfügbarist. Ohne diesmüssten Sie diebenötigten Dateien von Hand laden. Diesistein komplizierter Prozess undfehleranfällig,wenn Sie den Corenicht sehr,sehrgut kennen. Und wiegut sind Siemit Javascript-Sicherheit?2) Wiefunktioniert
admin-ajax.php
? Davon versteheichnicht viel Datei. Lädtes alle Funktionen,damit Sie sie verwenden können?- Es lädt den WordPress Core,wasbedeutet,dass Sie Dinge wie
$wpdb
verwenden können und$WP_Query
. Dasist ungefährin Zeile 25. - Es werdeneinige Überschriftengesendet - Zeilen 37 - 41.
- Ein Inhaltstyp-Header
- Ein Header,der den Browsern anweist,die Ergebnissenicht zwischenzuspeichern.
- Dieinteressanten Header sind diejenigen,die von
send_nosniff_headers()
gesendet wurden
- und
nocache_headers()
.
- Der Hook
admin_init
wird ausgelöst. - Kernaktionen werden dynamisch definiert und registriert - Zeilen 46 - 73.
Diese werdenerst registriert,wenn siebenötigt werden - das heißt,es sei denn
Sie werden über
$_GET
oder$_POST
angefordert. - Der API-Hook "Heartbeat" wird ausgelöst - Zeile 75
- Der Status "Angemeldet" des anfordernden Benutzers wird überprüft und der Derentsprechende administrative oder "kein Privileg" -Hook wird ausgelöst.
Die Punkte 1 und 6 sindmeiner Meinungnach die Hauptgründefür die Verwendung der AJAX-API. Sie haben den WordPress Core,den Siemit ziemlicher Sicherheitbenötigen,und Sie haben dasgleiche Anmeldesicherheitssystem wie der Rest von WordPress.
1) Why use
admin-ajax.php
instead of encoding your json in a separate file likethemes/example/json.php
and encode your data there?Using
admin-ajax.php
means that the WordPress Core is loaded and available. WIthout that, you would need to hand load the files you need, which is a complicated process and prone to failure if you don't know the Core very, very well. And, how good are you with Javascript security?2) How does
admin-ajax.php
work? I don't understand much from that file. Does it load all the functions so you are ready to use them?- It loads the WordPress Core, meaning you can use things like
$wpdb
and$WP_Query
. That is through about line 25. - It sends a few headers-- lines 37 - 41.
- A content type header
- A header to tell browsers not to cache the results
- The interesting headers are those sent by
send_nosniff_headers()
- and
nocache_headers()
.
- The
admin_init
hook fires. - Core actions are defined and registered dynamically-- lines 46 - 73.
These won't be registered unless they are needed-- that is, unless
they are requested via
$_GET
or$_POST
. - The "heartbeat" API hook fires-- line 75
- The "logged in" status of the requesting user is checked and the appropriate administrative or "no priviledge" hook is fired.
Items #1 and #6 are the primary reasons to use the AJAX API, in my opinion. You have the WordPress Core, which you almost certainly need, and you have the same login security system as with the rest of WordPress.
-
- 2015-06-10
admin-ajax.php
ist Teil der WordPress AJAX API undja,es verarbeitet Anfragen sowohl vom Backend als auch von vorne. Hierist,wasichfür Ihre Frage herausfinde:2) Wiefunktioniert admin-ajax.php?
für die Logik können Sie Besuchen Sie hier.
Dies setzt voraus,dass Siebereits wissen,wie JavaScript usw.in die Warteschlangegestellt wird.
JavaScript-Teil:
jQuery(document).ready(function($) { // We'll pass this variable to the PHP function example_ajax_request var fruit = 'Banana'; // This does the ajax request $.ajax({ url: ajaxurl, data: { 'action':'example_ajax_request', 'fruit' : fruit }, success:function(data) { // This outputs the result of the ajax request console.log(data); }, error: function(errorThrown){ console.log(errorThrown); } }); });
PHP-Teil:
function example_ajax_request() { // The $_REQUEST contains all the data sent via ajax if ( isset($_REQUEST) ) { $fruit = $_REQUEST['fruit']; // Let's take the data that was sent and do something with it if ( $fruit == 'Banana' ) { $fruit = 'Apple'; } // Now we'll return it to the javascript function // Anything outputted will be returned in the response echo $fruit; // If you're debugging, it might be useful to see what was sent in the $_REQUEST // print_r($_REQUEST); } // Always die in functions echoing ajax content die(); } add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' ); // If you wanted to also use the function for non-logged in users (in a theme for example) add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
1) Warum sollten Sie admin-ajax.php verwenden,anstatt Ihrenjsonin einem separaten Code zu codieren? Datei wietheme/example/json.php und verschlüsseln Sie Ihre Daten dort?
kann hilfreich sein. admin- ajax.php vs Benutzerdefinierte Seitenvorlagefür Ajax-Anfragen
admin-ajax.php
is part of the WordPress AJAX API, and yes, it does handle requests from both backend and front. here what i figure-out for your question that is:2) How does admin-ajax.php work?
for the logic you can visit here.
This assumes you already know how to enqueue JavaScript, etc.
JavaScript Piece:
jQuery(document).ready(function($) { // We'll pass this variable to the PHP function example_ajax_request var fruit = 'Banana'; // This does the ajax request $.ajax({ url: ajaxurl, data: { 'action':'example_ajax_request', 'fruit' : fruit }, success:function(data) { // This outputs the result of the ajax request console.log(data); }, error: function(errorThrown){ console.log(errorThrown); } }); });
PHP Piece:
function example_ajax_request() { // The $_REQUEST contains all the data sent via ajax if ( isset($_REQUEST) ) { $fruit = $_REQUEST['fruit']; // Let's take the data that was sent and do something with it if ( $fruit == 'Banana' ) { $fruit = 'Apple'; } // Now we'll return it to the javascript function // Anything outputted will be returned in the response echo $fruit; // If you're debugging, it might be useful to see what was sent in the $_REQUEST // print_r($_REQUEST); } // Always die in functions echoing ajax content die(); } add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' ); // If you wanted to also use the function for non-logged in users (in a theme for example) add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
1) Why use admin-ajax.php instead of encoding your json in a separate file like themes/example/json.php and encode your data there?
may be this helpful.admin-ajax.php vs Custom Page Template for Ajax Requests
-
Hey,kannst du diese Action-Hooks 'wp_ajax_example_ajax_request' und 'wp_ajax_nopriv_example_ajax_request'erklären? Ichfindenirgendwoeine Erklärung.Auch was löst Ajaxurl auf?Vielen DankHey, can you explain these action hooks 'wp_ajax_example_ajax_request' and 'wp_ajax_nopriv_example_ajax_request' I find no explanation anywhere. Also what does ajaxurl resolve to? Thanks
- 0
- 2020-04-13
- David Okwii
Mein Ajax-Aufruffür JSON-Datenfunktioniert so functions.php:
Javascript:
Ich habe 2 Fragen.
1) Warum sollten Sie admin-ajax.php verwenden,anstatt Ihrenjsonin einer separaten Datei wie
themes/example/json.php
zu codieren und Ihre Daten dort zu codieren?2) Wiefunktioniert admin-ajax.php?Ich verstehenicht viel aus dieser Datei.Lädtes alle Funktionen,damit Sie sie verwenden können?
Danke!