Codeigniter supprime les signes «+» plus de mes entrées de formulaire (zones de texte). J'ai besoin d'eux pour rester

StackOverflow https://stackoverflow.com/questions/9491503

Question

J'essaie de collecter des équations de mes utilisateurs, mais mon installation de codeigniter supprime tous les '+' / 'Plus des signes' / 'Signes d'addition' après la soumission du formulaire (cette-> entrée-> post ('form_value ') est déjà nettoyé avant de passer au modèle).

J'ai fait des recherches sur XSS_Cleaning, Input.php (dans les bibliothèques) et je ne trouve pas où l'installation par défaut (1.7.2) les supprime? J'ai fait des recherches sur ce moment et je ne peux pas le trouver. Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Problème résolu! J'ai remarqué que le formulaire était soumis via Ajax et en utilisant une méthode de post. Le problème était tout simplement que le navigateur traduisait "+" en "" lorsqu'il est passé via URL. La solution consistait à encoder d'abord tout le texte avant d'envoyer via:

var newvalue = encodeURIComponent(value);

CI décode et entre automatiquement dans la base de données comme "+" via:

$this->input->post($value); 

Lors de la récupération de cette valeur à partir de la base de données, aucun autre formatage (codage ou décodage) n'est nécessaire.

Merci pour toute votre aide. Cela m'a vraiment fait réfléchir à cela. Vous êtes super!

UN

Autres conseils

Il peut provenir des paramètres suivants:

  • Le filtrage global XSS est activé dans application/config/config.php:

    $config['global_xss_filtering'] = TRUE;
    
  • Le filtrage XSS est appliqué lorsque vous avez appelé $this->input->post():

    $this->input->post('some_data', TRUE); // XSS filtering ON
    $this->input->post('some_data'); // XSS filtering OFF by default
    
  • Règles de validation de la forme Allumez le filtrage XSS sur:

    $this->form_validation->set_rules('some_data', 'Some Data', 'xss_clean');
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top