28173 sujets

CSS et mise en forme, CSS3

Bonjour à toutes
Bonjour à tous

Voilà mon problème : après moult tracas j'ai réussi à mettre en route un formulaire qui fonctionne.
C'est déjà ça.

C'est quand je me suis attaqué à son look que les choses se sont gâtées :
la balise de cloture d'une DIV (bien ouverte et fermée dans la partie html) se retrouve encore après le traitement du formulaire.
Enfin, pas tout à fait car seule la balise de cloture </div> demeure et provoque un effet de débodrement de la div suivante.

La partie html "épurée" du code html du formulaire :

<div id="content"
<div id="enteteform">
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
(...)
?></div>
<div class="saut"></div>
</div>


La partie html de la page quand le formulaire est parti

<div id="content">
<h2>Comment pouvons nous vous aider ?</h2>
      <p class='alert_yes'>Merci pour votre message. Celui-ci a bien été envoyé.
Nous prendrons contact avec vous dans les meilleurs délais.</p>

<a href=javascript:history.go(-2)>Retour à la page précédente...</a>
</div>
<div class="saut"></div>
</div>


Je suppose que c'est lié à la formation de la page par le code php qui dit :

echo "<p class='alert_yes'>Merci pour votre message. Celui-ci a bien été envoyé.
Nous prendrons contact avec vous dans les meilleurs délais.</p>\n";
                echo "<a href=javascript:history.go(-2)>Retour à la page précédente...</a>\n";
        }
        

Comment dire que cette balise fermante ne doit plus exister dans cette page ?

J'ai beau la déplacer au gré de mes déconvenues : rien à faire, où que la place elle reste là.

Si vous passez par là un coup de main serait le bienvenu.
Avec mes remerciements anticipées.
Modifié par Sventovit (22 Feb 2007 - 17:17)
Quelques corrections de code de ce que tu as posté ici, et qui peuvent être la source de tes ennuis :

<div id="content"[b][#red]>[/#][/b]
  <div id="enteteform">
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
      (...)
    [b][#red]</form>[/#][/b]
  </div>
  <div class="saut"></div>
</div>
Il y avait aussi un ?> dans le vide dans ton exemple, il est retiré.

echo [b][#red]('[/#][/b]<p class=[b][#red]"[/#][/b]alert_yes[b][#red]"[/#][/b]>Merci pour votre message. Celui-ci a bien été envoyé. Nous prendrons contact avec vous dans les meilleurs délais.</p>\n[b][#red]')[/#][/b];
echo [b][#red]('[/#][/b]<a href=[b][#red]"[/#][/b]javascript:history.go(-2)[b][#red]"[/#][/b]>Retour à la page précédente...</a>\n[b][#red]')[/#][/b];

En inversant l'usage des " avec les ' pour tes chaînes de caractères PHP, tu peux du coup utiliser de manière plus aisée les " de tes attributs HTML.
Pour les parenthèses ouvrantes / fermantes, c'est comme tu veux, mais perso je préfère car cela rend le code plus clair par la suite.
Hello Christopher

la balise de cloture </form> existait bien et après quelques minutes de repos j'ai déplacé la balise de cloture de la div au bon endroit.
Et suivi tes conseils pour les " en lieu et place des '.

Merci pour ton aide.
Bonne soirée.
Sven
Sventovit a écrit :

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">

Y'a une faille de sécurité si t'utilises apache. Genre si ton script est "pouet.php", suffit de l'appeller avec :
pouet.com/pouet.php/<script>alert(document.cookie)</script>

Et boom, on peut injecter de l'html et des scripts. Si tu le peux, met l'action en dure, et sinon un p'tit htmlspecialchars fera l'affaire :
<form method="post" action="pouet.php">

ou
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
Bonjour Florent

merci d'être passé par là.
J'ai procédé à la correction du code suivant tes recommandations.

Ça me touche beaucoup que tu te sois préoccupé de ce point.
Un très GRAND MERCI.
@christopher : il me semble que les \n ne sont pas pris en compte lors d'echo avec guillemets simples, mais le sont avec des guillemets doubles. Les parenthèses du echo ne sont pas nécessaires.

si le formulaire a pour action la même page, pourquoi ne pas laisser action vide ? genre <form action="" ou <form action="?"