Formulaire de contact avec Codeigniter

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J'ai commencé (lundi 19 octobre 2015 à 14h55) la rédaction d'un tutoriel au doux nom de « Formulaire de contact avec Codeigniter » et j'ai dans l'objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limite pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l'adresse suivante :

Merci !

+0 -0

Cool un autre agrume qui se sert de CodeIgniter !

Juste une petite remarque en passant, tu pourrais ajouter une balise <?php devant tes morceaux de code, ça te permettrait d'avoir la coloration syntaxique.

1
$this->form_validation->set_rules("subject", "Sujet", "required|min_length[2]");  # champ "subject"

VS

1
2
<?php
$this->form_validation->set_rules("subject", "Sujet", "required|min_length[2]");  # champ "subject"

Je regarderai ça plus en détail une autre fois, j'ai pas trop le temps là :ninja:

+0 -0

Question rapide (pas eu le temps de vérifier), CodeIgniter est toujours maintenu ? Il me semblait, de mémoire, que la boîte derrière le framework avait délaissé le projet.

Si la solution n'est effectivement plus maintenue, alors un tuto dessus me semble peu intéressant. Au contraire, si elle est toujours maintenue par une communauté solide, je n'ai rien dit ! :P

+0 -0

Pourquoi tu ne charges pas le helper form pour l'utiliser dans ta vue ? Si tu mets le csrf_protection a true dans ton fichier de config le helper form_open() ajoutera automatiquement la protection csrf.

Ensuite tu pourrais ajouter quelques filtres à tes régles de validation, a commencé par trim.

Pourquoi ne pas utiliser les shorts tag dans tes vues avec php, autant profiter qu'il soit un langage de template (même si il fait mal le job) pour rendre le code moins lourd?

Je trouve

1
2
<?= form_label('Sujet', 'subject'); ?>
<?= form_input($subjet, set_value('subject')); ?>

beaucoup plus clair que

1
2
<label for="subject">Sujet</label>
<input type="text" id="subject" name="subject" value="<?php echo set_value("subject"); ?>" class="form-control" placeholder="Feedback, demande d'informations..."/>

Il te suffit de définir tes champs et leurs attributs (id, class, placeholder etc) dans un fichier config personnalisé. De cette façon ton code est beaucoup moins lourd dans la vue et si tu veux modifier une class ou un id ouquoi que ce soit tu as juste à modifier ton fichier de configuration.

D'ailleurs je trouve bizarre que CI n'ai pas évolué sur ce point. La gestion des formulaires est vraiment horrible sur ce framework, si on compare a NetteFramework par exemple ou la gestion des formulaires est un vrai bonheur.

Concernant tes régles d'ailleurs j'aurais tendance à faire comme pour les formulaires et de stocker tout ça dans un gros tableau dans un fichier config dédié à ça, ça te permet de transformer tes 30 lignes en une seul, il te suffira de charger le fichier dans le constructeur et idem pour l'update t'as pas besoin de chercher, tu sais qu'il est dans le fichier config si un jour tu veux modifier une régle.

Je dis peut-être une bêtise mais tu ne peux pas ajouter xss_clean dans tes régles de validation ? Il me semble que c'était possible à l'époque.

J'ai fait quelques retours sur ce framapad. Je te conseille de mettre les remarques que tu trouves non pertinentes ou que tu as corrigé en barré plutôt que de les supprimer, ça me permet de ne pas refaire 100 fois les mêmes.

artragis

Merci pour ces retours artragis, cependant, je bloque sur ce point :

Notons qu'il est fortement conseillé de mettre un sujet au mail et surtout de ne PAS mettre l'adresse email de l'utilisateur qui l'envoie comme expéditeur. Si le serveur de réception est sécurisé ainsi que l'expéditeur (gmail, notamment), le mail sera rejeté pour cause de spoofing. C'est donc en CC que doit être mis le mail de contact, non en FROM. Le FROM doit être l'adresse du type "noreply@mondomaine.com"

Je l’interprète ce cette façon, en modifiant

1
2
3
<?php
$this->email->from($this->input->post("email"), $this->input->post("name"));
$this->email->to("contact@monsite.com");       

par

1
2
3
4
<?php
$this->email->from("noreply@monsite.com");
$this->email->to("contact@monsite.com");
$this->email->cc($this->input->post("email"), $this->input->post("name"));
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte