web-dev-qa-db-fra.com

Comment enregistrer du HTML et du texte dans la base de données?

J'ai deux champs. Le premier est destiné au texte brut (mais avec des caractères spéciaux) et le second au contenu HTML (wp_editor est utilisé). Les deux sont nécessaires plus tard pour phpmailer .

<textarea style="width:100%;height:200px;" name="doi-altbody"><?php echo $epn_doi_altbody; ?></textarea>

wp_editor( $epn_doi_body, 'doi-body', array( 'editor_height' => '300px' ) );

1) Comment puis-je les sécuriser correctement après avoir soumis le formulaire, puis les enregistrer dans la base de données dans une table personnalisée existante? (esc_attr, sanitize_text_field ...)

2) Et quand je veux sortir le contenu de la base de données dans la version dactylographiée exacte et originale: comment puis-je le faire? (wpautop ...)

J'ai essayé quelques choses dans les derniers jours. Mais cela n'a jamais fonctionné comme j'avais besoin.

2
wassereimer
<textarea style="width:100%;height:200px;" name="doi-altbody"><?php echo $epn_doi_altbody; ?></textarea>

wp_editor( $epn_doi_body, 'doi-body', array( 'editor_height' => '300px' ) );

Pour obtenir le même résultat que celui enregistré dans la base de données, la sortie doit être modifiée.

Pour la zone de texte:

wp_specialchars_decode( $epn_doi_altbody, $quote_style = ENT_QUOTES )

Pour le wp_editor:

wpautop( $epn_doi_body );
0
wassereimer
  1. Il suffit d’utiliser l’API wpdb insert et update, il n’est ni nécessaire d’échapper ni d’assainir conformément à la doc, mais uniquement les données brutes.

Données : (tableau) Données à remplacer (en colonnes => paires de valeurs). Les colonnes $ data et les valeurs $ data doivent être "brutes" (aucune des deux ne doit être échappée SQL).

Quelque chose comme:

    $wpdb->insert(
      $wpdb->prefix . "myTable",
      array(
        "doiBody" => $_POST['doi-body']
      ),
      array( "%s" )
    );
  1. Aucune utilisation de wpautop n'est nécessaire si vous effectuez une sortie dans la zone de texte wp_editor, un esc_attr( $output ) suffirait, je crois.

J'espère que cela aide d'une certaine manière.

0
Samuel Elh