8725 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Non Smiley bawling

Jencal j'ai testé tes deux solutions rien nada !!! Ca marche du feu de dieu en 5.4 Smiley murf
Modifié par Tintin75 (20 Jan 2016 - 17:00)
Le problème se situe au niveau de cette condition :

if(mail("cXXX", $sujet, stripslashes($corps), $from)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}


Si l'envoi du mail se passe bien, la variable $ok_mail est crée et initialisée à true, sinon, la variable $ok_mail n'est pas initialisée.

Deux solutions possible :
- Celle de JENCAL
- Initialiser $ok_mail à false dans le else
Bguigui67 met sur la bonne voie mais même si tu initialise le ok_mail dans le else je sais pas si c'est une bonne idée, vaut mieux l'initialisé dès le début du code a false.

car là tu la déclare dans le if donc la porté de la variable lors de la compilation est .. uniquement dans le if.
Modifié par JENCAL (20 Jan 2016 - 16:59)
Modérateur
Bonjour,

Un simple if (isset($ok_mail)) au lieu de if ($ok_mail=="true") et aucune initialisation de $ok_mail autre que celle consistant à lui donner la valeur true (ou n'importe quoi d'autre d'ailleurs) devrait suffire.

Amicalement,
Je viens de tester, contre toute attente, la portée d'une variable déclarée dans un if s'étend en dehors de ce if.
Il n'empêche que c'est effectivement plus propre de déclarer d'abord la variable.

Ca donne donc :

$ok_mail = false;

if (mail(...)) {
    $ok_mail = true;
} else {
    //...
}

if ($ok_mail) {
    //...
}
parsimonhi a écrit :
Bonjour,

Un simple if (isset($ok_mail)) au lieu de if ($ok_mail=="true") et aucune initialisation de $ok_mail autre que celle consistant à lui donner la valeur true (ou n'importe quoi d'autre d'ailleurs) devrait suffire.

Amicalement,


oui voila, ma deuxième solution devrait fonctionné normalement;

if(isset($ok_mail)){
 if($ok_mail=="true"){
 }
}


je viens ton edit tintin ...
Modifié par JENCAL (20 Jan 2016 - 17:07)
Bguigui67 a écrit :
Je viens de tester, contre toute attente, la portée d'une variable déclarée dans un if s'étend en dehors de ce if.


Ok merci de la précision
Modérateur
Bonjour,

Tintin75 a écrit :
Ca marche du feu de dieu en 5.4


Si ça semble marcher sur ton serveur en php 5.4 et pas sur celui en php 7, ça ne veut pas dire que ça marche vraiment en php 5.4. Il est possible que ton serveur en php 7 soit configuré pour te signaler et traiter les erreurs de manière différente de l'autre serveur.

Amicalement,
La fumée me sort par les oreilles.

Aucun message d'erreur pas de mail et me renvoi sur une autre page du site .

Je me demande si refaire un formulaire serait pas plus simple .. Encore faut il trouver un qui fonctionne dans la bonne version de php.

$ok_mail = false;

if (mail(...)) {
$ok_mail = true;
} else {
//...
}

if ($ok_mail) {
//...
}

Je suis pas pro
Modifié par Tintin75 (20 Jan 2016 - 17:21)
Comme le dit parsimonhi, c'est surement la configuration des erreurs qui a changé. Essaye de rajouter
error_reporting(E_ALL);

au début de ton script.
Merci ça change rien. Je suis un coriace mais là ça me dépasse une peu.
Modifié par Tintin75 (20 Jan 2016 - 17:28)
Modérateur
Bonjour,

1) Est-ce que tu passes bien par la ligne qui exécute la fonction mail() ? Ajoute une ligne du genre print "<br>coucou<br>"; juste après $ok_mail="true"; pour le savoir.

2) Certains serveurs imposent des conditions particulières à l'usage de mail(). Parfois, cette fonction est désactivée. Parfois, l'expéditeur du message (la valeur après "From:") doit être toi-même impérativement.

EDIT : tester si mail() marche quand on change de serveur est l'un des pires trucs qui puisse t'arriver ! Smiley cligne

Amicalement,
Modifié par parsimonhi (20 Jan 2016 - 17:33)
J'ai à l'écran Coucou Alsacréation meilleur forum du monde Smiley lol

Serveur OVH

Pour info mon panier d'achat fonctionne nickel chrome en php7, aucun problème pour les mails.
Modifié par Tintin75 (20 Jan 2016 - 17:37)
Je crois que j'ai trouvé.

En fait, le problème se situe ligne 106, dans la balise :

<form action='<?php echo $PHP_SELF ?>' method='post' name='Form'>


Je viens d'essayer et $PHP_SELF n'existe à priori pas. Essaye de le remplacer par $_SERVER['SCRIPT_NAME'] ou simplement de définir une action vide (il me semble que le comportement par défaut dans ce cas est de recharger la page courantes en prenant en compte les entrées de formulaires).
Modifié par Bguigui67 (20 Jan 2016 - 17:41)
Je teste merci encore

Toujours erreur :

  <?php  if($ok_mail=="true"){ ?>


Du nouveau j'ai reçu un mail

Erreur à l'écran avec la confirmation.
Modifié par Tintin75 (20 Jan 2016 - 17:49)
Modérateur
Bonjour

Bien vu Bguigui67.

Ceci étant, $_SERVER['PHP_SELF'] (au lieu de $PHP_SELF) devrait marcher aussi.

@Tintin75 : tu as dans ton "manager" OVH la possibilité de suivre les envois d'email automatisés effectués depuis ton site, et vérifier s'il y a des erreurs.

Amicalement,
Le mail fonctionne mais retour en confirmation.

Mail nickel, reste à virer les alertes ...

Notice: Undefined variable: list in

Notice: Undefined variable: sujet in

Notice: Undefined variable: corps in

Notice: Undefined variable: corps in
Modifié par Tintin75 (20 Jan 2016 - 17:54)
Plus que deux alertes !!!

Notice: Undefined variable: list in
$sujet ="".$list['f_1'][$f_1].""; // Sujet du message

Notice: Undefined variable: corps in
$corps = stripslashes($corps); // Vire les aspostrophes

Ca commence à sentir bon Smiley smile
Modifié par Tintin75 (20 Jan 2016 - 17:59)
ligne 54 :
$sujet.="".$list['f_1'][$f_1].""; // Sujet du message

Remplace le ".=" par un simple "=". Tu essaies de concaténer la variable $sujet alors qu'elle n'est pas encore définie.

Pareil pour $corps à la ligne 59.

Pour la variable $list, l'erreur est visiblement à la ligne 54, et là encore, c'est une variable qui n'existe pas.
Pages :