Support » Allgemeine Fragen » Backslashes bei POST-Übergaben

  • Hallo,

    ich habe mir ein kleines Plugin programmiert. Sobald ich da nun das Formular ausfülle und etwas in Anführungszeichen setze, wird davor immer ein Backslash gesetzt. Dies passiert auch in der Datenbank letztendlich und bei Ausgaben sieht der Text dann so aus: \“Test\“ anstatt „Test“

    Wieso ist das so?
    Magic_quotes ist deaktiviert und bei PHP 7.4.9 auch nicht mehr vorhanden. Trotzdem habe ich bei einer nackten Übergabe die Backslashes (also wenn ich einfach echo $_POST['wert'] mache. Ist das gewollt und wenn ja, wie behandle ich das korrekt, so dass die Ausgabe am Ende wieder richtig ohne Backslashes ist?

    Ich muss ja einmal darauf achten, dass der eingegebene Text bei fehlenden Angaben das Formular nicht zerschießt (XSS), also habe ich die Funktion sanitize_text_field() dafür genutzt. In die Datenbank kann ich aufgrund von PDO ja ohne Extra-Behandlung die Daten entgegennehmen. Bei der Ausgabe nutze ich dann esc_html() wiederum. Ist das so korrekt oder habe ich da schon einen Denkfehler drin?

    Hier mal der Code für das Speichern wo schon die ersten 3 Variablen mit Backslashes versehen werden, wenn ich mir die einfach mal ausgeben lasse vor dem Insert:

    if(isset($_POST['send']))
    {
    	$autor = sanitize_text_field($_POST['autor']);
    	$titel = sanitize_text_field($_POST['titel']);
    	$text = sanitize_textarea_field($_POST['text']);
    
    	if(empty($autor))
    	{
    		$form.= '<div class="event-error">Geben Sie bitte Ihren Namen ein.</div>';
    	}
    	elseif(empty($titel))
    	{
    		$form.= '<div class="event-error">Geben Sie bitte einen Titel ein.</div>';
    	}
    	else
    	{
    		$wpdb->insert($wpdb->prefix.'kleinanzeigen',
    			array
    			(
    				'titel' => $_POST['titel'],
    				'text' => $_POST['text'],
    				'erstellt' => current_time('mysql'),
    				'bearbeitet' => current_time('mysql'),
    				'autor' => $_POST['autor']
    			),
    			array('%s', '%s', '%s', '%s', '%s')
    		);
    	}
    }

    Vielleicht hat jemand einen Tipp für mich, was ich da falsch mache.

    DANKE!

Ansicht von 1 Antwort (von insgesamt 1)
Ansicht von 1 Antwort (von insgesamt 1)
  • Das Thema „Backslashes bei POST-Übergaben“ ist für neue Antworten geschlossen.