Formulaire de contact avec PHP 5.2.4

Petit nouveau ! | 2 Messages

03 oct. 2007, 06:13

Bonjour tout le monde,

J'ai un hébergement de type dédié avec PHP version 5.2.4 et CPanel version 11.

Quand j'etais sur la version 4 de PHP j'avais un formulaire de contact simple avec aussi le script CRYPTOGRAPH version 1.3 afin de bloquer les robots de spam, voicile code de base:



<?php include "crypt/functions.php"; ?>

<?php
// Dans la ligne qui suit, remplacer webmaster_AT_domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "webmaster_AT_domaine.tld";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
if (isset($_POST["email_expediteur"])) {
$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
}
if (isset($_POST["titre"])) {
$_POST["titre"]=trim(stripslashes($_POST["titre"]));
}
if (isset($_POST["message"])) {
$_POST["message"]=trim(stripslashes($_POST["message"]));
}
// --- test de la validité des champs saisis ---
if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["message"])) {
// le message est vide
$erreur="Saisissez un message...";
}
elseif (empty($_POST["code"])) {
// le code n'est pas saisi
$erreur="Saisissez le code de verification...";
}

else {
// --- Vérification de la validité du code captcha ---
if (chk_crypt($_POST['code']))
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
$etat="ok";
// --- Le code captcha n'est pas valide ---
else $erreur="Code de verification non valide ...";
}
}

else {
// --- le formulaire n'a pas été soumis ---
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body>
<h1>Contacter le webmaster</h1>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
<input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="titre">Titre de message (facultatif):</label><br />
<input type="text" size="40" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="message">Message (obligatoire):</label><br />
<textarea name="message" id="message" cols="40" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?></textarea>
</p>
<?php dsp_crypt(0,1); ?>
<p><input type="text" name="code" /></p>
<p><input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
}
}
?>
</body>
</html>
Des que j'ai basculé vers la version 5 de PHP le formulaire ne fonctionne plus, sur la page me sort des codes comme si le php n'etait pas interpreté par le serveur, j'ajoute que je suis pas encore au point avec ce langage (vraiment noon).

voici le resultat avec PHP 5.2.4 avec le formulaire de contact:

http://maquette.marbusiness.com/heberge ... ntact.html


Merci de m'indiquer les modification necessaire afin que ce formulaire avec son script fonctionne sur PHP5 ou s'il ya une erreur ailleur ou bien renseignez moi sur un autre formulaire de contact qui marche sur la version 5.2.4.

Je vous remercie beaucoup pour votre aide.

Salutations.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 oct. 2007, 11:04

Ca ne serait pas tout simplement parce que ta page porte l'extension .html au lieu de .php ?

Ou bien avais-tu déclarer les extension .htm ou .html sur ta précédente configuration pour dire au serveur de les exécuter avec php, chose qu'il ne fait pas par défaut ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

03 oct. 2007, 19:37

Oui en effet tu as en parti raison j'ai oublié de renomer en .php par contre même la il reste un petit souci d'affichage: on voit "<?php" dans les champs de saisie et " />" apres chaque champ de texte la non plus je ne sais pas d'ou vient le problème, voici la page avec le formulaire renomé:

http://maquette.marbusiness.com/heberge ... ontact.php

Merci beaucoup de votre aide.

Eléphant du PHP | 443 Messages

03 oct. 2007, 19:56

En inspectant avec firebug ton url, on trouve à l'emplacement de ton champ mail le code suivant:
<input type="text" ?="" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" id="email_expediteur" name="email_expediteur" size="40"/>
Conclusion, ton code n'est pas exécuté parce que ta page n'est pas parsée !! à toi de voir d'où vient le problème, config apache peut-être ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 oct. 2007, 00:55

Plus exactement, le code source du champ est ainsi :
<input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>"
?>" />
Les caractères spéciaux ont été remplacés par leurs équivalent en entités html (< au lieu de "<", etc.) comme si toute ta valeur était passée au htmlentities() ou htmlspecialchars() ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...