OVH Community, votre nouvel espace communautaire.

Problème de mail


marysanchez125@
16/03/2016, 09h39
How can i print out messages in my mail? I am a job seeker and i got a call letter from Buy Term Papers online service. I need to take a print out it

cobra26
13/03/2016, 10h55
Ah oui super merci beaucoup !
J'ai regardé un peu pour sécuriser le formulaire, si j'ai bien compris il faut rajouter htmlspecialchars ou htmlentities devant chaque réponse au formulaire c'est ça ?

janus57
13/03/2016, 10h45
Bonjour,

dans votre code vous avez 2 renvoie vers une page HTML.

Cordialement, janus57

cobra26
13/03/2016, 10h34
Bonjour
d'accord merci pour votre réponse, par contre quand je mets le index.html, ça me redirige toujours vers le contact.html je ne comprends pas pourquoi

janus57
13/03/2016, 00h40
Bonjour,

Et quelle est l'erreur ?
l'erreur de base est l'utilisation de double quote dans des double quote, la correction proposé plus haut est de mettre des double quote dans des simple quite et d’échapper les caractères tel que '

Avant :
Code:
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire.";
Après :
Code:
$message_erreur_formulaire = 'Vous devez d\'abord envoyer le formulaire.';
Cedt vrai, je n'y avais pas pensé. Comment sécuriser tout ca ?
Lire la doc PHP et en apprendre plus sur des fonctions tel que "htmlentities" et toute les autre qui existe.

