<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>plugin Archiv - Homepage nach Preis - Webseite erstellen lassen</title>
	<atom:link href="https://homepage-nach-preis.de/wort/plugin/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>★ Responsive Webdesigner Homepage erstellen lassen, bereits ab 299 Euro professionelle Webseite. ✓ Google-Optimiert ✓ Mobil-Optimiert &#124; Webdesign &#38; Seo</description>
	<lastBuildDate>Sat, 20 Apr 2024 12:05:49 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://homepage-nach-preis.de/wp-content/uploads/2021/02/cropped-icon-150x150.png</url>
	<title>plugin Archiv - Homepage nach Preis - Webseite erstellen lassen</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>HNP System Monitor Tool: Die Brücke zwischen Windows und WordPress</title>
		<link>https://homepage-nach-preis.de/2024/04/20/hnp-system-monitor-tool-die-bruecke-zwischen-windows-und-wordpress/</link>
					<comments>https://homepage-nach-preis.de/2024/04/20/hnp-system-monitor-tool-die-bruecke-zwischen-windows-und-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Sat, 20 Apr 2024 12:05:49 +0000</pubDate>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Onlineshop]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Exe]]></category>
		<category><![CDATA[HNP System Monitor]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Pyhton]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8212</guid>

					<description><![CDATA[<p>In der digitalen Welt von heute ist es unerlässlich, den Überblick über die Systemleistung eines Servers oder Computers zu behalten. Das HNP System Monitor Tool bietet hier eine innovative Lösung, indem es eine nahtlose Verbindung zwischen einem Windows-Computer oder Server und einer WordPress-Webseite herstellt. Aber wie funktioniert das genau? Und welche Vorteile bringt diese Verbindung mit sich? Lassen Sie uns einen tieferen Blick darauf werfen. Wie funktioniert das HNP System Monitor Tool? Das HNP System Monitor Tool nutzt eine gesicherte REST API, um die aktuelle Systemauslastung des Windows-Geräts zu erfassen und diese Daten an Ihre WordPress-Webseite zu übertragen. Dort können Sie die Daten in einer visuell strukturierten Form betrachten und analysieren. Das Beste daran? Die Einrichtung ist denkbar einfach. WordPress-Plugin: Starten und Loslegen Das mitgelieferte WordPress-Plugin ist vorkonfiguriert, sodass Sie es lediglich installieren und aktivieren müssen. Es erzeugt eine Backend-Seite in Ihrem WordPress-Admin-Dashboard, auf der Sie die Server- oder Computerleistung in Echtzeit verfolgen können. Die Daten werden ohne Neuladen der Seite aktualisiert, dank AJAX-Requests. Zudem bietet das Plugin visuelle Feedbacks durch farbige Pfeile und eine grafische Anzeige der letzten 100 Datenpunkte. Mit den integrierten Shortcodes können Sie die Daten auch im Frontend Ihrer Webseite anzeigen lassen. Exe Win Anwendung: Einfach....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/20/hnp-system-monitor-tool-die-bruecke-zwischen-windows-und-wordpress/">HNP System Monitor Tool: Die Brücke zwischen Windows und WordPress</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In der digitalen Welt von heute ist es unerlässlich, den Überblick über die Systemleistung eines Servers oder Computers zu behalten. Das HNP System Monitor Tool bietet hier eine innovative Lösung, indem es eine nahtlose Verbindung zwischen einem Windows-Computer oder Server und einer WordPress-Webseite herstellt. Aber wie funktioniert das genau? Und welche Vorteile bringt diese Verbindung mit sich? Lassen Sie uns einen tieferen Blick darauf werfen.<br />
Wie funktioniert das HNP System Monitor Tool?</p>
<p>Das HNP System Monitor Tool nutzt eine gesicherte REST API, um die aktuelle Systemauslastung des Windows-Geräts zu erfassen und diese Daten an Ihre WordPress-Webseite zu übertragen. Dort können Sie die Daten in einer visuell strukturierten Form betrachten und analysieren. Das Beste daran? Die Einrichtung ist denkbar einfach.<br />
WordPress-Plugin: Starten und Loslegen</p>
<p>Das mitgelieferte WordPress-Plugin ist vorkonfiguriert, sodass Sie es lediglich installieren und aktivieren müssen. Es erzeugt eine Backend-Seite in Ihrem WordPress-Admin-Dashboard, auf der Sie die Server- oder Computerleistung in Echtzeit verfolgen können. Die Daten werden ohne Neuladen der Seite aktualisiert, dank AJAX-Requests. Zudem bietet das Plugin visuelle Feedbacks durch farbige Pfeile und eine grafische Anzeige der letzten 100 Datenpunkte. Mit den integrierten Shortcodes können Sie die Daten auch im Frontend Ihrer Webseite anzeigen lassen.<br />
Exe Win Anwendung: Einfach und Effizient</p>
<p>Die begleitende Windows-64-Bit-Anwendung ist ebenfalls vorkonfiguriert. Nach dem Start der Anwendung und der Eingabe Ihrer Domain-Adresse übernimmt das System automatisch die Datenerfassung und -übertragung. Sie können den Secretkey, die Intervallzeit und andere Einstellungen direkt in der Anwendung ändern. Praktisch ist auch die Speicherungsfunktion, die die letzten Einstellungen für einen Autostart speichert.<br />
Sicherheit und Performance</p>
<p>Sowohl das WordPress-Plugin als auch die Windows-Anwendung setzen auf hohe Sicherheitsstandards. Mit Nonce-Abfragen, gesicherten AJAX-Verbindungen und Schutz vor XSS-Angriffen sind Ihre Daten stets sicher. Zudem sind beide Systeme performance-optimiert, ohne externe Bibliotheken oder Treiber zu benötigen.<br />
Flexibilität und Erweiterbarkeit</p>
<p>Das HNP System Monitor Tool bietet Ihnen die Freiheit, die Intervallzeit zum Datenaustausch nach Ihren Bedürfnissen anzupassen. Ob alle 2 Sekunden oder einmal täglich – Sie haben die Wahl. Darüber hinaus sind die Sourcefiles sowohl für das WordPress-Plugin als auch für die Windows-Anwendung im Lieferumfang enthalten. Dies ermöglicht erfahreneren Nutzern, das Tool nach Belieben anzupassen und zu erweitern.<br />
Fazit</p>
<p>Das HNP System Monitor Tool ist ein modernes und benutzerfreundliches System zur Erfassung und Visualisierung von Systemdaten. Mit seiner einfachen Einrichtung, hohen Sicherheitsstandards und Flexibilität ist es eine ideale Lösung für jeden, der die Leistung seines Windows-Computers oder Servers im Auge behalten und diese Daten nahtlos in seine WordPress-Webseite integrieren möchte.</p>
<p>Beim Kauf erhalten Sie ein fertiges Run &amp; Go WordPress-Plugin, eine Windows-64-Bit-Anwendung, sowie alle erforderlichen Sourcefiles für Anpassungen und Erweiterungen. Nutzen Sie die Gelegenheit und bringen Sie Ihre Systemüberwachung auf das nächste Level!</p>
<p><strong> Mehr Informationen:</strong></p>
<p><a href="https://shop.homepage-nach-preis.de/produkt/hnp-system-monitor-for-wordpress-windows-x64/" target="_blank" rel="nofollow noopener">https://shop.homepage-nach-preis.de/produkt/hnp-system-monitor-for-wordpress-windows-x64/</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/20/hnp-system-monitor-tool-die-bruecke-zwischen-windows-und-wordpress/">HNP System Monitor Tool: Die Brücke zwischen Windows und WordPress</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/20/hnp-system-monitor-tool-die-bruecke-zwischen-windows-und-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HNP Empty Plugin &#8211; WordPress Demo Code</title>
		<link>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/</link>
					<comments>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 13:54:30 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Beispiel]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Empty]]></category>
		<category><![CDATA[Leeres]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8186</guid>

					<description><![CDATA[<p>Das HNP Empty Plugin ist ein einfaches Demo-Plugin für WordPress, das entwickelt wurde, um grundlegende Funktionen eines Plugins zu demonstrieren. Es zeigt, wie man Styles und Skripte sowohl im Frontend als auch im Backend von WordPress einbindet. Außerdem bietet es eine Benutzeroberfläche zur Verwaltung von Plugin-Optionen über das WordPress-Dashboard. Der Plugin-Demo Code besitzt alle wichtigen Sicherheitsoptionen und Code-Qualitätsanforderungen, damit ein Plugin im offiziellen WordPress Verzeichnis aufgenommen wird. Zudem Funktionen, welche im Jahr 2024 auf dem neuesten Stand sind. Somit eine gute Grundlage für WordPress-Plugin-Entwickler. Geteste Kompatibilität: WordPress 6.5.2 und PHP 8.3. Das Plugin wird aber auch mit neueren und älteren PHP und WordPress Versionen kompatibel sein. Features: Frontend und Backend Styling: Das Plugin fügt sowohl dem Frontend als auch dem Backend von WordPress benutzerdefinierte CSS- und JavaScript-Dateien hinzu, um das Erscheinungsbild anzupassen. Plugin-Optionen: Es bietet eine einfache Möglichkeit, Plugin-Optionen über das WordPress-Dashboard zu konfigurieren, einschließlich Textfelder, Zahlenfelder, Farbwähler, Dropdown-Listen und Checkboxen. Shortcode: Das Plugin stellt einen Shortcode bereit, mit dem Benutzer die konfigurierten Optionen auf beliebigen Seiten oder Beiträgen anzeigen können. Sicherheitsmaßnahmen: Das Plugin implementiert Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unerwünschte Zugriffe auf die Plugin-Einstellungen zu verhindern. &#160; Plugin-Download: [sdm_download id=&#8221;8187&#8243; fancy=&#8221;0&#8243;] Github: https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin Quellcode: &#60;?php /* Plugin Name: HNP Empty....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/">HNP Empty Plugin &#8211; WordPress Demo Code</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das HNP Empty Plugin ist ein einfaches Demo-Plugin für WordPress, das entwickelt wurde, um grundlegende Funktionen eines Plugins zu demonstrieren. Es zeigt, wie man Styles und Skripte sowohl im Frontend als auch im Backend von WordPress einbindet. Außerdem bietet es eine Benutzeroberfläche zur Verwaltung von Plugin-Optionen über das WordPress-Dashboard. Der Plugin-Demo Code besitzt alle wichtigen Sicherheitsoptionen und Code-Qualitätsanforderungen, damit ein Plugin im offiziellen WordPress Verzeichnis aufgenommen wird. Zudem Funktionen, welche im Jahr 2024 auf dem neuesten Stand sind. Somit eine gute Grundlage für WordPress-Plugin-Entwickler. Geteste Kompatibilität: WordPress 6.5.2 und PHP 8.3. Das Plugin wird aber auch mit neueren und älteren PHP und WordPress Versionen kompatibel sein. </p>
<p><strong>Features:</strong></p>
<ul>
<li><strong>Frontend und Backend Styling:</strong> Das Plugin fügt sowohl dem Frontend als auch dem Backend von WordPress benutzerdefinierte CSS- und JavaScript-Dateien hinzu, um das Erscheinungsbild anzupassen.</li>
<li><strong>Plugin-Optionen:</strong> Es bietet eine einfache Möglichkeit, Plugin-Optionen über das WordPress-Dashboard zu konfigurieren, einschließlich Textfelder, Zahlenfelder, Farbwähler, Dropdown-Listen und Checkboxen.</li>
<li><strong>Shortcode:</strong> Das Plugin stellt einen Shortcode bereit, mit dem Benutzer die konfigurierten Optionen auf beliebigen Seiten oder Beiträgen anzeigen können.</li>
<li><strong>Sicherheitsmaßnahmen:</strong> Das Plugin implementiert Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unerwünschte Zugriffe auf die Plugin-Einstellungen zu verhindern.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Plugin-Download:</strong> [sdm_download id=&#8221;8187&#8243; fancy=&#8221;0&#8243;]<br />
<strong>Github:</strong> <a href="https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin" target="_blank" rel="nofollow noopener">https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin</a><br />
<strong>Quellcode:</strong></p>
<pre>&lt;?php
/*
  Plugin Name: HNP Empty Plugin
  Description: Creates a Demo Plugin in WordPress
  Version: 2.0
  Author: HNP C.R. 
  Author URI: https://homepage-nach-preis.de/
  License: GPLv3
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
 */

// Security check to prevent direct access to the plugin file
defined('ABSPATH') or die('No script kiddies please!');

// Function to enqueue the Frontend CSS and JS
function hnp_empty_plugin_frontend_scripts() {
    // Define a version number
    $version = '2.0';

    // Check if CSS is not already enqueued
    if (!wp_style_is('hnp_empty_plugin_frontend-css')) {
        // Enqueue CSS with the defined version
        wp_enqueue_style('hnp_empty_plugin_frontend-css', plugin_dir_url(__FILE__) . '/frontend/css/hnp_empty_plugin_frontend.css', array(), $version);
    }

    // Check if JavaScript is not already enqueued
    if (!wp_script_is('hnp_empty_plugin_frontend-js')) {
        // Enqueue JavaScript with the defined version
        wp_enqueue_script('hnp_empty_plugin_frontend-js', plugin_dir_url(__FILE__) . '/frontend/js/hnp_empty_plugin_frontend.js', array(), $version, true);
    }
}
add_action('wp_enqueue_scripts', 'hnp_empty_plugin_frontend_scripts');

// Function to enqueue Backend CSS and JS
function hnp_empty_plugin_backend_scripts() {
    // Define a version number
    $version = '2.0';

    // Check if CSS is not already enqueued
    if (!wp_style_is('hnp_empty_plugin_backend-css')) {
        // Enqueue CSS with the defined version
        wp_enqueue_style('hnp_empty_plugin_backend-css', plugin_dir_url(__FILE__) . '/backend/css/hnp_empty_plugin_backend.css', array(), $version);
    }

    // Check if JavaScript is not already enqueued
    if (!wp_script_is('hnp_empty_plugin_backend-js')) {
        // Enqueue JavaScript with the defined version
        wp_enqueue_script('hnp_empty_plugin_backend-js', plugin_dir_url(__FILE__) . '/backend/js/hnp_empty_plugin_backend.js', array(), $version, true);
    }
}
add_action('admin_enqueue_scripts', 'hnp_empty_plugin_backend_scripts');

// Function for Test - with load Options and Fallback
function hnp_empty_plugin_echo_func() {
    // Get option values
    $name = get_option('hnp_empty_plugin_name_field', 'Name');
    $number = get_option('hnp_empty_plugin_number_field', '12');
    $color = get_option('hnp_empty_plugin_color_field', '#ff0000');
    $description = get_option('hnp_empty_plugin_description_field', 'Im a Desc Field');
    $dropdown = get_option('hnp_empty_plugin_dropdown_field', 'option1');
    $checkbox = get_option('hnp_empty_plugin_checkbox_field', 0);

    // Echo option values
    echo '&lt;p&gt;Name Field: ' . esc_html($name) . '&lt;/p&gt;';
    echo '&lt;p&gt;Number Field: ' . esc_html($number) . '&lt;/p&gt;';
    echo '&lt;p&gt;Color Field: ' . esc_html($color) . '&lt;/p&gt;';
    echo '&lt;p&gt;Description Field: ' . esc_html($description) . '&lt;/p&gt;';
    echo '&lt;p&gt;Dropdown Field: ' . esc_html($dropdown) . '&lt;/p&gt;';
    echo '&lt;p&gt;Checkbox Field: ' . ($checkbox ? 'Enabled' : 'Disabled') . '&lt;/p&gt;';
}
add_shortcode('hnp_empty_plugin_echo_func', 'hnp_empty_plugin_echo_func');


// Function to add plugin options to the main menu
function hnp_empty_plugin_add_plugin_options_page() {
    // Check permission
    if (current_user_can('manage_options')) {
        add_menu_page(
            'HNP Empty Plugin Settings',
            'HNP Empty Plugin',
            'manage_options',
            'hnp-empty-plugin-settings',
            'hnp_empty_plugin_render_plugin_options_page',
            plugin_dir_url(__FILE__) . 'img/hnp-favi.png' 
        );
    }
}
add_action('admin_menu', 'hnp_empty_plugin_add_plugin_options_page');


// Function to render plugin options page
function hnp_empty_plugin_render_plugin_options_page() {
    ?&gt;
    &lt;div class="wrap hnp-empty-plugin-settings"&gt;
        &lt;h1&gt;HNP Empty Plugin Settings&lt;/h1&gt;
        &lt;form method="post" action="options.php"&gt;
            &lt;?php settings_fields('hnp_empty_plugin_settings_group'); ?&gt;
            &lt;?php do_settings_sections('hnp-empty-plugin-settings'); ?&gt;
            
            &lt;?php 
                // Add nonce
                wp_nonce_field('hnp_empty_plugin_settings_nonce', 'hnp_empty_plugin_settings_nonce'); 
            ?&gt;
            
            &lt;?php submit_button(); ?&gt;
        &lt;/form&gt;
    &lt;/div&gt;
    &lt;?php
}

// Function to register plugin options
function hnp_empty_plugin_register_plugin_options() {
    // Name
    add_settings_section(
        'hnp_empty_plugin_name_section',
        'Demo',
        'hnp_empty_plugin_demo_section_callback',
        'hnp-empty-plugin-settings'
    );

    // Name
    add_settings_field(
        'hnp_empty_plugin_name_field', 
        'Name Field', 
        'hnp_empty_plugin_name_field_callback', 
        'hnp-empty-plugin-settings', 
        'hnp_empty_plugin_name_section' 
    );

    // Number
    add_settings_field(
        'hnp_empty_plugin_number_field',
        'Number Field',
        'hnp_empty_plugin_number_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Color
    add_settings_field(
        'hnp_empty_plugin_color_field',
        'Color Field',
        'hnp_empty_plugin_color_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Description
    add_settings_field(
        'hnp_empty_plugin_description_field',
        'Description Field',
        'hnp_empty_plugin_description_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Dropdown
    add_settings_field(
        'hnp_empty_plugin_dropdown_field',
        'Dropdown Field',
        'hnp_empty_plugin_dropdown_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Checkbox
    add_settings_field(
        'hnp_empty_plugin_checkbox_field',
        'Checkbox Field',
        'hnp_empty_plugin_checkbox_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );
}
add_action('admin_init', 'hnp_empty_plugin_register_plugin_options');
</pre>
<pre>
// Callback function for demo section
function hnp_empty_plugin_demo_section_callback() {
    echo 'This a Demo Plugin. Frontend-Shortcode: &amp;#x5B;hnp_empty_plugin_echo_func]&lt;/p&gt;';
}

// Callback function for name field
function hnp_empty_plugin_name_field_callback() {
    $value = get_option('hnp_empty_plugin_name_field', 'Name'); // Fallback value is 'Name'
    echo '&lt;input type="text" name="hnp_empty_plugin_name_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback functions for number fields
function hnp_empty_plugin_number_field_callback() {
    $value = get_option('hnp_empty_plugin_number_field', '12'); // Fallback value is '12'
    echo '&lt;input type="number" name="hnp_empty_plugin_number_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback function for Color Field
function hnp_empty_plugin_color_field_callback() {
    $value = get_option('hnp_empty_plugin_color_field', '#ff0000'); // Fallback value is red color
    echo '&lt;input type="color" name="hnp_empty_plugin_color_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback function for Description Field
function hnp_empty_plugin_description_field_callback() {
    $value = get_option('hnp_empty_plugin_description_field', 'Im a Desc Field'); // Fallback value is 'Im a Desc Field'
    echo '&lt;textarea name="hnp_empty_plugin_description_field"&gt;' . esc_html($value) . '&lt;/textarea&gt;';
}

// Callback function for dropdown field
function hnp_empty_plugin_dropdown_field_callback() {
    $value = get_option('hnp_empty_plugin_dropdown_field', 'option1'); // Fallback value is 'option1'
    ?&gt;
    &lt;select name="hnp_empty_plugin_dropdown_field"&gt;
        &lt;option value="option1" &lt;?php selected($value, 'option1'); ?&gt;&gt;Option 1&lt;/option&gt;
        &lt;option value="option2" &lt;?php selected($value, 'option2'); ?&gt;&gt;Option 2&lt;/option&gt;
        &lt;option value="option3" &lt;?php selected($value, 'option3'); ?&gt;&gt;Option 3&lt;/option&gt;
    &lt;/select&gt;
    &lt;?php
}

// Callback function for checkbox field
function hnp_empty_plugin_checkbox_field_callback() {
    $value = get_option('hnp_empty_plugin_checkbox_field', 0); // Fallback value is 0 (not checked)
    ?&gt;
    &lt;label for="hnp_empty_plugin_checkbox_field"&gt;
        &lt;input type="checkbox" name="hnp_empty_plugin_checkbox_field" id="hnp_empty_plugin_checkbox_field" value="1" &lt;?php checked($value, 1); ?&gt;&gt;
        Enable Checkbox
    &lt;/label&gt;
    &lt;?php
}

// Security measures: Nonce verification and save options
function hnp_empty_plugin_register_security_options() {
    // Check if the current page is our plugin options page
    if (isset($_POST['option_page']) &amp;&amp; $_POST['option_page'] == 'hnp_empty_plugin_settings_group') {
        // Check if the nonce is set and valid
        if (!isset($_POST['hnp_empty_plugin_settings_nonce']) || !wp_verify_nonce($_POST['hnp_empty_plugin_settings_nonce'], 'hnp_empty_plugin_settings_nonce')) {
            // Unauthorized request, do not save options
            wp_die('Unauthorized request.'); // Output error message for unauthorized requests
        }

        // Save options
        update_option('hnp_empty_plugin_name_field', $_POST['hnp_empty_plugin_name_field']);
        update_option('hnp_empty_plugin_number_field', sanitize_text_field($_POST['hnp_empty_plugin_number_field']));
        update_option('hnp_empty_plugin_color_field', sanitize_text_field($_POST['hnp_empty_plugin_color_field']));
        update_option('hnp_empty_plugin_description_field', sanitize_textarea_field($_POST['hnp_empty_plugin_description_field']));
        update_option('hnp_empty_plugin_dropdown_field', sanitize_text_field($_POST['hnp_empty_plugin_dropdown_field']));
        update_option('hnp_empty_plugin_checkbox_field', isset($_POST['hnp_empty_plugin_checkbox_field']) ? 1 : 0);
    }
}
add_action('admin_init', 'hnp_empty_plugin_register_security_options');

// Register plugin options and security measures
function hnp_empty_plugin_register_settings() {
    // Register setting and sanitize callback
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_name_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_number_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_color_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_description_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_dropdown_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_checkbox_field');
}
add_action('admin_init', 'hnp_empty_plugin_register_settings');


// Security measures: Nonce verification for options update
function hnp_empty_plugin_validate_settings($input) {
    return $input; // Simply return the input, no further validation here
}

</pre>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/">HNP Empty Plugin &#8211; WordPress Demo Code</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HNP OpenStreetMap kostenloses Plugin</title>
		<link>https://homepage-nach-preis.de/2024/04/10/hnp-openstreetmap-kostenloses-plugin/</link>
					<comments>https://homepage-nach-preis.de/2024/04/10/hnp-openstreetmap-kostenloses-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 10:19:20 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Karte]]></category>
		<category><![CDATA[kostenlos]]></category>
		<category><![CDATA[Openmaps]]></category>
		<category><![CDATA[OpenStreetMap]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Shortcode]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8176</guid>

					<description><![CDATA[<p>Das &#8220;HNP OpenStreetMap Shortcode&#8221; Plugin ermöglicht es Benutzern, OpenStreetMap-Karten mit einem Pin direkt auf ihrer WordPress-Website einzubetten, indem sie einen Shortcode verwenden. Es bietet eine einfache Möglichkeit, einen Standort auf einer interaktiven Karte zu markieren. &#160; Hier sind die Hauptmerkmale des Plugins: Shortcode-Unterstützung: Benutzer können den bereitgestellten Shortcode verwenden, um eine Karte mit einem Pin an einem bestimmten Standort anzuzeigen. Anpassbare Optionen: Das Plugin bietet verschiedene anpassbare Optionen, darunter die Möglichkeit, die Adresse des Pins, den Namen des Markers, den Zoomlevel der Karte, den Kartenstil sowie die Höhe und Breite der Karte anzupassen. Integrierte Sicherheitsmaßnahmen: Das Plugin enthält Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unautorisierte Zugriffe auf die Plugin-Optionen zu verhindern und die Datenintegrität zu gewährleisten. Einfache Konfiguration: Benutzer können die Plugin-Optionen über das WordPress-Adminpanel konfigurieren, um ihre Karten entsprechend ihren Anforderungen anzupassen. Das Plugin wurde von Homepage-nach-Preis.de entwickelt und steht unter der GNU General Public License Version 3 (GPLv3), was bedeutet, dass es kostenlos verwendet und modifiziert werden kann, solange die Lizenzbedingungen eingehalten werden. Download: [sdm_download id=&#8221;8174&#8243; fancy=&#8221;0&#8243;] Github: https://github.com/HNP-Christopher-Rohde/hnp-openstreetmap-wordpress-plugin/tree/main/hnp_openstreetmap Quellcode: &#x3C;?php /* Plugin Name: HNP OpenStreetMap Shortcode Description: Creates a frontend OpenStreetMap map with a pin using a shortcode Version: 1.0 Author: HNP - C.R. Author URI: https://homepage-nach-preis.de/ License: GPLv3....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-openstreetmap-kostenloses-plugin/">HNP OpenStreetMap kostenloses Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das &#8220;HNP OpenStreetMap Shortcode&#8221; Plugin ermöglicht es Benutzern, OpenStreetMap-Karten mit einem Pin direkt auf ihrer WordPress-Website einzubetten, indem sie einen Shortcode verwenden. Es bietet eine einfache Möglichkeit, einen Standort auf einer interaktiven Karte zu markieren.</p>
<p>&nbsp;</p>
<p>Hier sind die Hauptmerkmale des Plugins:</p>
<ol>
<li><strong>Shortcode-Unterstützung:</strong> Benutzer können den bereitgestellten Shortcode verwenden, um eine Karte mit einem Pin an einem bestimmten Standort anzuzeigen.</li>
<li><strong>Anpassbare Optionen:</strong> Das Plugin bietet verschiedene anpassbare Optionen, darunter die Möglichkeit, die Adresse des Pins, den Namen des Markers, den Zoomlevel der Karte, den Kartenstil sowie die Höhe und Breite der Karte anzupassen.</li>
<li><strong>Integrierte Sicherheitsmaßnahmen:</strong> Das Plugin enthält Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unautorisierte Zugriffe auf die Plugin-Optionen zu verhindern und die Datenintegrität zu gewährleisten.</li>
<li><strong>Einfache Konfiguration:</strong> Benutzer können die Plugin-Optionen über das WordPress-Adminpanel konfigurieren, um ihre Karten entsprechend ihren Anforderungen anzupassen.</li>
</ol>
<p>Das Plugin wurde von Homepage-nach-Preis.de entwickelt und steht unter der GNU General Public License Version 3 (GPLv3), was bedeutet, dass es kostenlos verwendet und modifiziert werden kann, solange die Lizenzbedingungen eingehalten werden.</p>
<p><strong>Download:</strong> [sdm_download id=&#8221;8174&#8243; fancy=&#8221;0&#8243;]</p>
<p><strong>Github:</strong> <a href="https://github.com/HNP-Christopher-Rohde/hnp-openstreetmap-wordpress-plugin/tree/main/hnp_openstreetmap" target="_blank" rel="nofollow noopener">https://github.com/HNP-Christopher-Rohde/hnp-openstreetmap-wordpress-plugin/tree/main/hnp_openstreetmap</a><br />
<strong>Quellcode:</strong></p>
<pre>
&#x3C;?php
/*
  Plugin Name: HNP OpenStreetMap Shortcode
  Description: Creates a frontend OpenStreetMap map with a pin using a shortcode
  Version: 1.0
  Author: HNP - C.R.
  Author URI: https://homepage-nach-preis.de/
  License: GPLv3
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
 */

// Security check to prevent direct access to the plugin file
defined(&#x27;ABSPATH&#x27;) or die(&#x27;No script kiddies please!&#x27;);

// Function to enqueue Leaflet library
function hnp_openmaps_enqueue_leaflet_scripts() {
    // Define a version number for your CSS file
    $version = &#x27;1.9.4&#x27;;

    // Check if Leaflet CSS is not already enqueued
    if (!wp_style_is(&#x27;leaflet-css&#x27;)) {
        // Enqueue Leaflet CSS with the defined version
        wp_enqueue_style(&#x27;leaflet-css&#x27;, plugin_dir_url(__FILE__) . &#x27;leaflet/leaflet.css&#x27;, array(), $version);
    }

    // Check if Leaflet JavaScript is not already enqueued
    if (!wp_script_is(&#x27;leaflet-js&#x27;)) {
        // Enqueue Leaflet JavaScript with the defined version
        wp_enqueue_script(&#x27;leaflet-js&#x27;, plugin_dir_url(__FILE__) . &#x27;leaflet/leaflet.js&#x27;, array(), $version, true);
    }
}
add_action(&#x27;wp_enqueue_scripts&#x27;, &#x27;hnp_openmaps_enqueue_leaflet_scripts&#x27;);

// Function to display OpenStreetMap maps with a pin
function hnp_openmaps_display_map_with_pin() {
    // Load options and sanitize address
    $raw_address = get_option(&#x27;hnp_openmaps_map_address&#x27;, &#x27;Hardenbergpl. 8, 10787 Berlin, Germany&#x27;);
    $clean_address = sanitize_text_field($raw_address);

    // Load options and sanitize marker name
    $marker_name = get_option(&#x27;hnp_openmaps_map_name&#x27;, &#x27;Berlin Zoological Garden&#x27;); 

    // Load zoom level, map style, height, and width of the map
    $zoom = get_option(&#x27;hnp_openmaps_map_zoom&#x27;, 12);
    $style = get_option(&#x27;hnp_openmaps_map_style&#x27;, &#x27;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#x27;);
    $height = get_option(&#x27;hnp_openmaps_map_height&#x27;, &#x27;400px&#x27;);
    $width = get_option(&#x27;hnp_openmaps_map_width&#x27;, &#x27;100%&#x27;);

    // JavaScript variable for map initialization and adding markers
    $map = &#x22;
        &#x3C;script&#x3E;
            document.addEventListener(&#x27;DOMContentLoaded&#x27;, function() {
    &#x22;;

    // Split address into individual parts and encode
    $address_parts = explode(&#x27;,&#x27;, $clean_address);
    $encoded_address_parts = array_map(&#x27;urlencode&#x27;, $address_parts);
    $encoded_address = implode(&#x27;,&#x27;, $encoded_address_parts);

    // Construct Nominatim URL
    $nominatim_url = &#x22;https://nominatim.openstreetmap.org/search?format=json&#x26;q={$encoded_address}&#x22;;

    // Get geocoding data from Nominatim
    $response = wp_remote_get($nominatim_url);

    // Check if the request was successful
    if (!is_wp_error($response) &#x26;&#x26; wp_remote_retrieve_response_code($response) === 200) {
        $data = json_decode(wp_remote_retrieve_body($response), true);

        // Check if geocoding results were obtained
        if (!empty($data)) {
            $latitude = $data[0][&#x27;lat&#x27;];
            $longitude = $data[0][&#x27;lon&#x27;];

            // Initialize map with center at marker coordinates
            $map .= &#x22;
                var hnp_openmaps_map = L.map(&#x27;hnp_openmaps_map&#x27;).setView([$latitude, $longitude], $zoom);
            &#x22;;

            // Add tiles to the map
            $map .= &#x22;
                L.tileLayer(&#x27;$style&#x27;, {
                    attribution: &#x27;&#x26;copy; &#x3C;a href=\&#x22;https://www.openstreetmap.org/copyright\&#x22;&#x3E;OpenStreetMap&#x3C;/a&#x3E; contributors&#x27;
                }).addTo(hnp_openmaps_map);
            &#x22;;

            // Add marker to the map
            $map .= &#x22;
                L.marker([$latitude, $longitude]).addTo(hnp_openmaps_map).bindPopup(&#x27;&#x22; . esc_js($clean_address) . &#x22;&#x27;).bindTooltip(&#x27;&#x22; . esc_js($marker_name) . &#x22;&#x27;);
                console.log(&#x27;Geocoding successful for address:&#x27;, &#x22; . wp_json_encode($clean_address) . &#x22;);
            &#x22;;
        } else {
            // Error retrieving geocoding data
            error_log(&#x22;Error retrieving geocoding data for address: $clean_address&#x22;);
            $map .= &#x22;
                console.log(&#x27;Error retrieving geocoding data for address:&#x27;, &#x22; . wp_json_encode($clean_address) . &#x22;);
            &#x22;;
        }
    } else {
        // Error retrieving geocoding data
        error_log(&#x22;Error retrieving geocoding data for address: $clean_address&#x22;);
        $map .= &#x22;
            console.log(&#x27;Error retrieving geocoding data for address:&#x27;, &#x22; . wp_json_encode($clean_address) . &#x22;);
        &#x22;;
    }

    // Add JavaScript end
    $map .= &#x22;
            });
        &#x3C;/script&#x3E;
    &#x22;;

    // Return map div and JavaScript
    return &#x27;&#x3C;div id=&#x22;hnp_openmaps_map&#x22; style=&#x22;height: &#x27; . esc_attr($height) . &#x27;; width: &#x27; . esc_attr($width) . &#x27;;&#x22;&#x3E;&#x3C;/div&#x3E;&#x27; . $map;
}

// Register shortcode
add_shortcode(&#x27;hnp_openmaps_display_map_with_pin&#x27;, &#x27;hnp_openmaps_display_map_with_pin&#x27;);

// Function to add plugin options to the main menu
function hnp_openmaps_add_plugin_options_page() {
    // Check permission
    if (current_user_can(&#x27;manage_options&#x27;)) {
        add_menu_page(
            &#x27;HNP OpenStreetMap Settings&#x27;,
            &#x27;HNP OpenStreetMap&#x27;,
            &#x27;manage_options&#x27;,
            &#x27;hnp-openmaps-osm-settings&#x27;,
            &#x27;hnp_openmaps_render_plugin_options_page&#x27;,
            plugin_dir_url(__FILE__) . &#x27;img/hnp-favi.png&#x27; 
        );
    }
}
add_action(&#x27;admin_menu&#x27;, &#x27;hnp_openmaps_add_plugin_options_page&#x27;);

// Add settings link to plugin on the Plugins page
function hnp_openmaps_add_settings_link($links) {
    $settings_link = &#x27;&#x3C;a href=&#x22;admin.php?page=hnp-openmaps-osm-settings&#x22;&#x3E;&#x27; . __(&#x27;Settings&#x27;) . &#x27;&#x3C;/a&#x3E;&#x27;;
    array_unshift($links, $settings_link); // Add the settings link at the beginning of the array
    return $links;
}
add_filter(&#x27;plugin_action_links_&#x27; . plugin_basename(__FILE__), &#x27;hnp_openmaps_add_settings_link&#x27;);


// Function to render plugin options page
function hnp_openmaps_render_plugin_options_page() {
    ?&#x3E;
    &#x3C;div class=&#x22;wrap&#x22;&#x3E;
        &#x3C;h1&#x3E;HNP OpenStreetMap Settings&#x3C;/h1&#x3E;
        &#x3C;form method=&#x22;post&#x22; action=&#x22;options.php&#x22;&#x3E;
            &#x3C;?php settings_fields(&#x27;hnp_openmaps_osm_settings_group&#x27;); ?&#x3E;
            &#x3C;?php do_settings_sections(&#x27;hnp-openmaps-osm-settings&#x27;); ?&#x3E;
            &#x3C;?php 
                // Add nonce
                wp_nonce_field(&#x27;hnp_openmaps_osm_settings_nonce&#x27;, &#x27;hnp_openmaps_osm_settings_nonce&#x27;); 
            ?&#x3E;
            &#x3C;?php submit_button(); ?&#x3E;
        &#x3C;/form&#x3E;
    &#x3C;/div&#x3E;
    &#x3C;?php
}

</pre>
<pre>

// Function to register plugin options
function hnp_openmaps_register_plugin_options() {
    // Adresse
    add_settings_section(
        &#x27;hnp_openmaps_osm_address_section&#x27;,
        &#x27;Address&#x27;,
        &#x27;hnp_openmaps_osm_address_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_address&#x27;,
        &#x27;Address&#x27;,
        &#x27;hnp_openmaps_map_address_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_address_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_address&#x27;);

    // Name
    add_settings_section(
        &#x27;hnp_openmaps_osm_name_section&#x27;,
        &#x27;Name&#x27;,
        &#x27;hnp_openmaps_osm_name_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_name&#x27;,
        &#x27;Name&#x27;,
        &#x27;hnp_openmaps_map_name_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_name_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_name&#x27;);

    // Karten-Zoom
    add_settings_section(
        &#x27;hnp_openmaps_osm_zoom_section&#x27;,
        &#x27;Map Zoom&#x27;,
        &#x27;hnp_openmaps_osm_zoom_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_zoom&#x27;,
        &#x27;Map Zoom&#x27;,
        &#x27;hnp_openmaps_map_zoom_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_zoom_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_zoom&#x27;);

    // Kartenstil
    add_settings_section(
        &#x27;hnp_openmaps_osm_style_section&#x27;,
        &#x27;Map Style&#x27;,
        &#x27;hnp_openmaps_osm_style_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_style&#x27;,
        &#x27;Map Style&#x27;,
        &#x27;hnp_openmaps_map_style_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_style_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_style&#x27;);

    add_settings_section(
        &#x27;hnp_openmaps_osm_height_section&#x27;,
        &#x27;Map Height&#x27;,
        &#x27;hnp_openmaps_osm_height_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_height&#x27;,
        &#x27;Map Height&#x27;,
        &#x27;hnp_openmaps_map_height_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_height_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_height&#x27;);

    add_settings_section(
        &#x27;hnp_openmaps_osm_width_section&#x27;,
        &#x27;Map Width&#x27;,
        &#x27;hnp_openmaps_osm_width_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
    add_settings_field(
        &#x27;hnp_openmaps_map_width&#x27;,
        &#x27;Map Width&#x27;,
        &#x27;hnp_openmaps_map_width_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;,
        &#x27;hnp_openmaps_osm_width_section&#x27;
    );
    register_setting(&#x27;hnp_openmaps_osm_settings_group&#x27;, &#x27;hnp_openmaps_map_width&#x27;);

    add_settings_section(
        &#x27;hnp_openmaps_shortcode_section&#x27;,
        &#x27;Shortcode&#x27;,
        &#x27;hnp_openmaps_shortcode_section_callback&#x27;,
        &#x27;hnp-openmaps-osm-settings&#x27;
    );
}

</pre>
<pre>

// Callback functions for each option
function hnp_openmaps_osm_address_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Enter the address to be displayed on the map. &#x3C;br&#x3E;Format: Streetname + Housenumber, City Name + ZIP Code, Country &#x3C;br&#x3E;(Separate each part with a comma)&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_address_callback() {
    $address = get_option(&#x27;hnp_openmaps_map_address&#x27;, &#x27;Hardenbergpl. 8, 10787 Berlin, Germany&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_openmaps_map_address&#x22; value=&#x22;&#x27; . esc_attr($address) . &#x27;&#x22; /&#x3E;&#x27;;
}

function hnp_openmaps_osm_name_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Enter the name for the marker to be displayed on the map.&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_name_callback() {
    $name = get_option(&#x27;hnp_openmaps_map_name&#x27;, &#x27;Berlin Zoological Garden&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_openmaps_map_name&#x22; value=&#x22;&#x27; . esc_attr($name) . &#x27;&#x22; /&#x3E;&#x27;;
}

function hnp_openmaps_osm_zoom_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Set the zoom level of the map.&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_zoom_callback() {
    $zoom = get_option(&#x27;hnp_openmaps_map_zoom&#x27;, 12);
    echo &#x27;&#x3C;input type=&#x22;number&#x22; name=&#x22;hnp_openmaps_map_zoom&#x22; value=&#x22;&#x27; . esc_attr($zoom) . &#x27;&#x22; /&#x3E;&#x27;;
}
function hnp_openmaps_osm_style_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Select the map style.&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_style_callback() {
    $style = get_option(&#x27;hnp_openmaps_map_style&#x27;, &#x27;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#x27;);
    $styles = array(
        &#x27;Standard (OpenStreetMap)&#x27; =&#x3E; &#x27;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#x27;,
        &#x27;Hot&#x27; =&#x3E; &#x27;https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png&#x27;,
        &#x27;Cycle&#x27; =&#x3E; &#x27;https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png&#x27;,
        &#x27;Transport&#x27; =&#x3E; &#x27;https://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png&#x27;
        // More styles can be added here
    );
    echo &#x27;&#x3C;select name=&#x22;hnp_openmaps_map_style&#x22;&#x3E;&#x27;;
    foreach ($styles as $label =&#x3E; $url) {
        echo &#x27;&#x3C;option value=&#x22;&#x27; . esc_attr($url) . &#x27;&#x22; &#x27; . selected($style, $url, false) . &#x27;&#x3E;&#x27; . esc_html($label) . &#x27;&#x3C;/option&#x3E;&#x27;;
    }
    echo &#x27;&#x3C;/select&#x3E;&#x27;;
}

function hnp_openmaps_osm_height_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Set the height of the map.&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_height_callback() {
    $height = get_option(&#x27;hnp_openmaps_map_height&#x27;, &#x27;400px&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_openmaps_map_height&#x22; value=&#x22;&#x27; . esc_attr($height) . &#x27;&#x22; /&#x3E;&#x27;;
}
function hnp_openmaps_osm_width_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Set the width of the map.&#x3C;/p&#x3E;&#x27;;
}
function hnp_openmaps_map_width_callback() {
    $width = get_option(&#x27;hnp_openmaps_map_width&#x27;, &#x27;100%&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_openmaps_map_width&#x22; value=&#x22;&#x27; . esc_attr($width) . &#x27;&#x22; /&#x3E;&#x27;;
}
function hnp_openmaps_shortcode_section_callback() {
    echo &#x27;&#x3C;p&#x3E;Shortcode: &#x26;#x5B;hnp_openmaps_display_map_with_pin]&#x3C;/p&#x3E;&#x27;;
}

// Register plugin options and security measures
add_action(&#x27;admin_init&#x27;, &#x27;hnp_openmaps_register_plugin_options&#x27;);

// Security measures: Nonce verification for options update
function hnp_openmaps_validate_settings($input) {
    return $input; // Simply return the input, no further validation here
}

// Security measures: Nonce verification and save options
function hnp_openmaps_register_security_options() {
    // Check if the current page is our plugin options page
    if (isset($_POST[&#x27;option_page&#x27;]) &#x26;&#x26; $_POST[&#x27;option_page&#x27;] == &#x27;hnp_openmaps_osm_settings_group&#x27;) {
        // Check if the nonce is set and valid
        if (!isset($_POST[&#x27;hnp_openmaps_osm_settings_nonce&#x27;]) || !wp_verify_nonce($_POST[&#x27;hnp_openmaps_osm_settings_nonce&#x27;], &#x27;hnp_openmaps_osm_settings_nonce&#x27;)) {
            // Unauthorized request, do not save options
            wp_die(&#x27;Unauthorized request.&#x27;); // Output error message for unauthorized requests
        }

        // Save options
        update_option(&#x27;hnp_openmaps_map_address&#x27;, $_POST[&#x27;hnp_openmaps_map_address&#x27;]);
        update_option(&#x27;hnp_openmaps_map_name&#x27;, $_POST[&#x27;hnp_openmaps_map_name&#x27;]);
        update_option(&#x27;hnp_openmaps_map_zoom&#x27;, $_POST[&#x27;hnp_openmaps_map_zoom&#x27;]);
        update_option(&#x27;hnp_openmaps_map_style&#x27;, $_POST[&#x27;hnp_openmaps_map_style&#x27;]);
        update_option(&#x27;hnp_openmaps_map_height&#x27;, $_POST[&#x27;hnp_openmaps_map_height&#x27;]);
        update_option(&#x27;hnp_openmaps_map_width&#x27;, $_POST[&#x27;hnp_openmaps_map_width&#x27;]);
    }
}
add_action(&#x27;admin_init&#x27;, &#x27;hnp_openmaps_register_security_options&#x27;);

</pre>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-openstreetmap-kostenloses-plugin/">HNP OpenStreetMap kostenloses Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/10/hnp-openstreetmap-kostenloses-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HNP Bewertungssystem Plugin</title>
		<link>https://homepage-nach-preis.de/2024/04/05/hnp-bewertungssystem-plugin/</link>
					<comments>https://homepage-nach-preis.de/2024/04/05/hnp-bewertungssystem-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Fri, 05 Apr 2024 12:24:30 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Bewertungen]]></category>
		<category><![CDATA[Bewertungssystem]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Rating]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8151</guid>

					<description><![CDATA[<p>HNP Rating Form &#8211; Revolutionieren Sie das Bewertungserlebnis auf Ihrer WordPress-Website Das HNP Rating Form Plugin ist die ultimative Lösung, um Ihrer WordPress-Website eine hochmoderne Bewertungsfunktion hinzuzufügen. Mit einer Vielzahl von leistungsstarken Funktionen und einem benutzerfreundlichen Interface bietet dieses Plugin eine nahtlose Möglichkeit, das Feedback Ihrer Benutzer zu sammeln und zu verwalten. Hier sind einige herausragende Merkmale, die das HNP Rating Form Plugin zu bieten hat: &#160; Benutzerfreundliches Backend-Interface Das Plugin bietet eine intuitive und benutzerfreundliche Oberfläche im WordPress-Backend, über die Sie mühelos alle Aspekte Ihres Bewertungssystems verwalten können. Von der Genehmigung von Bewertungen bis hin zur Anpassung der Einstellungen haben Sie alles im Griff. &#160; Sicherheitsfunktionen zum Schutz vor Missbrauch Mit integrierten Sicherheitsfunktionen wie Captcha können Sie Ihr Bewertungssystem vor Spam und Missbrauch schützen. Aktivieren Sie Captcha, um sicherzustellen, dass nur echte Benutzer Bewertungen abgeben können, ohne von unerwünschten Inhalten überflutet zu werden. &#160; Flexible Einstellungsoptionen Passen Sie das Bewertungssystem an Ihre spezifischen Anforderungen an, indem Sie Optionen wie die Anzeige des Bewertungsdatums, die automatische Freischaltung von Bewertungen und die Anzahl der angezeigten Sterne anpassen. Mit dem HNP Rating Form Plugin haben Sie die volle Kontrolle über Ihre Bewertungen. &#160; Leistungsstarke Shortcodes für eine nahtlose Integration Nutzen Sie eine....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/05/hnp-bewertungssystem-plugin/">HNP Bewertungssystem Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>HNP Rating Form &#8211; Revolutionieren Sie das Bewertungserlebnis auf Ihrer WordPress-Website</h3>
<p>Das HNP Rating Form Plugin ist die ultimative Lösung, um Ihrer WordPress-Website eine hochmoderne Bewertungsfunktion hinzuzufügen. Mit einer Vielzahl von leistungsstarken Funktionen und einem benutzerfreundlichen Interface bietet dieses Plugin eine nahtlose Möglichkeit, das Feedback Ihrer Benutzer zu sammeln und zu verwalten. Hier sind einige herausragende Merkmale, die das HNP Rating Form Plugin zu bieten hat:</p>
<p>&nbsp;</p>
<h3>Benutzerfreundliches Backend-Interface</h3>
<p>Das Plugin bietet eine intuitive und benutzerfreundliche Oberfläche im WordPress-Backend, über die Sie mühelos alle Aspekte Ihres Bewertungssystems verwalten können. Von der Genehmigung von Bewertungen bis hin zur Anpassung der Einstellungen haben Sie alles im Griff.</p>
<p>&nbsp;</p>
<h3>Sicherheitsfunktionen zum Schutz vor Missbrauch</h3>
<p>Mit integrierten Sicherheitsfunktionen wie Captcha können Sie Ihr Bewertungssystem vor Spam und Missbrauch schützen. Aktivieren Sie Captcha, um sicherzustellen, dass nur echte Benutzer Bewertungen abgeben können, ohne von unerwünschten Inhalten überflutet zu werden.</p>
<p>&nbsp;</p>
<h3>Flexible Einstellungsoptionen</h3>
<p>Passen Sie das Bewertungssystem an Ihre spezifischen Anforderungen an, indem Sie Optionen wie die Anzeige des Bewertungsdatums, die automatische Freischaltung von Bewertungen und die Anzahl der angezeigten Sterne anpassen. Mit dem HNP Rating Form Plugin haben Sie die volle Kontrolle über Ihre Bewertungen.</p>
<p>&nbsp;</p>
<h3>Leistungsstarke Shortcodes für eine nahtlose Integration</h3>
<p>Nutzen Sie eine Vielzahl von Shortcodes, um Bewertungsformulare und -ergebnisse nahtlos in Ihre Website zu integrieren. Mit Shortcodes können Sie Gesamtbewertungen, Einzelbewertungen und benutzerdefinierte Bewertungsformulare mit Leichtigkeit anzeigen.</p>
<p>&nbsp;</p>
<h3>Vollständig anpassbares Design</h3>
<p>Passen Sie das Aussehen und Verhalten Ihres Bewertungssystems mühelos an, um sicherzustellen, dass es perfekt zu Ihrem Website-Design passt. Mit benutzerdefinierten CSS-Styles können Sie das Aussehen Ihres Bewertungssystems ganz nach Ihren Wünschen gestalten.</p>
<p>&nbsp;</p>
<h3>Unterstützung für strukturierte Daten (JSON-LD)</h3>
<p>Verbessern Sie die Sichtbarkeit Ihrer Website in den Suchergebnissen, indem Sie strukturierte Daten für Rich Snippets hinzufügen. Das Plugin generiert automatisch strukturierte Daten für Ihre Bewertungen, um Suchmaschinen zu helfen, Ihre Inhalte besser zu verstehen.</p>
<p>&nbsp;</p>
<p>Das HNP Rating Form Plugin bietet Ihnen alles, was Sie benötigen, um das Benutzerengagement zu steigern, wertvolle Rückmeldungen zu sammeln und das Vertrauen Ihrer Besucher zu stärken. Holen Sie sich noch heute das Plugin und bringen Sie Ihre Bewertungen auf die nächste Stufe!</p>
<p>Erwecken Sie Ihre Website zum Leben und geben Sie Ihren Benutzern eine Stimme mit dem HNP Rating Form Plugin!</p>
<p>&nbsp;</p>
<p><strong>Mehr Lesen &amp; Download:</strong></p>
<p><a href="https://shop.homepage-nach-preis.de/produkt/hnp-bewertungssystem-wordpress-plugin/" target="_blank" rel="nofollow noopener">https://shop.homepage-nach-preis.de/produkt/hnp-bewertungssystem-wordpress-plugin/</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/05/hnp-bewertungssystem-plugin/">HNP Bewertungssystem Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/05/hnp-bewertungssystem-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HNP Variable CSS WordPress Plugin</title>
		<link>https://homepage-nach-preis.de/2024/04/04/hnp-variable-css-wordpress-plugin/</link>
					<comments>https://homepage-nach-preis.de/2024/04/04/hnp-variable-css-wordpress-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 03:18:54 +0000</pubDate>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Var]]></category>
		<category><![CDATA[Variable]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8140</guid>

					<description><![CDATA[<p>Das HNP Variable CSS WordPress Plugin ist eine Erweiterung für WordPress-Websites, die eine einfache Möglichkeit bietet, CSS-Variablen oder CSS-Custom-Properties zu verwenden. Nach der Installation und Aktivierung des Plugins können Sie Ihre gewünschten Werte in den Plugin-Optionen festlegen und anschließend diese festgelegten CSS-Variablen in Ihrem Theme verwenden. Dadurch können Sie Ihre Website modern gestalten und zukunftssicher machen, oder sogar das Plugin für Funktionen wie einen Dark Mode nutzen (diese Funktion erfordert möglicherweise zusätzliche Anpassungen). Folgende CSS-Variablen stehen zur Verfügung: hnp_primary-color hnp_secondary-color hnp_tertiary-color hnp_quaternary-color hnp_quinary-color hnp_font-size-small hnp_font-size-medium hnp_font-size-large hnp_font-weight-normal hnp_font-weight-bold hnp_font-weight-light hnp_font-family-primary hnp_font-family-secondary hnp_padding-small hnp_padding-big hnp_transparency-low hnp_transparency-high hnp_margin-small hnp_margin-big &#160; Zusammenfassung der Funktionen: Erstellt eine Optionen-Seite im Plugin, um die VAR CSS-Werte festzulegen und zu speichern. Verwendet JavaScript (ohne jQuery), um die Variablen mit dem CSS zu verbinden. Nutzen Sie die CSS-Variablen für Container, Schriftarten oder andere Stilelemente in Ihrem Theme. &#160; Mehr Information und Download: HNP Variable CSS WordPress Plugin</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/04/hnp-variable-css-wordpress-plugin/">HNP Variable CSS WordPress Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das HNP Variable CSS WordPress Plugin ist eine Erweiterung für WordPress-Websites, die eine einfache Möglichkeit bietet, CSS-Variablen oder CSS-Custom-Properties zu verwenden. Nach der Installation und Aktivierung des Plugins können Sie Ihre gewünschten Werte in den Plugin-Optionen festlegen und anschließend diese festgelegten CSS-Variablen in Ihrem Theme verwenden. Dadurch können Sie Ihre Website modern gestalten und zukunftssicher machen, oder sogar das Plugin für Funktionen wie einen Dark Mode nutzen (diese Funktion erfordert möglicherweise zusätzliche Anpassungen).</p>
<p><img decoding="async" class="alignnone size-medium wp-image-8144" src="https://homepage-nach-preis.de/wp-content/uploads/2024/04/var-css-wordpress-300x161.jpg" alt="" width="300" height="161" srcset="https://homepage-nach-preis.de/wp-content/uploads/2024/04/var-css-wordpress-300x161.jpg 300w, https://homepage-nach-preis.de/wp-content/uploads/2024/04/var-css-wordpress.jpg 402w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p><strong>Folgende CSS-Variablen stehen zur Verfügung:</strong></p>
<ul>
<li>hnp_primary-color</li>
<li>hnp_secondary-color</li>
<li>hnp_tertiary-color</li>
<li>hnp_quaternary-color</li>
<li>hnp_quinary-color</li>
<li>hnp_font-size-small</li>
<li>hnp_font-size-medium</li>
<li>hnp_font-size-large</li>
<li>hnp_font-weight-normal</li>
<li>hnp_font-weight-bold</li>
<li>hnp_font-weight-light</li>
<li>hnp_font-family-primary</li>
<li>hnp_font-family-secondary</li>
<li>hnp_padding-small</li>
<li>hnp_padding-big</li>
<li>hnp_transparency-low</li>
<li>hnp_transparency-high</li>
<li>hnp_margin-small</li>
<li>hnp_margin-big</li>
</ul>
<p>&nbsp;</p>
<p><strong>Zusammenfassung der Funktionen:</strong></p>
<ul>
<li>Erstellt eine Optionen-Seite im Plugin, um die VAR CSS-Werte festzulegen und zu speichern.</li>
<li>Verwendet JavaScript (ohne jQuery), um die Variablen mit dem CSS zu verbinden.</li>
<li>Nutzen Sie die CSS-Variablen für Container, Schriftarten oder andere Stilelemente in Ihrem Theme.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Mehr Information und Download:</strong><br />
<a href="https://shop.homepage-nach-preis.de/produkt/hnp-variable-css-wordpress-plugin/" target="_blank" rel="nofollow noopener">HNP Variable CSS WordPress Plugin</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/04/hnp-variable-css-wordpress-plugin/">HNP Variable CSS WordPress Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/04/hnp-variable-css-wordpress-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Temporäre Produkte WooCommerce Plugin</title>
		<link>https://homepage-nach-preis.de/2024/04/04/temporaere-produkte-woocommerce-plugin/</link>
					<comments>https://homepage-nach-preis.de/2024/04/04/temporaere-produkte-woocommerce-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 03:14:39 +0000</pubDate>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Onlineshop]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[Produkte]]></category>
		<category><![CDATA[temp]]></category>
		<category><![CDATA[Temporäre]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8135</guid>

					<description><![CDATA[<p>Das HNP Temp Product WooCommerce Plugin erweitert WordPress-Websites, die WooCommerce verwenden, um temporäre Produkte zu verkaufen. Mit einem einfachen Shortcode können Sie einen &#8220;Warenkorb&#8221; -Button hinzufügen, der es Benutzern ermöglicht, individuelle temporäre Produkte direkt in den Warenkorb zu legen. Dieses temporäre Produkt wird automatisch erstellt, sobald der Button gedrückt wird, ohne dass Sie ein spezielles WooCommerce-Produkt erstellen müssen. Nach einer bestimmten Zeit kann das Produkt automatisch aus dem Warenkorb entfernt werden. Zusammenfassung der Funktionen: Einfache Integration: Der Warenkorb-Button kann überall auf der Website platziert werden. Automatische Produkterstellung: Das Drücken des Buttons erstellt automatisch ein temporäres Produkt im Warenkorb. Benutzerfreundlichkeit: Benutzer werden automatisch zum Warenkorb weitergeleitet. Flexibilität: Das Plugin ermöglicht es Entwicklern, das Verhalten des Buttons durch Hinzufügen einer Post-ID anzupassen, um Daten von benutzerdefinierten Beitragstypen oder Blogbeiträgen zu nutzen. Sicherheit: Das Plugin enthält Sicherheitsoptimierungen gegen XSS-Angriffe und direkte Datei-Aufrufe. Performance: Verwendet direktes Javascript ohne jQuery und keine externen Bibliotheken, was zu einer guten Leistung führt. Kompatibel mit PHP 7.x und 8.x. &#160; Mehr Informationen und Download: Temporäre Produkte WooCommerce Plugin</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/04/temporaere-produkte-woocommerce-plugin/">Temporäre Produkte WooCommerce Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignnone size-medium wp-image-8137" src="https://homepage-nach-preis.de/wp-content/uploads/2024/04/temp-produkt-1-300x141.jpg" alt="" width="300" height="141" srcset="https://homepage-nach-preis.de/wp-content/uploads/2024/04/temp-produkt-1-300x141.jpg 300w, https://homepage-nach-preis.de/wp-content/uploads/2024/04/temp-produkt-1.jpg 396w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>Das HNP Temp Product WooCommerce Plugin erweitert WordPress-Websites, die WooCommerce verwenden, um temporäre Produkte zu verkaufen. Mit einem einfachen Shortcode können Sie einen &#8220;Warenkorb&#8221; -Button hinzufügen, der es Benutzern ermöglicht, individuelle temporäre Produkte direkt in den Warenkorb zu legen. Dieses temporäre Produkt wird automatisch erstellt, sobald der Button gedrückt wird, ohne dass Sie ein spezielles WooCommerce-Produkt erstellen müssen. Nach einer bestimmten Zeit kann das Produkt automatisch aus dem Warenkorb entfernt werden.</p>
<p><strong>Zusammenfassung der Funktionen:</strong></p>
<ul>
<li>Einfache Integration: Der Warenkorb-Button kann überall auf der Website platziert werden.</li>
<li>Automatische Produkterstellung: Das Drücken des Buttons erstellt automatisch ein temporäres Produkt im Warenkorb.</li>
<li>Benutzerfreundlichkeit: Benutzer werden automatisch zum Warenkorb weitergeleitet.</li>
<li>Flexibilität: Das Plugin ermöglicht es Entwicklern, das Verhalten des Buttons durch Hinzufügen einer Post-ID anzupassen, um Daten von benutzerdefinierten Beitragstypen oder Blogbeiträgen zu nutzen.</li>
<li>Sicherheit: Das Plugin enthält Sicherheitsoptimierungen gegen XSS-Angriffe und direkte Datei-Aufrufe.</li>
<li>Performance: Verwendet direktes Javascript ohne jQuery und keine externen Bibliotheken, was zu einer guten Leistung führt. Kompatibel mit PHP 7.x und 8.x.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Mehr Informationen und Download:</strong><br />
<a href="https://shop.homepage-nach-preis.de/produkt/hnp-temporaere-woocommerce-produkte/" target="_blank" rel="nofollow noopener">Temporäre Produkte WooCommerce Plugin</a></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/04/temporaere-produkte-woocommerce-plugin/">Temporäre Produkte WooCommerce Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/04/temporaere-produkte-woocommerce-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Neues HNP Lieferdatum &#038; Lieferzeit WooCommerce Plugin</title>
		<link>https://homepage-nach-preis.de/2024/01/16/neues-hnp-lieferdatum-lieferzeit-woocommerce-plugin/</link>
					<comments>https://homepage-nach-preis.de/2024/01/16/neues-hnp-lieferdatum-lieferzeit-woocommerce-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Tue, 16 Jan 2024 14:27:04 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Lieferdatum]]></category>
		<category><![CDATA[Lieferuhrzeit]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8089</guid>

					<description><![CDATA[<p>In der dynamischen Welt des E-Commerce ist es von entscheidender Bedeutung, den Kunden eine nahtlose und personalisierte Erfahrung zu bieten. Das HNP Lieferdatum &#38; Lieferzeit WordPress &#38; WooCommerce Plugin eröffnet neue Möglichkeiten für Online-Shops, insbesondere für Restaurants, Bäckereien, Speditionen und Dienstleistungsanbieter. Diese Erweiterung ermöglicht es Kunden, das Lieferdatum und die Lieferzeit flexibel zu wählen, um den individuellen Anforderungen gerecht zu werden. Überblick der Funktionen: Datums- und Zeitauswahl: Integriert mühelos neue Felder für Lieferdatum und Lieferzeit auf der WooCommerce-Kassenseite. Unabhängige und synchronisierte Nutzung von Datum- und Zeitauswahl-Plugins. Datenverwaltung: Gespeicherte Informationen werden an die Admin- und Kunden-E-Mails der Kaufbestätigung weitergeleitet. Anzeige der Daten in der Admin-Bestellübersicht für eine einfache Verwaltung. Validierung und Filteroptionen: Gültigkeitsprüfung der eingegebenen Daten für eine zuverlässige Erfassung. Datumsauswahl kann nach Wochentagen und individuellen Terminen gefiltert werden. Maximale Uhrzeit und Verzögerungsoptionen: Einführung einer &#8220;maximalen Uhrzeit&#8221; Funktion für Lieferungen am Bestelltag. Möglichkeit der Lieferverzögerung in Tagen oder Minuten für individuelle Anforderungen. Benutzerfreundliche Auswahlmöglichkeiten: Datumsauswahl durch HTML-Kalender und Uhrzeitauswahl durch Dropdown-Menüs. Anpassbare Auswahl für einen effizienten Bestellprozess. Vielseitige Anwendungsmöglichkeiten: Optimal für Restaurants, Bäckereien, Speditionen und andere liefernde Shops. Ebenso geeignet für Dienstleistungsunternehmen, die Terminvereinbarungen anbieten. Individuelle Konfiguration: Freie Wahl zwischen Datum- und/oder Zeitauswahl je nach den Bedürfnissen des Geschäfts. Flexible Anpassung....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/01/16/neues-hnp-lieferdatum-lieferzeit-woocommerce-plugin/">Neues HNP Lieferdatum &#038; Lieferzeit WooCommerce Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In der dynamischen Welt des E-Commerce ist es von entscheidender Bedeutung, den Kunden eine nahtlose und personalisierte Erfahrung zu bieten. Das HNP Lieferdatum &amp; Lieferzeit WordPress &amp; WooCommerce Plugin eröffnet neue Möglichkeiten für Online-Shops, insbesondere für Restaurants, Bäckereien, Speditionen und Dienstleistungsanbieter. Diese Erweiterung ermöglicht es Kunden, das Lieferdatum und die Lieferzeit flexibel zu wählen, um den individuellen Anforderungen gerecht zu werden.</p>
<hr />
<p><strong>Überblick der Funktionen:</strong></p>
<ol>
<li><strong>Datums- und Zeitauswahl:</strong>
<ul>
<li>Integriert mühelos neue Felder für Lieferdatum und Lieferzeit auf der WooCommerce-Kassenseite.</li>
<li>Unabhängige und synchronisierte Nutzung von Datum- und Zeitauswahl-Plugins.</li>
</ul>
</li>
<li><strong>Datenverwaltung:</strong>
<ul>
<li>Gespeicherte Informationen werden an die Admin- und Kunden-E-Mails der Kaufbestätigung weitergeleitet.</li>
<li>Anzeige der Daten in der Admin-Bestellübersicht für eine einfache Verwaltung.</li>
</ul>
</li>
<li><strong>Validierung und Filteroptionen:</strong>
<ul>
<li>Gültigkeitsprüfung der eingegebenen Daten für eine zuverlässige Erfassung.</li>
<li>Datumsauswahl kann nach Wochentagen und individuellen Terminen gefiltert werden.</li>
</ul>
</li>
<li><strong>Maximale Uhrzeit und Verzögerungsoptionen:</strong>
<ul>
<li>Einführung einer &#8220;maximalen Uhrzeit&#8221; Funktion für Lieferungen am Bestelltag.</li>
<li>Möglichkeit der Lieferverzögerung in Tagen oder Minuten für individuelle Anforderungen.</li>
</ul>
</li>
<li><strong>Benutzerfreundliche Auswahlmöglichkeiten:</strong>
<ul>
<li>Datumsauswahl durch HTML-Kalender und Uhrzeitauswahl durch Dropdown-Menüs.</li>
<li>Anpassbare Auswahl für einen effizienten Bestellprozess.</li>
</ul>
</li>
<li><strong>Vielseitige Anwendungsmöglichkeiten:</strong>
<ul>
<li>Optimal für Restaurants, Bäckereien, Speditionen und andere liefernde Shops.</li>
<li>Ebenso geeignet für Dienstleistungsunternehmen, die Terminvereinbarungen anbieten.</li>
</ul>
</li>
<li><strong>Individuelle Konfiguration:</strong>
<ul>
<li>Freie Wahl zwischen Datum- und/oder Zeitauswahl je nach den Bedürfnissen des Geschäfts.</li>
<li>Flexible Anpassung an die spezifischen Anforderungen des Online-Shops.</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<p><strong>Mehr Informationen und Kaufmöglichkeit:</strong></p>
<p><strong><a href="https://shop.homepage-nach-preis.de/produkt/hnp-lieferdatum-lieferzeit-woocommerce-plugin/" target="_blank" rel="noopener nofollow">https://shop.homepage-nach-preis.de/produkt/hnp-lieferdatum-lieferzeit-woocommerce-plugin/</a></strong></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/01/16/neues-hnp-lieferdatum-lieferzeit-woocommerce-plugin/">Neues HNP Lieferdatum &#038; Lieferzeit WooCommerce Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/01/16/neues-hnp-lieferdatum-lieferzeit-woocommerce-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Simple Progress Bar WordPress Plugin</title>
		<link>https://homepage-nach-preis.de/2023/07/30/simple-progress-bar-wordpress-plugin/</link>
					<comments>https://homepage-nach-preis.de/2023/07/30/simple-progress-bar-wordpress-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Sun, 30 Jul 2023 09:46:40 +0000</pubDate>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Anzeige]]></category>
		<category><![CDATA[Bar]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[Fortschritt]]></category>
		<category><![CDATA[Ladebalken]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Progress]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=7951</guid>

					<description><![CDATA[<p>Unser neues WordPress-Plugin bietet eine kostenlose Lösung für einen simplen Ladefortschritt-Balken (Progress Bar) im Frontend, ähnlich wie der auf YouTube. Es ermöglicht eine einfache Integration und bietet verschiedene Funktionen. Durch eine GPLV3 Lizenz ist das Plugin frei nutzbar, ob privat oder gewerblich. Funktionsübersicht: &#8211; Backend-Optionen zum Ein- und Ausschalten der Funktion, Farbauswahl und Transparenz des Lade-Balkens &#8211; Verwendet reines JavaScript, daher ist kein JQuery erforderlich &#8211; Kompatibel mit PHP 7 und 8 sowie möglicherweise auch mit PHP 5.6 &#8211; Unterstützt Multisprachigkeit durch Translation-Strings und POT-Datei (DE &#38; ENG bereits vorhanden) &#8211; Ermöglicht eine benutzerdefinierte Gestaltung durch ein eigenes Style-Feld in den Optionen (falls gewünscht) &#8211; Das Plugin ist bereits mit Fallback-Werten voreingestellt, daher ist die Installation und Aktivierung einfach. Die Funktion kann in den Optionen aktiviert werden und schon ist alles einsatzbereit. &#8211; Kompatibel mit Cache-Plugins, da die DOM-Änderung nach Abschluss des Ladevorgangs erfolgt Kostenloser Download-Link: [sdm_download id=&#8221;7938&#8243; fancy=&#8221;0&#8243;] &#160;</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/07/30/simple-progress-bar-wordpress-plugin/">Simple Progress Bar WordPress Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex items-start overflow-x-auto whitespace-pre-wrap break-words flex-col gap-4">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>Unser neues WordPress-Plugin bietet eine kostenlose Lösung für einen simplen Ladefortschritt-Balken (Progress Bar) im Frontend, ähnlich wie der auf YouTube. Es ermöglicht eine einfache Integration und bietet verschiedene Funktionen. Durch eine GPLV3 Lizenz ist das Plugin frei nutzbar, ob privat oder gewerblich.</p>
<p><strong>Funktionsübersicht:</strong></p>
<p>&#8211; Backend-Optionen zum Ein- und Ausschalten der Funktion, Farbauswahl und Transparenz des Lade-Balkens<br />
&#8211; Verwendet reines JavaScript, daher ist kein JQuery erforderlich<br />
&#8211; Kompatibel mit PHP 7 und 8 sowie möglicherweise auch mit PHP 5.6<br />
&#8211; Unterstützt Multisprachigkeit durch Translation-Strings und POT-Datei (DE &amp; ENG bereits vorhanden)<br />
&#8211; Ermöglicht eine benutzerdefinierte Gestaltung durch ein eigenes Style-Feld in den Optionen (falls gewünscht)<br />
&#8211; Das Plugin ist bereits mit Fallback-Werten voreingestellt, daher ist die Installation und Aktivierung einfach. Die Funktion kann in den Optionen aktiviert werden und schon ist alles einsatzbereit.<br />
&#8211; Kompatibel mit Cache-Plugins, da die DOM-Änderung nach Abschluss des Ladevorgangs erfolgt</p>
</div>
</div>
</div>
<p><strong>Kostenloser Download-Link:</strong><br />
[sdm_download id=&#8221;7938&#8243; fancy=&#8221;0&#8243;]</p>
<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" class="alignnone  wp-image-7953" src="https://homepage-nach-preis.de/wp-content/uploads/2023/07/fortschrittsbalken-Plugin-WordPress-300x190.jpg" alt="" width="512" height="324" srcset="https://homepage-nach-preis.de/wp-content/uploads/2023/07/fortschrittsbalken-Plugin-WordPress-300x190.jpg 300w, https://homepage-nach-preis.de/wp-content/uploads/2023/07/fortschrittsbalken-Plugin-WordPress.jpg 720w" sizes="(max-width: 512px) 100vw, 512px" /></p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/07/30/simple-progress-bar-wordpress-plugin/">Simple Progress Bar WordPress Plugin</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2023/07/30/simple-progress-bar-wordpress-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress Plugin multisprachig erstellen</title>
		<link>https://homepage-nach-preis.de/2023/07/17/wordpress-plugin-multisprachig-erstellen/</link>
					<comments>https://homepage-nach-preis.de/2023/07/17/wordpress-plugin-multisprachig-erstellen/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Sun, 16 Jul 2023 23:08:51 +0000</pubDate>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[multisprachig]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[translation strings]]></category>
		<category><![CDATA[webseite]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=7912</guid>

					<description><![CDATA[<p>Um ein WordPress Plugin multisprachig zu machen und Translationstrings (esc_html__) sowie eine Textdomain zu verwenden, kannst du den folgenden Anleitungsschritten folgen: 1. Definiere die Textdomain für dein Plugin. Füge den folgenden Code am Anfang deiner Plugin-Haupt-Datei hinzu: /** * Plugin Name: Mein Plugin * Text Domain: mein-plugin-textdomain */ 2. Erstelle eine Übersetzungsdatei (`.pot`) für dein Plugin. Du kannst ein Übersetzungsprogramm wie Poedit oder Loco-Translate verwenden. 3. Füge Translationstrings (`esc_html__`) in deinen Plugin-Code ein. Hier ist ein Beispiel: echo esc_html__(&#x27;Willkommen auf meiner Website&#x27;, &#x27;mein-plugin-textdomain&#x27;); Stelle sicher, dass du bei allen Strings dieselbe Textdomain (`mein-plugin-textdomain`) verwendest. 4. Erstelle Übersetzungsdateien für jede Sprache, die du unterstützen möchtest. Du kannst die .pot-Datei als Vorlage verwenden und Übersetzungen für jede Sprache hinzufügen. Speichere die Übersetzungsdateien anschließend im Ordner Languages deines Plugins. Der Ordner sollte &#8211; im besten Fall &#8211; im Hauptverzeichnis des Plugins sein. 5. Lade die Übersetzungsdateien in dein Plugin. Füge den folgenden Code in die Plugin-Datei ein: function mein_plugin_load_textdomain() { load_plugin_textdomain(&#x27;mein-plugin-textdomain&#x27;, false, dirname(plugin_basename(__FILE__)) . &#x27;/languages&#x27;); } add_action(&#x27;plugins_loaded&#x27;, &#x27;mein_plugin_load_textdomain&#x27;); Stelle sicher, dass du die korrekte Textdomain (`mein-plugin-textdomain`) und den Pfad zu deinem Language-Ordner verwendest. 6. Übersetze deine Texte in den Übersetzungsdateien für die verschiedenen Sprachen. Das war&#8217;s! Mit diesen Schritten kannst du dein WordPress....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/07/17/wordpress-plugin-multisprachig-erstellen/">WordPress Plugin multisprachig erstellen</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Um ein WordPress Plugin multisprachig zu machen und Translationstrings (esc_html__) sowie eine Textdomain zu verwenden, kannst du den folgenden Anleitungsschritten folgen:</p>
<p>1. Definiere die Textdomain für dein Plugin. Füge den folgenden Code am Anfang deiner Plugin-Haupt-Datei hinzu:</p>
<pre>
   /**
    * Plugin Name: Mein Plugin
    * Text Domain: mein-plugin-textdomain
    */
</pre>
<p>2. Erstelle eine Übersetzungsdatei (`.pot`) für dein Plugin. Du kannst ein Übersetzungsprogramm wie Poedit oder Loco-Translate verwenden.</p>
<p>3. Füge Translationstrings (`esc_html__`) in deinen Plugin-Code ein. Hier ist ein Beispiel:</p>
<pre>
   echo esc_html__(&#x27;Willkommen auf meiner Website&#x27;, &#x27;mein-plugin-textdomain&#x27;);
</pre>
<p>   Stelle sicher, dass du bei allen Strings dieselbe Textdomain (`mein-plugin-textdomain`) verwendest.</p>
<p>4. Erstelle Übersetzungsdateien für jede Sprache, die du unterstützen möchtest. Du kannst die .pot-Datei als Vorlage verwenden und Übersetzungen für jede Sprache hinzufügen. Speichere die Übersetzungsdateien anschließend im Ordner Languages deines Plugins. Der Ordner sollte &#8211; im besten Fall &#8211; im Hauptverzeichnis des Plugins sein.</p>
<p>5. Lade die Übersetzungsdateien in dein Plugin. Füge den folgenden Code in die Plugin-Datei ein:</p>
<pre>
   function mein_plugin_load_textdomain() {
       load_plugin_textdomain(&#x27;mein-plugin-textdomain&#x27;, false, dirname(plugin_basename(__FILE__)) . &#x27;/languages&#x27;);
   }
   add_action(&#x27;plugins_loaded&#x27;, &#x27;mein_plugin_load_textdomain&#x27;);
</pre>
<p>   Stelle sicher, dass du die korrekte Textdomain (`mein-plugin-textdomain`) und den Pfad zu deinem Language-Ordner verwendest.</p>
<p>6. Übersetze deine Texte in den Übersetzungsdateien für die verschiedenen Sprachen.</p>
<p>Das war&#8217;s! Mit diesen Schritten kannst du dein WordPress Plugin multisprachig machen. Stelle aber sicher, dass du die Übersetzungen für die gewünschten Sprachen in den entsprechenden Übersetzungsdateien (.MO / .PO / .POT) bereitstellst.</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/07/17/wordpress-plugin-multisprachig-erstellen/">WordPress Plugin multisprachig erstellen</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2023/07/17/wordpress-plugin-multisprachig-erstellen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cookie &#038; SQL basiertes Authentifizierungssystem</title>
		<link>https://homepage-nach-preis.de/2023/06/26/hnp-cookie-sql-basiertes-authentifizierungssystem/</link>
					<comments>https://homepage-nach-preis.de/2023/06/26/hnp-cookie-sql-basiertes-authentifizierungssystem/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Sun, 25 Jun 2023 23:01:32 +0000</pubDate>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[multisprachig]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[translation strings]]></category>
		<category><![CDATA[webseite]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=7846</guid>

					<description><![CDATA[<p>Unser Ansatz basiert auf einer SQL-basierten AUTH-Methode, die Cookies (Tokens) verwendet, da herkömmliche Cookies nicht server- oder domänenübergreifend funktionieren und aus Sicherheitsgründen nicht für Login- oder Session-Funktionen verwendet werden sollten. Hier ist eine Beschreibung, wie unser Ansatz funktioniert: 1. Wenn ein Benutzer auf Domain A / Server 1 einen speziellen Button betätigt, werden Cookies mit eindeutigen Token-Werten erstellt. Diese Token-Werte werden im Browser des Benutzers gespeichert und zusätzlich in einer SQL-Datenbank gespeichert. 2. Anschließend werden diese Token-Werte an Domain B / Server 2 weitergegeben. Dort werden sie erneut überprüft und verifiziert, indem die Datenbank nach dem Token-Wert durchsucht wird. 3. Wenn der Token und das Cookie korrekt sind und in der Datenbank übereinstimmen, wird auch auf Domain B ein identisches Cookie erstellt. Dadurch erfolgt eine Synchronisierung der Cookies zwischen den Domänen. Dieses synchronisierte Cookie kann dann für Sessions, den Login-Prozess oder andere cookiebasierte Funktionen auf Domain B verwendet werden. Durch diese Methode ermöglichen wir eine sichere und effektive Nutzung von Cookies für Login- und Session-Funktionen, ohne die üblichen Einschränkungen von herkömmlichen Cookies zu haben. Funktioniert auf allen System / Webseiten. Da keine systemspezifischen Tags / Hooks genutzt werden. Und wäre schnell in ein WordPress Plugin umgewandelt. Das Auth-System funktioniert aktuell....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/06/26/hnp-cookie-sql-basiertes-authentifizierungssystem/">Cookie &#038; SQL basiertes Authentifizierungssystem</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Unser Ansatz basiert auf einer SQL-basierten AUTH-Methode, die Cookies (Tokens) verwendet, da herkömmliche Cookies nicht server- oder domänenübergreifend funktionieren und aus Sicherheitsgründen nicht für Login- oder Session-Funktionen verwendet werden sollten. Hier ist eine Beschreibung, wie unser Ansatz funktioniert:</p>
<p>1. Wenn ein Benutzer auf Domain A / Server 1 einen speziellen Button betätigt, werden Cookies mit eindeutigen Token-Werten erstellt. Diese Token-Werte werden im Browser des Benutzers gespeichert und zusätzlich in einer SQL-Datenbank gespeichert.</p>
<p>2. Anschließend werden diese Token-Werte an Domain B / Server 2 weitergegeben. Dort werden sie erneut überprüft und verifiziert, indem die Datenbank nach dem Token-Wert durchsucht wird.</p>
<p>3. Wenn der Token und das Cookie korrekt sind und in der Datenbank übereinstimmen, wird auch auf Domain B ein identisches Cookie erstellt. Dadurch erfolgt eine Synchronisierung der Cookies zwischen den Domänen. Dieses synchronisierte Cookie kann dann für Sessions, den Login-Prozess oder andere cookiebasierte Funktionen auf Domain B verwendet werden.</p>
<p>Durch diese Methode ermöglichen wir eine sichere und effektive Nutzung von Cookies für Login- und Session-Funktionen, ohne die üblichen Einschränkungen von herkömmlichen Cookies zu haben.</p>
<p><strong>Funktioniert auf allen System / Webseiten. Da keine systemspezifischen Tags / Hooks genutzt werden. Und wäre schnell in ein WordPress Plugin umgewandelt. </strong><br />
Das Auth-System funktioniert aktuell durch die Nutzung von 2 Domains / Servern, es wäre aber möglich noch einen weiteren Server / eine weitere Domain zwischenzuschalten (AUTH-SERVER/AUTH-DOMAIN). Damit die AUTH-Funktionen ausgelagert wird, dann wäre eine mehrfache Verschlüsselungen möglich, welche eine extrem hohe Sicherheit bieten würden. </p>
<p><img width="528" height="192" decoding="async" src="https://homepage-nach-preis.de/wp-content/uploads/2023/06/Cookie-AUTH-System-1.jpg" /><br />
<img width="444" height="231" decoding="async" src="https://homepage-nach-preis.de/wp-content/uploads/2023/06/cookie-serveruebergreifend.jpg" /><br />
<img width="966" height="662" decoding="async" src="https://homepage-nach-preis.de/wp-content/uploads/2023/06/logic-A-1.jpg" /></p>
<h4>Domain / Server 1 </h4>
<pre>
&#x3C;!DOCTYPE html&#x3E;
&#x3C;!--
Name: HNP Cookie &#x26; Token Auth-System
Description: Erstellt ein Cookie-basiertes SQL Authentifizierung-System. Domain- und Server&#xFC;bergreifend.
Author: Homepage-nach-Preis
Version: 1.0
Author URI: https://homepage-nach-preis.de/
License: Creative Commons Non-Commercial - CC-NC 4.0
--&#x3E;
&#x3C;html&#x3E;
&#x3C;head&#x3E;
    &#x3C;title&#x3E;HNP Auth-System&#x3C;/title&#x3E;
&#x3C;/head&#x3E;
&#x3C;body&#x3E;
    &#x3C;h2&#x3E;HNP Cookie &#x26; Token Auth-System&#x3C;/h2&#x3E;
&#x3C;?php

// Funktion zum Generieren eines Tokens
function hnp_generate_token() {
    $token = bin2hex(random_bytes(32)); // Generiert einen zuf&#xE4;lligen Token-Wert

    // Zeige Error Logs
    ini_set(&#x27;display_errors&#x27;, 1);
    ini_set(&#x27;display_startup_errors&#x27;, 1);
    error_reporting(E_ALL);

    // &#xDC;berpr&#xFC;fen, ob das Cookie bereits gesetzt ist
    if (isset($_COOKIE[&#x27;hnp_auth_token&#x27;])) {
        $cookieToken = $_COOKIE[&#x27;hnp_auth_token&#x27;];
        echo &#x22;Das Cookie &#x27;hnp_auth_token&#x27; ist bereits gesetzt.&#x22;;
        hnp_redirectWithToken($cookieToken); // Weiterleitung zur Ziel-Domain mit dem vorhandenen Token-Parameter
        return; // Abbruch der Funktion, wenn das Cookie bereits gesetzt ist
    }

    // Speichern des Tokens in der MySQL-Datenbank auf der Auth-Domain
    $dbHost = &#x27;XXXXXXXXXXXXXX&#x27;; // Hostname der MySQL-Datenbank auf der AUTH-Domain
    $dbUser = &#x27;XXXXXXXXXXXXXX&#x27;; // Benutzername der MySQL-Datenbank
    $dbPass = &#x27;XXXXXXXXXXXXXX&#x27;; // Passwort der MySQL-Datenbank
    $dbName = &#x27;XXXXXXXXXXXXXX&#x27;; // Name der MySQL-Datenbank

    // Verbindung zur MySQL-Datenbank herstellen
    $conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

    // &#xDC;berpr&#xFC;ft die Verbindung auf Fehler
    if ($conn-&#x3E;connect_error) {
        die(&#x27;Verbindungsfehler zur MySQL-Datenbank: &#x27; . $conn-&#x3E;connect_error); // Beendet das Skript und zeigt die Fehlermeldung an
    }

    // Tabelle erstellen, falls sie nicht existiert
    hnp_create_hnp_tokens_table($conn);

    // SQL-Befehl zum Einf&#xFC;gen des Tokens in die Datenbank
    $sql = &#x22;INSERT INTO hnp_tokens (token) VALUES (&#x27;$token&#x27;)&#x22;;

    // F&#xFC;hrt den SQL-Befehl aus
    if ($conn-&#x3E;query($sql) === TRUE) {
        // Cookie mit dem Token erstellen
        setcookie(&#x27;hnp_auth_token&#x27;, $token, [
            &#x27;expires&#x27; =&#x3E; time() + 3600,
            &#x27;path&#x27; =&#x3E; &#x27;/&#x27;,
            &#x27;domain&#x27; =&#x3E; &#x27;DOMAIN-A.COM&#x27;,
            &#x27;secure&#x27; =&#x3E; true,
            &#x27;httponly&#x27; =&#x3E; true,
            &#x27;samesite&#x27; =&#x3E; &#x27;None&#x27; // Hier wird das SameSite-Attribut auf &#x22;None&#x22; gesetzt
        ]);
        echo &#x27;Cookie mit dem Token wurde erstellt und in die Datenbank gespeichert.&#x27;;
        hnp_redirectWithToken($token); // Weiterleitung zur Ziel-Domain mit dem neuen Token-Parameter
        exit;
    } else {
        die(&#x27;Fehler beim Speichern des Tokens in der Datenbank: &#x27; . $conn-&#x3E;error); // Beendet das Skript und zeigt die Fehlermeldung an
    }

    // Schlie&#xDF;e die Verbindung zur MySQL-Datenbank
    $conn-&#x3E;close();
}

// Funktion zum Erstellen der Tabelle &#x27;hnp_tokens&#x27;
function hnp_create_hnp_tokens_table($conn) {
    $tableName = &#x27;hnp_tokens&#x27;;

    // SQL-Befehl zum Erstellen der Tabelle, falls sie nicht existiert
    $sql = &#x22;CREATE TABLE IF NOT EXISTS $tableName (
                id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                token VARCHAR(64) NOT NULL
            )&#x22;;

    // F&#xFC;hrt den SQL-Befehl aus
    if ($conn-&#x3E;query($sql) === TRUE) {
        echo &#x27;Die Tabelle &#x27; . $tableName . &#x27; wurde erfolgreich erstellt oder existiert bereits.&#x27;;
    } else {
        die(&#x27;Fehler beim Erstellen der Tabelle &#x27; . $tableName . &#x27;: &#x27; . $conn-&#x3E;error); // Beendet das Skript und zeigt die Fehlermeldung an
    }
}

// Funktion zur Weiterleitung zur Ziel-Domain mit dem Token-Parameter
function hnp_redirectWithToken($token)
{
    header(&#x27;Location: https://DOMAIN-B.COM/index.php?token=&#x27; . urlencode($token));
    exit;
}

// Funktion zur Weiterleitung zur Ziel-Domain mit einem ung&#xFC;ltigen Token
function hnp_redirectWithInvalidToken()
{
    // Generiere einen ung&#xFC;ltigen Token-Wert
    $invalidToken = bin2hex(random_bytes(32));

    // Leite zur Ziel-Domain mit dem ung&#xFC;ltigen Token weiter
    header(&#x27;Location: https://DOMAIN-B.COM/index.php?token=&#x27; . urlencode($invalidToken));
    exit;
}

// Funktion zum L&#xF6;schen des Cookies
function hnp_deleteCookie() {
    setcookie(&#x27;hnp_auth_token&#x27;, &#x27;&#x27;, time() - 3600, &#x27;/&#x27;, &#x27;DOMAIN-A.COM&#x27;, true, true); // L&#xF6;scht das Cookie
    echo &#x27;Cookie wurde gel&#xF6;scht.&#x27;;
    sleep(0); // Wartezeit von 0 Sekunden
    hnp_redirectWithDelay(0); // Weiterleitung zur selben Seite
}

// Funktion zur Weiterleitung zur selben Seite nach einer Verz&#xF6;gerung
function hnp_redirectWithDelay($delay) {
    $redirectUrl = $_SERVER[&#x27;REQUEST_URI&#x27;];
    header(&#x22;Refresh: $delay; url=$redirectUrl&#x22;);
    exit;
}

// &#xDC;berpr&#xFC;fen, ob der Button zum Generieren des Tokens geklickt wurde
if (isset($_POST[&#x27;generate_token&#x27;])) {
    hnp_generate_token();
}

// &#xDC;berpr&#xFC;fen, ob der Button zum L&#xF6;schen des Cookies geklickt wurde
if (isset($_POST[&#x27;delete_cookie&#x27;])) {
    hnp_deleteCookie();
}

// &#xDC;berpr&#xFC;fen, ob der Button zur Weiterleitung mit ung&#xFC;ltigem Token geklickt wurde
if (isset($_POST[&#x27;redirect_with_invalid_token&#x27;])) {
    hnp_redirectWithInvalidToken();
}
?&#x3E;

&#x3C;?php
if (isset($_COOKIE[&#x27;hnp_auth_token&#x27;])) {
    echo &#x22;Das Cookie &#x27;hnp_auth_token&#x27; wurde gesetzt oder ist bereits vorhanden.&#x22;;
} else {
    echo &#x22;Das Cookie &#x27;hnp_auth_token&#x27; wurde nicht gefunden.&#x22;;
}
?&#x3E;

&#x3C;!-- Formular mit Button zum Generieren des Tokens --&#x3E;
&#x3C;?php if (!isset($_COOKIE[&#x27;hnp_auth_token&#x27;])) { ?&#x3E;
&#x3C;h4&#x3E; Dieser Button wird nur angezeigt, falls das Cookie/ der Token noch nicht vorhanden ist: &#x3C;/h4&#x3E;
&#x3C;form method=&#x22;post&#x22;&#x3E;
    &#x3C;input type=&#x22;hidden&#x22; name=&#x22;generate_token&#x22; value=&#x22;1&#x22; /&#x3E;
    &#x3C;input type=&#x22;submit&#x22; value=&#x22;Token generieren&#x22; /&#x3E;
&#x3C;/form&#x3E;
&#x3C;?php } else { ?&#x3E;
&#x3C;h4&#x3E; Diese Button werden nur angezeigt, falls das Cookie / der Token bereits vorhanden ist: &#x3C;/h4&#x3E;
&#x3C;form method=&#x22;post&#x22;&#x3E;
    &#x3C;input type=&#x22;hidden&#x22; name=&#x22;delete_cookie&#x22; value=&#x22;1&#x22; /&#x3E;
    &#x3C;input type=&#x22;submit&#x22; value=&#x22;Cookie l&#xF6;schen&#x22; /&#x3E;
&#x3C;/form&#x3E;
&#x3C;/br&#x3E;&#x3C;form method=&#x22;post&#x22;&#x3E;
    &#x3C;input type=&#x22;hidden&#x22; name=&#x22;redirect_with_token&#x22; value=&#x22;1&#x22; /&#x3E;
    &#x3C;input type=&#x22;submit&#x22; value=&#x22;Weiter&#x22; /&#x3E;
&#x3C;/form&#x3E;
&#x3C;?php }

// &#xDC;berpr&#xFC;fen, ob der Button zur Weiterleitung mit Token geklickt wurde
if (isset($_POST[&#x27;redirect_with_token&#x27;])) {
    hnp_redirectWithToken($_COOKIE[&#x27;hnp_auth_token&#x27;]);
}
?&#x3E;
&#x3C;h4&#x3E; Ung&#xFC;ltiger Token: &#x3C;/h4&#x3E;
&#x3C;p&#x3E;Hierbei wird versucht eine Anfrage zu manipulieren, indem ein Token simuliert wird und eine korrekte Anfrage gestartet wird. Das System erkennt aber, dass der Token-Wert ung&#xFC;ltig ist, weil er nicht in der Datenbank ist&#x3C;/p&#x3E;
&#x3C;form method=&#x22;post&#x22;&#x3E;
    &#x3C;input type=&#x22;hidden&#x22; name=&#x22;redirect_with_invalid_token&#x22; value=&#x22;1&#x22; /&#x3E;
    &#x3C;input type=&#x22;submit&#x22; value=&#x22;Weiter mit ung&#xFC;ltigem Token&#x22; /&#x3E;
&#x3C;/form&#x3E;
&#x3C;/body&#x3E;
&#x3C;/html&#x3E;
</pre>
<h4>Domain / Server 2 </h4>
<p>index.php</p>
<pre>
&#x3C;!DOCTYPE html&#x3E;
&#x3C;!--
Name: HNP Cookie &#x26; Token Auth-System
Description: Erstellt ein Cookie-basiertes SQL Authentifizierung-System. Domain- und Server&#xFC;bergreifend.
Author: Homepage-nach-Preis
Version: 1.0
Author URI: https://homepage-nach-preis.de/
License: Creative Commons Non-Commercial - CC-NC 4.0
--&#x3E;
&#x3C;html&#x3E;
&#x3C;head&#x3E;
    &#x3C;title&#x3E;HNP Auth-System&#x3C;/title&#x3E;
&#x3C;/head&#x3E;
&#x3C;body&#x3E;
    &#x3C;h2&#x3E;HNP Cookie &#x26; Token Auth-System&#x3C;/h2&#x3E;
&#x9;
&#x3C;?php

function checkTokenAndSetCookie() {
    if (isset($_GET[&#x27;token&#x27;])) {
        $token = $_GET[&#x27;token&#x27;];

        // Zeige Error Logs
        ini_set(&#x27;display_errors&#x27;, 1);
        ini_set(&#x27;display_startup_errors&#x27;, 1);
        error_reporting(E_ALL);

        // &#xDC;berpr&#xFC;ft den Token in der Datenbank
        $dbHost = &#x27;XXXXXXXXXXXXXX&#x27;; // Hostname der MySQL-Datenbank auf der AUTH-Domain
        $dbUser = &#x27;XXXXXXXXXXXXXX&#x27;; // Benutzername der MySQL-Datenbank
        $dbPass = &#x27;XXXXXXXXXXXXXX&#x27;; // Passwort der MySQL-Datenbank
        $dbName = &#x27;XXXXXXXXXXXXXX&#x27;; // Name der MySQL-Datenbank

        // Verbindung zur MySQL-Datenbank herstellen
        $conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName);

        // &#xDC;berpr&#xFC;ft die Verbindung auf Fehler
        if ($conn-&#x3E;connect_error) {
            die(&#x27;Verbindungsfehler zur MySQL-Datenbank: &#x27; . $conn-&#x3E;connect_error);
        }

        // &#xDC;berpr&#xFC;ft den Token in der Datenbanktabelle
        $tableName = &#x27;hnp_tokens&#x27;; // Name der Tabelle, in der die Tokens gespeichert sind
        $sql = &#x22;SELECT * FROM $tableName WHERE token = &#x27;$token&#x27;&#x22;;

        // F&#xFC;hrt die Datenbankabfrage aus
        $result = $conn-&#x3E;query($sql);

        // &#xDC;berpr&#xFC;ft das Ergebnis der Datenbankabfrage
        if ($result &#x26;&#x26; $result-&#x3E;num_rows &#x3E; 0) {
            // Token ist g&#xFC;ltig, erstellt das Cookie
            setcookie(&#x27;hnp_auth_token&#x27;, $token, [
                &#x27;expires&#x27; =&#x3E; time() + 3600,
                &#x27;path&#x27; =&#x3E; &#x27;/&#x27;,
                &#x27;domain&#x27; =&#x3E; &#x27;DOMAIN-B.COM&#x27;,
                &#x27;secure&#x27; =&#x3E; true,
                &#x27;httponly&#x27; =&#x3E; false,
                &#x27;samesite&#x27; =&#x3E; &#x27;None&#x27; // Hier wird das SameSite-Attribut auf &#x22;None&#x22; gesetzt
            ]);

            echo &#x27;Authentifizierung erfolgreich. Bitte warten Sie...&#x27;;

            // JavaScript-Weiterleitung nach 3 Sekunden
            echo &#x27;&#x3C;script&#x3E;
                    setTimeout(function() {
                        window.location.href = &#x22;index.html&#x22;;
                    }, 3000);
                  &#x3C;/script&#x3E;&#x27;;

            exit;
        } else {
            echo &#x27;Ung&#xFC;ltiger Token oder Token nicht gefunden. Authentifizierung fehlgeschlagen.&#x27;;

            // Button &#x22;Trotzdem weiter&#x22;
            echo &#x27;&#x3C;button onclick=&#x22;window.location.href = \&#x27;index.html\&#x27;;&#x22;&#x3E;Trotzdem weiter&#x3C;/button&#x3E;(Nicht vegessen, den Logout zuvor zu bet&#xE4;tigen, falls bereits eine erfolgreiche Authentifizierung stattfand)&#x27;;

            // Button &#x22;Zur&#xFC;ck&#x22;
            echo &#x27;&#x3C;button onclick=&#x22;window.history.back();&#x22;&#x3E;Zur&#xFC;ck&#x3C;/button&#x3E;&#x27;;
        }

        // Schlie&#xDF;t die Verbindung zur MySQL-Datenbank
        $conn-&#x3E;close();
    } else {
        echo &#x27;Token-Parameter fehlt.&#x27;;
    }
}

// Funktion aufrufen
checkTokenAndSetCookie();
?&#x3E;
&#x3C;/body&#x3E;
&#x3C;/html&#x3E;
</pre>
<p>index.html</p>
<pre>
&#x3C;!DOCTYPE html&#x3E;
&#x3C;!--
Name: HNP Cookie &#x26; Token Auth-System
Description: Erstellt ein Cookie-basiertes SQL Authentifizierung-System. Domain- und Server&#xFC;bergreifend.
Author: Homepage-nach-Preis
Version: 1.0
Author URI: https://homepage-nach-preis.de/
License: Creative Commons Non-Commercial - CC-NC 4.0
--&#x3E;
&#x3C;html&#x3E;
&#x3C;head&#x3E;
    &#x3C;title&#x3E;HNP Auth-System&#x3C;/title&#x3E;
&#x3C;/head&#x3E;
&#x3C;body&#x3E;
    &#x3C;h2&#x3E;HNP Cookie &#x26; Token Auth-System&#x3C;/h2&#x3E;

    &#x3C;script&#x3E;
        // Token aus dem Cookie lesen
        var token = document.cookie.replace(/(?:(?:^|.*;\s*)hnp_auth_token\s*=\s*([^;]*).*$)|^.*$/, &#x22;$1&#x22;);

        // &#xDC;berpr&#xFC;ft den Token in der Datenbank
        var xhr = new XMLHttpRequest();
        xhr.open(&#x27;GET&#x27;, &#x27;https://DOMAIN-B.COM/index.php?token=&#x27; + encodeURIComponent(token), true);
        xhr.onload = function() {
            if (xhr.status === 200 &#x26;&#x26; xhr.responseText.includes(&#x27;Authentifizierung erfolgreich&#x27;)) {
                // &#xDC;berpr&#xFC;fung erfolgreich, zeige &#x22;Erfolgreich eingeloggt&#x22; und Logout-Button
                var successMessage = document.createElement(&#x27;p&#x27;);
                successMessage.textContent = &#x27;Erfolgreich eingeloggt&#x27;;
                document.body.appendChild(successMessage);

                var logoutButton = document.createElement(&#x27;button&#x27;);
                logoutButton.textContent = &#x27;Logout&#x27;;
                logoutButton.onclick = logout;
                document.body.appendChild(logoutButton);

                document.body.appendChild(document.createElement(&#x27;br&#x27;));
                document.body.appendChild(document.createElement(&#x27;br&#x27;));

                var authDomainButton = document.createElement(&#x27;button&#x27;);
                authDomainButton.textContent = &#x27;Zur Auth-Domain&#x27;;
                authDomainButton.onclick = redirectToAuth;
                document.body.appendChild(authDomainButton);
            } else {
                // &#xDC;berpr&#xFC;fung fehlgeschlagen, zeige &#x22;Login fehlgeschlagen&#x22;
                var errorMessage = document.createElement(&#x27;p&#x27;);
                errorMessage.textContent = &#x27;Login fehlgeschlagen oder ausgeloggt.&#x27;;
                document.body.appendChild(errorMessage);

                document.body.appendChild(document.createElement(&#x27;br&#x27;));
                document.body.appendChild(document.createElement(&#x27;br&#x27;));

                var authDomainButton = document.createElement(&#x27;button&#x27;);
                authDomainButton.textContent = &#x27;Zur Auth-Domain&#x27;;
                authDomainButton.onclick = redirectToAuth;
                document.body.appendChild(authDomainButton);
            }
        };
        xhr.send();

        function logout() {
            // L&#xF6;schen des hnp_auth_token Cookies
            document.cookie = &#x27;hnp_auth_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=DOMAIN-B.COM; secure&#x27;;

            // Weiterleitung zur Startseite oder einer anderen Seite nach dem Logout
            window.location.href = &#x22;index.html&#x22;;
        }

        function redirectToAuth() {
            // Weiterleitung zur Auth-Domain
            window.location.href = &#x22;https://DOMAIN-A.COM/&#x22;;
        }
    &#x3C;/script&#x3E;
&#x3C;/body&#x3E;
&#x3C;/html&#x3E;

</pre>
<p><strong>Kostenloser Download:</strong><br />
[sdm_download id=&#8221;7847&#8243; fancy=&#8221;0&#8243;]</p>
<p>Es müssen lediglich die Datenbank-Verbindungsdaten und die Platzhalter für Domain-A und Domain-B ausgetauscht werden. Anschließend ist das AUTH-System bereits voll nutzbar.<br />
<strong>Zu beachten ist, weitere Sicherheitsfunktionen sollten hinzugefügt werden, wie zum Beispiel eine Verschlüsselung der Cookie/Token Daten. </strong></p>
<h4>Optional: Ansätze für Erweiterungsmöglichkeiten</h4>
<p><strong>Datenbank Daten Dauer:</strong><br />
Aktuell ist der Token / das Cookie eine Stunde im Browser des Besuchers gültig. Also eine Session von einer Stunde. In der Datenbank bleiben die Daten aber dauerhaft, damit diese aber auch nach einer Stunde gelöscht werden: </p>
<pre>
// Generiere das Ablaufdatum (1 Stunde ab dem aktuellen Zeitpunkt)
$expirationDate = date(&#x27;Y-m-d H:i:s&#x27;, strtotime(&#x27;+1 hour&#x27;));

// SQL-Befehl zum Einf&#xFC;gen des Tokens mit dem Ablaufdatum in die Datenbank
$sql = &#x22;INSERT INTO hnp_tokens (token, expiration_date) VALUES (&#x27;$token&#x27;, &#x27;$expirationDate&#x27;)&#x22;;
</pre>
<p><strong>Verschlüsselung / Entschlüsselung der Token-Daten:</strong></p>
<pre>

// Funktion zum Verschl&#xFC;sseln eines Tokens
function encryptToken($token, $encryptionKey) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(&#x27;AES-256-CBC&#x27;)); // Initialisierungsvektor generieren
    $encryptedToken = openssl_encrypt($token, &#x27;AES-256-CBC&#x27;, $encryptionKey, 0, $iv); // Token verschl&#xFC;sseln
    return base64_encode($iv . $encryptedToken); // Verschl&#xFC;sselten Token codieren und zur&#xFC;ckgeben
}

// Funktion zum Entschl&#xFC;sseln eines Tokens
function decryptToken($encryptedToken, $encryptionKey) {
    $encryptedToken = base64_decode($encryptedToken); // Codierten Token decodieren
    $ivLength = openssl_cipher_iv_length(&#x27;AES-256-CBC&#x27;);
    $iv = substr($encryptedToken, 0, $ivLength); // Initialisierungsvektor extrahieren
    $encryptedToken = substr($encryptedToken, $ivLength); // Verschl&#xFC;sselten Token extrahieren
    $decryptedToken = openssl_decrypt($encryptedToken, &#x27;AES-256-CBC&#x27;, $encryptionKey, 0, $iv); // Token entschl&#xFC;sseln
    return $decryptedToken; // Entschl&#xFC;sselten Token zur&#xFC;ckgeben
}

// Beispiel zur Verwendung der Funktionen
$encryptionKey = &#x27;myEncryptionKey123&#x27;;
$token = &#x27;myToken123&#x27;;

$encryptedToken = encryptToken($token, $encryptionKey);
echo &#x27;Verschl&#xFC;sselter Token: &#x27; . $encryptedToken . &#x27;&#x3C;br&#x3E;&#x27;;

$decryptedToken = decryptToken($encryptedToken, $encryptionKey);
echo &#x27;Entschl&#xFC;sselter Token: &#x27; . $decryptedToken . &#x27;&#x3C;br&#x3E;&#x27;;
</pre>
<p><strong> $_POST anstatt $_GET nutzen</strong><br />
Der Unterschied zwischen $_POST und $_GET liegt in der Art und Weise, wie die Daten an den Server übermittelt werden.</p>
<pre>
$_POST:

    Die Daten werden über den HTTP-POST-Request an den Server gesendet.
    Die Daten sind im Body des Requests enthalten und werden nicht in der URL angezeigt.
    Geeignet für das Senden sensibler oder umfangreicher Daten, z.B. bei Formulareingaben wie Passwörtern, Texten oder hochgeladenen Dateien.
    Die Daten können im PHP-Skript über das $_POST-Array abgerufen werden.

$_GET:

    Die Daten werden über den HTTP-GET-Request an den Server gesendet.
    Die Daten werden als Teil der URL in der Adressleiste des Browsers angezeigt.
    Geeignet für das Senden von einfachen und nicht sensitiven Daten, z.B. Suchanfragen oder Parameter für Seitenaufrufe.
    Die Daten können im PHP-Skript über das $_GET-Array abgerufen werden.</pre>
<p><strong> Logik &#038; Points erweitern</strong><br />
<img width="1622" height="630" decoding="async" src="https://homepage-nach-preis.de/wp-content/uploads/2023/06/logic1.jpg" /></p>
<h4>Roadmap (kommt bald):</h4>
<p>Version 1.1</p>
<pre>
Neue Funktionen:
- OpenSSL Verschlüsselung für Token & Cookie
- Token wird auch automatisch aus der Datenbank enfternt
- CSS Styling
</pre>
<p>Version 1.2</p>
<pre>
Neue Funktionen:
- Logik erweitern auf 4 Points (also zusätzliche index.html für Entry Point)
- CSS Styling erweitern
</pre>
<p>Version 1.3</p>
<pre>
Neue Funktionen:
- Optionalen AUTH Server / AUTH Domain MID Point hinzufügen
- Weitere Verschlüsselung mit weiteren Verschlüsselungsverfahren
</pre>
<p>Version 2.0</p>
<pre>
Neue Funktionen:
- Finales Styling
- $_POST anstatt $_GET nutzen
- Weitere / zusätzliche Daten können "mitgesendet" werden (wie Usernamen, Passwörter, Alter usw)
- Zusätzliche Daten werden verschlüsselt
</pre>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/06/26/hnp-cookie-sql-basiertes-authentifizierungssystem/">Cookie &#038; SQL basiertes Authentifizierungssystem</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2023/06/26/hnp-cookie-sql-basiertes-authentifizierungssystem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
