8797 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai repris dernièrement un site internet et je dois remettre à jour le code.
Pour les pages comportant un formulaire, le code appelé se situe avant le code html.
Je m'explique :

le formulaire et la réception des données se situe sur la même page, le code traitant la soummission se trouve avant le doctype et est traité comme ceci :

if (isset($_POST['submit']) && $_POST['submit'] != '') {  code  }


Vient ensuite la page en elle même :
doctype <html>...  formulaire avec submit qui boucle sur la page</html>
.

Ma question est : est-ce une bonne pratique ou doit on séparer en plusieurs pages envoi/réception?
Personnellement je trouve ça efficace pour séparer le code, le rendre plus lisible .
Je peux poster une page complète si vous voulez plus d'informations, je n'arrive pas à très bien expliquer.


Merci d' avance pour vos réponses.
Salut,

oui c'est très bien comme ça et ça a l'avantage que tu peux traiter les erreurs en ne déclarant qu'une fois ton formulaire.

Par exemple :


<?php
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 1) {
  $form_errors = array();
  if (strlen($_POST['name']) <3 ) $form_errors['name'] = 'Trop court';
  if (sizeof($form_errors) == 0) {
    // On traite le formulaire.
    // Généralement, je fais tous les traitements (sauvegarde en BDD, envois de mails, ect..) puis je fais une redirection vers une page de confirmation (header('location: ./confirmation-envoi.php');)
  }
}
?>
<form action="<?=$_SERVER['PHP_SELF'];?>">
  <?php
  if (isset($form_errors) && sizeof($form_errors) != 0 ) {
	// On affiche les erreurs ici (tableau form_errors)
  }
  ?>
  <input type="text" name="name" value="<?=stripslashes($_POST['name'])?>"  />
</form>

Bien sur ce n'est qu'un exemple très incomplet Smiley cligne
Personnellement ce que j'ai l'habitude de faire quand je bosse en dehors de framework ou d'une structure MVC, c'est juste isoler le code du formulaire que j'inclus dans la page avec un include. De cette façon, ta page ne contient plus que les traitements. J'isole également les validations côté serveur dans une fonction.
Modifié par Yvan L. (27 Oct 2011 - 09:47)