2010-01-28 8 views
2

J'ai un formulaire de contact sur le site qui avait l'habitude de travailler, mais depuis quelques mois a cessé de fonctionner correctement. Cela aurait pu être dû à une erreur de codage que je ne peux pas comprendre. Ce qui se passe, c'est que je reçois les messages envoyés, mais ils sont complètement vides, sans contenu du tout. Quels pourraient être les problèmes?Problème de formulaire de contact - Je reçois des messages, mais pas de contenu (page blanche)

Je joins d'abord la page frontale, puis l'arrière-plan.

Exemple de contact.php le code frontal: -

<div id="content"> 
    <h2 class="newitemsxl">Contact Us</h2> 

<div id="contactcontent"> 
     <form method="post" action="contactus.php"> 
Name:<br /> 
<input type="text" name="Name" /><br /> 
Email:<br /> 
<input type="text" name="replyemail" /><br /> 
Your message:<br /> 
<textarea name="comments" cols="40" rows="4"></textarea><br /><br /> 

<?php require("ClassMathGuard.php"); MathGuard::insertQuestion(); ?><br /> 
    <input type="submit" name="submit" value="Send" /> 
* Refresh browser for a different question. :-) 

</form> 
</div> 

</div> 

Exemple de contactus.php (code back-end): -

<?php 

/* first we need to require our MathGuard class */ 
require ("ClassMathGuard.php"); 
/* this condition checks the user input. Don't change the condition, just the body within the curly braces */ 
if (MathGuard :: checkResult($_REQUEST['mathguard_answer'], $_REQUEST['mathguard_code'])) { 
    $mailto="[email protected]"; 
$pcount=0; 
$gcount=0; 
$subject = "A Stylish Goods Enquiry"; 
$from="[email protected]"; 
echo ("Great, you're message has been sent !"); //insert your code that will be executed when user enters the correct answer 
} else { 
    echo ("Sorry, wrong answer, please go back and try again !"); //insert your code which tells the user he is spamming your website 
} 


while (list($key,$val)=each($HTTP_POST_VARS)) 
{ 
$pstr = $pstr."$key : $val \n "; 
++$pcount; 
} 
while (list($key,$val)=each($HTTP_GET_VARS)) 
{ 
$gstr = $gstr."$key : $val \n "; 
++$gcount; 
} 
if ($pcount > $gcount) 
{ 
$comments=$pstr; 
mail($mailto,$subject,$comments,"From:".$from); 
} 
else 
{ 
$comments=$gstr; 
mail($mailto,$subject,$comments,"From:".$from); 
} 
?> 

Répondre

2

Probablement il y avait une mise à jour de PHP sur le serveur et $HTTP_POST_VARS a été dépréciée. Utilisez $_POST et $_GET pour ceux-ci.

+0

Donc là où il est écrit: - '$ HTTP_POST_VARS', je devrais remplacer par '$ _POST' et partout où il est wriiten '$ HTTP_GET_VARS', je devrais remplacer par '$ _OBTENIR'? – nitbuntu

+0

oui, c'est vrai ... – Pentium10

2

est-il possible que votre version de php a changé ? En php5, le tableau HTTP_POST_VARS n'est plus disponible.

Vous pouvez essayer ce qui suit l'obtenir vos valeurs avant de commencer votre boucle while:

$HTTP_POST_VARS = !empty($HTTP_POST_VARS) ? $HTTP_POST_VARS : $_POST; 
+0

Cette ligne que vous avez mentionnée, dois-je l'ajouter juste au-dessus de la boucle while? – nitbuntu

+0

yepp, ou repleace $ HTTP_POST_VARS avec $ _POST dans votre code source – opHASnoNAME