
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
