Die Funktion hnp_create_nonce_button_shortcode ist ein benutzerdefinierter Shortcode für WordPress, der es ermöglicht, Nonce-Buttons zu erstellen. Ein Nonce (einmaliges Token) ist ein Sicherheitsmaßnahme, das verwendet wird, um sicherzustellen, dass bestimmte Aktionen oder Formularübermittlungen nur von autorisierten Benutzern durchgeführt werden können.
Beschreibung der Funktion:
Parameter: Die Funktion akzeptiert einen optionalen Parameter user, der den Benutzernamen festlegt, für den der Nonce-Button erstellt werden soll. Wenn dieser Parameter nicht angegeben wird, wird automatisch der Benutzername des aktuellen angemeldeten Benutzers verwendet.
Erstellung des Nonce-Buttons: Die Funktion generiert ein HTML-Formular mit einem versteckten Feld für den Benutzernamen und einem Button, mit dem der Benutzer einen Nonce für den angegebenen Benutzer erstellen kann.
Erstellung des Nonces: Wenn das Formular abgeschickt wird, generiert die Funktion automatisch einen Nonce für den angegebenen Benutzer und zeigt ihn dem Benutzer an.
Ausgabe: Die Funktion gibt den erstellten Nonce-Button und eine Erfolgsmeldung aus, wenn der Nonce erfolgreich erstellt wurde.
Diese Funktion bietet eine einfache Möglichkeit, Nonce-Buttons in WordPress einzufügen und zu verwenden, was die Sicherheit von Formularen und Aktionen auf der Website verbessert.
Kopieren Sie diese Funktion in Ihre Functions.php in WordPress:
//////////////////// NONCE BEISPIELFUNKTION // Shortcode für das Erstellen der Nonce-Buttons function hnp_create_nonce_button_shortcode($atts) { $atts = shortcode_atts( array( 'user' => '', // Standardwert ist leer ), $atts ); // Überprüfen, ob ein Benutzer angegeben wurde, sonst Standardwert verwenden $user = !empty($atts['user']) ? $atts['user'] : 'User A'; if (isset($_POST['create_nonce']) && $_POST['user'] === $user) { $nonce = wp_create_nonce('custom_nonce_' . $user); echo '<div class="hnp_nonce_mes"><span style="color: green">Erfolgreich. Nonce für ' . esc_html($user) . ': ' . esc_html($nonce) .'</span></div>'; } $output = '<div class="hnp_nonce_but">'; $output .= '<form method="post">'; $output .= '<input type="hidden" name="user" value="' . esc_attr($user) . '" />'; $output .= '<input type="submit" name="create_nonce" value="Nonce für ' . esc_html($user) . ' erstellen" />'; $output .= '</form>'; $output .= '</div>'; return $output; } add_shortcode('hnp_create_nonce_button', 'hnp_create_nonce_button_shortcode'); // Überprüfen der Nonce-Gültigkeit für einen bestimmten Benutzer function hnp_check_nonce_button_shortcode() { $output = '<div class="hnp_nonce_check">'; $output .= '<form method="post">'; $output .= '<label for="nonce">Nonce:</label>'; $output .= '<input type="text" name="nonce" id="nonce" />'; $output .= '<label for="user">Benutzer:</label>'; $output .= '<select name="user" id="user">'; $output .= '<option value="User A">User A</option>'; $output .= '<option value="User B">User B</option>'; $output .= '<option value="User C">User C</option>'; $output .= '</select>'; $output .= '<input type="submit" name="check_nonce" value="Nonce prüfen" />'; $output .= '</form>'; $output .= '</div>'; if (isset($_POST['check_nonce'])) { $nonce = $_POST['nonce']; $user = $_POST['user']; if (wp_verify_nonce($nonce, 'custom_nonce_' . esc_attr($user))) { $output .= '<div class="hnp_nonce_mes"><br><span style="color: green">Nonce für ' . esc_html($user) . ' ist gültig</div>'; } else { $output .= '<div class="hnp_nonce_mes"><br><span style="color: red">Nonce für ' . esc_html($user) . ' ist ungültig</div>'; } } return $output; } add_shortcode('hnp_check_nonce_button', 'hnp_check_nonce_button_shortcode');
Nun nutzen Sie folgende Shortcodes für die Einbindung auf einer Seite Ihrere Wahl:
<strong>Nonce erzeugen für User:</strong> [hnp_create_nonce_button user="User A"] [hnp_create_nonce_button user="User B"]<br> [hnp_create_nonce_button user="User C"]<br> <strong>Nonce prüfen für User: </strong><br> [hnp_check_nonce_button]
Auch ist es möglich, dass User direkt authentifiziert und zugewiesen werden:
//////////////////// NONCE BEISPIELFUNKTION mit wp_get_current_user()->user_login function hnp_create_nonce_button_shortcode($atts) { $atts = shortcode_atts( array( 'user' => '', // Standardwert ist leer ), $atts ); // Benutzer aus den Shortcode-Attributen oder aktuellen Benutzer verwenden $user = !empty($atts['user']) ? $atts['user'] : wp_get_current_user()->user_login; if (isset($_POST['create_nonce']) && $_POST['user'] === $user) { $nonce = wp_create_nonce('custom_nonce_' . $user); echo '<div class="hnp_nonce_mes"><span style="color: green">Erfolgreich. Nonce für ' . esc_html($user) . ': ' . esc_html($nonce) .'</span></div>'; } $output = '<div class="hnp_nonce_but">'; $output .= '<form method="post">'; $output .= '<input type="hidden" name="user" value="' . esc_attr($user) . '" />'; $output .= '<input type="submit" name="create_nonce" value="Nonce für ' . esc_html($user) . ' erstellen" />'; $output .= '</form>'; $output .= '</div>'; return $output; } add_shortcode('hnp_create_nonce_button', 'hnp_create_nonce_button_shortcode'); function hnp_check_nonce_button_shortcode() { $current_user = wp_get_current_user(); $current_username = $current_user->user_login; $output = '<div class="hnp_nonce_check">'; $output .= '<form method="post">'; $output .= '<label for="nonce">Nonce:</label>'; $output .= '<input type="text" name="nonce" id="nonce" />'; $output .= '<input type="hidden" name="user" value="' . esc_attr($current_username) . '" />'; // Automatisch ausgewählter Benutzername $output .= '<input type="submit" name="check_nonce" value="Nonce prüfen" />'; $output .= '</form>'; $output .= '</div>'; if (isset($_POST['check_nonce'])) { $nonce = $_POST['nonce']; $user = $_POST['user']; if (wp_verify_nonce($nonce, 'custom_nonce_' . esc_attr($user))) { $output .= '<div class="hnp_nonce_mes"><br /><span style="color: green">Nonce für ' . esc_html($user) . ' ist gültig</span></div>'; } else { $output .= '<div class="hnp_nonce_mes"><br /><span style="color: red">Nonce für ' . esc_html($user) . ' ist ungültig</span></div>'; } } return $output; } add_shortcode('hnp_check_nonce_button', 'hnp_check_nonce_button_shortcode');
↩ Zurück zur Blogübersicht