De plus quand je vois le très grand regex juste pour contrôler une adresse mail alors que PHP peu le faire pratiquement tout seul (Cf : http://php.net/manual/fr/filter.examples.validation.php) c'est un peu dommage.

Cordialement, janus57

cobra26
13/03/2016, 00h34
Et quelle est l'erreur ? Si c'est de rajouter / avant le "index.html/" ca ne fonctionne pas non plus...
Cedt vrai, je n'y avais pas pensé. Comment sécuriser tout ca ?

janus57
13/03/2016, 00h06
Bonjour,

perso on me dit une erreur de syntaxe ligne 18.

EDIT :
Avec ceci plus d'erreur de syntaxe :
Code:
// Messages d'erreur du formulaire
    $message_erreur_formulaire = 'Vous devez d\'abord envoyer le formulaire.';
    $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
Par contre utiliser du $_POST sans aucune protection c'est pas la meilleur idée qu'il soit.

Cordialement, janus57

cobra26
13/03/2016, 00h05
En fait j'ai trouvé, de base dans le code php au niveau de l'erreur c'était marqué ". Donc si je remets comme ça, ça fonctionne. Par contre lorsque je clique sur retourner au formulaire j'obtiens une erreur 404. Ce qui est logique vu que je n'ai pas de contact.html, seulement un index.html. Et lorsque j'écris "", ça ne fonctionne plus. Que faut il que je marque pour arriver sur la bonne page ?

Gaston_Phone
12/03/2016, 23h42
C'est bien la fonction mail(); qui est utilisée et qui fonctionne sans problèmes sur les hébergements mutualisés OVH.
A première vue votre code est correct.

Deux méthodes pour trouver la cause de la page blanche :
  • Trouver une indication d'erreur dans les logs.
  • Mettre des traps à différents endroits du site afin d'encadrer la zone puis la ligne en erreur.

Exemple de trap :
Code PHP:
echo "001 - envoi=".$_POST['envoi']. "
\n"
;
exit; 
- - - Mise à jour - - -

Au fait, quelle version de PHP utilises-tu ?

cobra26
12/03/2016, 23h24
Je ne sais pas vraiment....
Voici le code html :
Code HTML:
"formulaire">
"contact" method="post" action="contact.php">
Vos coordonnées

>Nom :"text" id="nom" name="nom" tabindex="1" style="margin-bottom:3%; font-size: 1em;"/>

>Email :"text" id="email" name="email" tabindex="2" style="font-size: 1em;" />

Votre message :

>Objet :"text" id="objet" name="objet" tabindex="3" style="margin-bottom:3%; font-size: 1em;"/>

>Message :

"text-align:center;">"submit" name="envoi" value="Envoyer" style="font-size: 1em;" />
et le fichier contact.php (qui se trouve au même endroit que le html
Code PHP:
        /*
        ********************************************************************************************
        CONFIGURATION
        ********************************************************************************************
    */
    // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    
$destinataire 'monmail';
     
    
// copie ? (envoie une copie au visiteur)
    
$copie 'oui'// 'oui' ou 'non'
     
    // Messages de confirmation du mail
    
$message_envoye "Votre message a bien été envoyé. Vous allez recevoir une copie du message par email.";
    
$message_non_envoye "L'envoi du mail a échoué, veuillez réessayer SVP.";
     
    
// Messages d'erreur du formulaire
    
$message_erreur_formulaire "Vous devez d'abord index.html">envoyer le formulaire
.";
    
$message_formulaire_invalide "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
     
    
/*
        ********************************************************************************************
        FIN DE LA CONFIGURATION
        ********************************************************************************************
    */
     
    // on teste si le formulaire a été soumis
    
if (!isset($_POST['envoi']))
    {
        
// formulaire non envoyé
        
echo '

'.$message_erreur_formulaire.'

'
."\n";
    }
    else
    {
        
/*
         * cette fonction sert à nettoyer et enregistrer un texte
         */
        
function Rec($text)
        {
            
$text htmlspecialchars(trim($text), ENT_QUOTES);
            if (
=== get_magic_quotes_gpc())
            {
                
$text stripslashes($text);
            }
     
            
$text nl2br($text);
            return 
$text;
        };
     
        
/*
         * Cette fonction sert à vérifier la syntaxe d'un email
         */
        
function IsEmail($email)
        {
            
$value preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/'$email);
            return ((
$value === 0) || ($value === false)) ? false true;
        }
     
        
// formulaire envoyé, on récupère tous les champs.
        
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
        
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
        
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
        
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
        
// On va vérifier les variables et l'email ...
        
$email = (IsEmail($email)) ? $email ''// soit l'email est vide si erroné, soit il vaut l'email entré
     
        
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
        {
            
// les 4 variables sont remplies, on génère puis envoie le mail
            
$headers  'MIME-Version: 1.0' "\r\n";
            
$headers .= 'From:'.$nom.' <'.$email.'>' "\r\n" .
                    
'Reply-To:'.$email"\r\n" .
                    
'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                    
'Content-Disposition: inline'"\r\n" .
                    
'Content-Transfer-Encoding: 7bit'." \r\n" .
                    
'X-Mailer:PHP/'.phpversion();
        
            
// envoyer une copie au visiteur ?
            
if ($copie == 'oui')
            {
                
$cible $destinataire.','.$email;
            }
            else
            {
                
$cible $destinataire;
            };
     
            
// Remplacement de certains caractères spéciaux
            
$message str_replace("'","'",$message);
            
$message str_replace("’","'",$message);
            
$message str_replace(""",'"',$message);
            
$message str_replace('
'
,'',$message);
            
$message str_replace('','',$message);
            
$message str_replace("<","<",$message);
            
$message str_replace(">",">",$message);
            
$message str_replace("&","&",$message);
     
            
// Envoi du mail
            
if (mail($cible$objet$message$headers))
            {
                echo 
'

'.$message_envoye.'

'
."\n";
            }
            else
            {
                echo 
'

'.$message_non_envoye.'

'
."\n";
            };
        }
        else
        {
            
// une des 3 variables (ou plus) est vide ...
            
echo '

'.$message_formulaire_invalide.Retour au formulaire

'
."\n";
        };
    }; 
// fin du if (!isset($_POST['envoi']))
    
?>

Gaston_Phone
12/03/2016, 23h22
Mail par SMTP ou fonction mail(); ?

cobra26
12/03/2016, 23h06
les chemins de fichiers sont corrects, je n'ai pas de doutes là dessus, j'ai copié les différents dossiers de la même manière dans les 2 hébergeurs.

janus57, comment je fais ça ?

Nowwhat
12/03/2016, 22h52
Citation Envoyé par cobra26
....."mon site/postcontact.php .....
Le type qui a écrit (ou (mal) copie et/ou mal paramétré ) ce fichier postcontact.php - ce lui qui détient la réponse !

janus57
12/03/2016, 22h30
Bonjour,

cela ressemble fortement a une erreur PHP qui sera dans les logs ou affiché sur la page si on bascule en mode dev ou que l'on active de force l'affichage des erreurs.

Cordialement, janus57

cobra26
12/03/2016, 22h26
Ben lors du clic j'arrive sur une page "mon site/postcontact.php qui correspond à mon fichier php avec notamment les messages d'échec et de bien envoyé. Mais peut importe comment je remplis le formulaire, le clic renvoi sur une page postcontact sans aucun message

Nowwhat
12/03/2016, 22h13
C'est tout ce que tu donne comme info :
Citation Envoyé par cobra26
... je clique sur envoyer, j'arrive sur une page blanche ....

cobra26
12/03/2016, 22h08
Bonjour
J'ai créé un site que jai mis sur un hébergeur gratuit et tout fonctionne. Je passe maintenant chez OVH et le formulaire de contact ne fonctionne plus. Je n'ai absolument rien changé et avec OVH quand je clique sur envoyer, j'arrive sur une page blanche

Comment faire svp ?