OVH Community, votre nouvel espace communautaire.

formulaire php en fonctionne plus


vidal69
12/01/2016, 09h13
Bonjour,

Merci pour tes réponses, tout fonctionne !
Cela servira de solution de dépannage en attendant de refaire entièrement le site.

Pour le champ message: ca n'a pas fonctionné avec ta ligne:
$content.= "
".nl2br(htmlspecialchars($message, ENT_COMPAT, 'iso-8859-1'))."\n";

mais avec celle-ci:
$content.= "
".nl2br(htmlspecialchars($_POST['message'], ENT_COMPAT, 'iso-8859-1'))."\n";

Merci encore.

chmod777
08/01/2016, 17h18
Bonjour,

Comme l'a dit janus, ton code a des erreurs de syntaxe pas acceptables, même sur une version ancienne de php.
Mais vu que le script marche (enfin plutôt "ne plante pas"), on va considérer que ce sont des erreurs de copier/coller.

A mon avis, qu'il y a 2 raisons pour lesquelles les données envoyées sont vides.

1/ Vous utilisez les superglobales, supprimées depuis php 5.4.
http://php.net/manual/fr/security.globals.php
Donc, soit vous faites :
$content.= "Nom : ".$_POST['name']."
\n";
soit
$name= $_POST['name'];
$content.= "Nom : ".$name."
\n";

idem pour les autres variables concernées.


2/ Si ça marche, le champ message risque quand même d'être vide s'il contient un caractère spécial comme une accent. Depuis php 5.4, l'encodage pour ces fonctions est utf-8 par défaut.
http://php.net/manual/fr/function.htmlspecialchars.php
Donc pour php 5.4/5.5, il faut :
$content.= "
".nl2br(htmlspecialchars($message, ENT_COMPAT, 'iso-8859-1'))."\n";

Avec php 5.6,tu aurais juste pu mettre un ini_set('default_charset', 'iso-8859-1'); en tout début de fichier et ça aurait fonctionné aussi. Je te conseille quand même de le mettre en haut de toutes les pages php de ton site (ou le fichier header) dans le cas où tu devrais à nouveau passer sur une version php plus récente.

vidal69
08/01/2016, 14h49
Bonjour,

Non, je n'ai pas de message d'erreur.
J'ai comparé ligne par ligne mon fichier php actuel et celui de la version du site de 2010, il est identique. Je n'ai jamais modifié les lignes de codes.
Et pourtant malgré les erreurs que tu évoques (qui pour moi me sont inconnus), le formulaire fonctionnait.

A moins que cela vient de l'autre fichier lié: contact.htm

janus57
07/01/2016, 18h21
Bonjour,

vous avez un message d'erreur ?
Car visiblement y en a une ici : $headers.= "boundary="----=_NextPart"\n\n";
+
$content.= "Content-Type: text/html; charset="iso-8859-1"\n";

Et ce script avec ces erreurs n'aurais jamais du fonctionner dans les versions précédentes.

Cordialement, janus57

vidal69
07/01/2016, 12h30
Bonjour,

Le formulaire de mon site ne fonctionne plus, je pense depuis la migration de la version php d'ovh.
Le site a 6 ans, je ne suis pas le concepteur du site. J'ai quelques notions de codes mais je m'occupe généralement d'entretenir le site (images/textes/couleurs, nouvelles pages;..)

J'ai mis en place le fichier ovhconfig avec version 5.5. En mode development, je n'ai pas d'erreur qui s'affiche.
J'ai fait le test info.php sur mon site, je suis bien en 5.5. Je n'ai pas fait de modification sur le site depuis un moment.

Mon problème:
Une fois qu'un client a remplis le formulaire (nom, tel, mail, message...) et qu'il l'envoi. Il n'a plus la petite fenêtre confirmant que le message a bien été envoyé. Je reçois bien le formulaire mais vide (nom: vide, tel: vide..).
Même son adresse mail ne s'affiche plus, je ne sait donc pas qui me contacte...

Ci-dessous le code de mon fichier php: j'ai aussi celui du fichier htm si nécessaire.

if(isset($_POST["email"])) {

$subject = "Demande sur exemple.com";
$headers = "From: ".$email."\n";
$headers.= "Bcc: contact@exemple.com; webmaster@exemple.com"."\n";
$headers.= "X-Mailer: PHP/".phpversion();
$headers.= "MIME-Version: 1.0"."\n";
$headers.= "Content-Type: multipart/mixed;\n";
$headers.= " boundary="----=_NextPart"\n\n";
$content = "------=_NextPart\n";
$content.= "Content-Type: text/html; charset="iso-8859-1"\n";
$content.= "Content-Transfer-Encoding: 32bit\n\n";
$content.= "Nom : ".$name."
\n";
$content.= "Société : ".$company."
\n";
$content.= "Activité : ".$activity."
\n";
$content.= "Adresse : ".$address."
\n";
$content.= "\n ".$zipcode." ".$city."
\n";
$content.= "Tél : ".$phone."
\n";
$content.= "Fax : ".$fax."
\n";
$content.= "Email : ".$email."
\n";
$content.= "
".nl2br(htmlspecialchars($message))."\n";
$content.= "\n\n";
/*
$content.= "------=_NextPart\n";
$content.= "Content-Type: text/plain; name="$file"\n";
$content.= "Content-Transfer-Encoding: base64\n";
$content.= "Content-Disposition: attachment; filename="$file"\n\n";
$content.= chunk_split(base64_encode($vCard));
$content.= "\n\n\n------=_NextPart\n";
*/

@mail("contact@exemple.com", $subject, $content, $headers);

} else {

header("location:contact.htm");

}

?>





Exemple.com : Contact

















Contactez-nous
Téléphone, e-mail





Par téléphone :






Par e-mail :


 

 


 


 


Votre message a bien été envoyé


 


Merci !


 


 


 


 














Quelqu'un peut-il m'aider ?
Merci à vous.