Ich habe in meinem aktuellen Projekt eine Funktion, die mehrere Ajax-Anforderungen zulässt. Ich habe eine einzelne Nonce-Anforderung (über diese Anweisung ) ausgearbeitet, bin jedoch nicht sicher, wie ich in mehreren Nonce-Anforderungen vorgehen soll.
functions.php: lokalisiere, erstelle eine einzige Nonce
wp_localize_script(
'B99-Portfolio',
'B99ajax',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'requestNonce' => wp_create_nonce('b99-request-nonce')
)
);
js anrufen:
$.ajax({
type : 'POST',
url : B99ajax.ajaxurl,
data : {
action : 'b99-ajax-submit',
requestNonce : B99ajax.requestNonce
},...
empfangen von PHP
public function b99_ajax_submit() {
$nonce = $_POST['requestNonce'];
if ( ! wp_verify_nonce( $nonce, 'b99-request-nonce' ) )
... sql, response
An diesem Punkt kann ich diese Nonce wiederholt verwenden, aber ich denke, dass dies den Zweck der Nonce-Prüfung zunichte macht. Meine Lösung wird darin bestehen, ein neues Nonce in der empfangenden PHP anzufordern, B99ajax
js Objekt dieser Variablen zuzuweisen und es für die "nächste" Ajax-Sequenz zurück an die anfordernde Seite zu senden.
Gibt es einen besseren Weg?
Dies ist im Grunde die Art und Weise, wie WordPress dies tut, und so ziemlich die einzige Art und Weise, dies zu tun. Lassen Sie einfach Ihre empfangende PHP -Funktion eine neue Nonce-Add erstellen, senden Sie sie mit Ihrer Antwort zurück und aktualisieren Sie dann einfach den Wert auf Ihrem JS vor der nächsten Runde.