IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Problème avec php mail avec mon hébergeur mais pas en local


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut [Mail] Problème avec php mail avec mon hébergeur mais pas en local
    J'ai développé une application web en php mysql et j'ai un petit probleme quand je veux envoyer un email.

    J'ai deux environement 1-Prod 2-Lab

    J'explique les 2 situations:
    Quand je suis en lab c'Est a dire en localhost avec xampp et Mercury activé pour le send mail ca marche comme sur des roulette.

    Quand je suis en Prod c'est a dire chez mon hebergeur rien en se passe, pas de email envoyer, mais le plus drole la dedans c'est que quand la personne s'inscrit le e-mail il fonctionne mais pas l'autre truc. J'ai aucune idée de ce que ca pourait bien etre.

  2. #2
    Membre actif Avatar de Ikonic
    Inscrit en
    Février 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 197
    Points : 202
    Points
    202
    Par défaut
    salut,

    peut-être :
    est-ce que ton hébergeur t'autorise l'envoi de mail ?
    regarde le fichier php.ini...
    piksite.com
    Pour vos photos, images, .... » Carousel.us

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Ikonic
    salut,

    peut-être :
    est-ce que ton hébergeur t'autorise l'envoi de mail ?
    regarde le fichier php.ini...

    Oui mon hébergeur autorise l'envoi de mail, je suis capable d'envoyer un mais quand la personne s'inscrit, et aussi si la personne oublie son mot de passe ca fonctionne, mais un autre truc ca ne marche pas.

    rien niet mais pourant en localhost avec xampp tout marche.

    je vais devenir dingue ca fait 2 jours que je gosse sur ce probleme.

    au secours

  4. #4
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Prend tes scripts mail séparément et test les en prod.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ok j'explique d'avantage:

    j'ai 4 scripts mail qui roule
    1- Qui envoie lors de l'abbonenent il fonctionne #1
    2- il envoie un mot de passe si oublier, ca fonctionne aussi
    3- un autre qui envoie un mail general si la personne a un commentaire ou une suggestion a faire a propos du site, ca marche aussi
    4- un script qui envoie un mail lorsque je change le nom de l'usager, celui la il ne marche pas.

    les autre sont au root de mon web et celui la est dans un dossier admin es-ce que cela pourrait causer probleme?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    function displayUsersname4change() {
    global $database;
       $q = "SELECT * "
           ."FROM ".TBL_USERS." ORDER BY username ASC";
       $result = $database->query($q);
       $num_rows = mysql_numrows($result);
     
       if(!$result || ($num_rows < 0)){
          echo "Error displaying info";
          return;
       }
     
       if($num_rows == 0){
          echo "Database table empty";
          return;
       }
     
     
    	echo '<table><form action="adminprocess.php" method="POST">';
    	echo '<tr>';
    	echo '<td>';
    	echo 'Utilisateur :<br>';
    	echo "<select name=\"old_name\">";
     
       for($i=0; $i<$num_rows; $i++){
    	  $uname  = mysql_result($result,$i,"username");
          $uemail = mysql_result($result,$i,"email");
    	  $unom = mysql_result($result,$i,"nom");
    	  $uprenom = mysql_result($result,$i,"prenom");
    	  $ucaserne = mysql_result($result,$i,"caserne");
    	  $uequipe = mysql_result($result,$i,"equipe");
     
     
    	if ($uname == "admin") {
    		} else {
    			 echo "<option value=\"$uname\">[ $uname ] --- ($uprenom $unom, $ucaserne-$uequipe; $uemail)\n";
    		}
       }
       echo "</select>";
    echo '   </td>';
    echo '<td>';
    echo 'Matricule:<br>';
    echo '<input type="text" name="new_name" maxlength="9">';
    echo '</td>';
    echo '<td>';
    echo '<br>';
     
    for($i=0; $i<$num_rows; $i++){
    	  $uname2  = mysql_result($result,$i,"username");
          $uemail2 = mysql_result($result,$i,"email");
     
     
    	if ($uname2 == "admin") {
    		} else {
    			 echo "<input type=\"hidden\" name=\"email\"value=\"$uemail2\">";
    		}
       }
    echo '<input type="hidden" name="subupdusername" value="1">';
    echo '<input type="submit" value="Update username">';
    echo '</td></tr>';
    echo '</form></table>';
     
     
    }


    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_POST['subupdusername'])){
             $this->procUpdateUSERNAME();
          }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function procUpdateUSERNAME(){
          global $session, $database;
     
             $database->updateUserName($_REQUEST['old_name'], "username", $_REQUEST['new_name']);
     
     
     
    			$from = "From: ".EMAIL_FROM_NAME." <".EMAIL_FROM_ADDR.">";
    			$subject = "Votre nom d'utilisateur à été changé par le système !";
    		    $body = $_REQUEST['new_name'].",\n\n"
                 ."Votre nom d'utilisateur à été changer automatiquement par le système pour\n"
                 ."pouvoir gérer plus facilement les inscriptions sur le site. \n\n"
    			 ."Ancien nom d'utilisateur: ".$_REQUEST['old_name']."\n"
                 ."Nouveau nom d'utilisateur: ".$_REQUEST['new_name']."\n\n"
                 ."Si jamais vous avez perdu ou oubliez votre mot de passe, un nouveau mot de passe\n"
    			 ."peut être généré pour vous.\n\n Si vous voulez le changer\n"
    			 ."votre addresse email vous pouvez le faire en allant éditer votre\n"
    			 ."profil.\n\n"
    			 ."".SITE_URL."\n\n"
                 ."- administrateur";
     
         mail($_REQUEST['email'],$subject,$body,$from);
     
     
     
    		 //sendnewusername($_REQUEST['email'], $_REQUEST['old_name'], $_REQUEST['new_name']);
             header("Location: ".$session->referrer."?x=user_config");
     
       }
    je cite le code peut etre ca peux aider.

    Merci

  6. #6
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    1) les <table> n'ont aucunes raison dêtre la ou tu les utilise.
    2) $_REQUEST, ...
    3) Tu fais aucun test sur les info passé au formulaire

    Remplace un peu tes $_REQUEST par des $_POST

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Yoshio
    1) les <table> n'ont aucunes raison dêtre la ou tu les utilise.
    2) $_REQUEST, ...
    3) Tu fais aucun test sur les info passé au formulaire

    Remplace un peu tes $_REQUEST par des $_POST
    Pour les <table> je ne vois pas pourquoi elle ne se retrouverais pas la...

    $_REQUEST versus $_POST y-a-t-il une différence?

    Je ne fais pas de test sur les infos passées au formulaire car ce n'est que temporaire. c'est seulement le temps que je puisse changer le nom des utilisateurs, mais tant que ca ne fonctionne pas ce truc d'e-mail je ne peux changer personne.

    grrrrrr j'ai changer les $_REQUEST pour des $_POST et ce ne fonctionne toujours pas.......

  8. #8
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    $_REQUEST versus $_POST y-a-t-il une différence?
    Pas grand chose a première vue. Maintenant si sur ton hébergeur la 'fonction' register_globals est à off ton $_REQUEST tu l'a dans ... (par défaut c'est mis à OFF, donc pas de request)

    Fait un peu un echo de tout ca et regarde si tu as les bonnes valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $from = "From: ".EMAIL_FROM_NAME." <".EMAIL_FROM_ADDR.">";
    			$subject = "Votre nom d'utilisateur à été changé par le système !";
    		    $body = $_REQUEST['new_name'].",\n\n"
                 ."Votre nom d'utilisateur à été changer automatiquement par le système pour\n"
                 ."pouvoir gérer plus facilement les inscriptions sur le site. \n\n"
    			 ."Ancien nom d'utilisateur: ".$_REQUEST['old_name']."\n"
                 ."Nouveau nom d'utilisateur: ".$_REQUEST['new_name']."\n\n"
                 ."Si jamais vous avez perdu ou oubliez votre mot de passe, un nouveau mot de passe\n"
    			 ."peut être généré pour vous.\n\n Si vous voulez le changer\n"
    			 ."votre addresse email vous pouvez le faire en allant éditer votre\n"
    			 ."profil.\n\n"
    			 ."".SITE_URL."\n\n"
                 ."- administrateur";

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je sais pas es-ce que ce serait possible que l'erreur vienne du fait qu'il n'y a pas de dans mon code, la sortie de la fonction n'est qu'un retour a l'autre page en changeant le header?

    Et j'ai essayer les echo et ca fonctionne les valeurs sont affichées.


    Mystère et boule de gomme...

  10. #10
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Le return sert juste a renvoyer une valeur pour la réutiliser hors de la fonction donc si tu ne te sert pas de cette valeur que tu pourrait renvoyer il n'y a aucune raison de faire un return.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'ai réécrit le code mais dans une seul et unique page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    <?
    include_once("../include/session.php");
    require_once("templates/myadminheader.php");
    require_once("templates/myadminfooter.php");
     
       if(!$session->isAdmin()){
       header("Location: ../index.php");
    }
    else{
     
    echo $tpl_header;
     
     
     
    if (isset($_POST['subupdusername'])) {
     
    	$uemail = $_POST['email'];
    	$uold_name = $_POST['old_name'];
    	$unew_name = $_POST['new_name'];
     
    	$database->updateUserName($uold_name, "username", $unew_name);
     
    			$from = "From: ".EMAIL_FROM_NAME." <".EMAIL_FROM_ADDR.">";
    			$subject = $uold_name." Votre nom d'utilisateur à été changé par le système !";
    		    $body = $uold_name.",\n\n"
                 ."Votre nom d'utilisateur à été changer automatiquement par le système pour\n"
                 ."pouvoir gérer plus facilement les inscriptions sur le site. \n\n"
    			 ."Ancien nom d'utilisateur: ".$uold_name."\n"
                 ."Nouveau nom d'utilisateur: ".$unew_name."\n\n"
                 ."Si jamais vous avez perdu ou oubliez votre mot de passe, un nouveau mot de passe\n"
    			 ."peut être généré pour vous.\n\n Si vous voulez le changer\n"
    			 ."votre addresse email vous pouvez le faire en allant éditer votre\n"
    			 ."profil.\n\n"
    			 ."".SITE_URL."\n\n"
                 ."- administrateur";
     
     
        mail($uemail,$subject,$body,$from);
     
     
    	unset($_POST['subupdusername']);
    	unset($_POST['email']);
    	unset($_POST['old_name']);
    	unset($_POST['new_name']);
     
     }
     
     
     
     
     
     
     
     
    echo "<h4>Update username Matricule</h4>";
    echo "<br><br>";
    $q = "SELECT * "
           ."FROM ".TBL_USERS." ORDER BY timestamp DESC";
       $result = $database->query($q);
       $num_rows = mysql_numrows($result);
     
       if(!$result || ($num_rows < 0)){
          echo "Error displaying info";
          return;
       }
     
       if($num_rows == 0){
          echo "Database table empty";
          return;
       }
     
     
    	echo '<table><form action="chg_user.php" method="POST">';
    	echo '<tr>';
    	echo '<td>';
    	echo 'Utilisateur :<br>';
    	echo "<select name=\"old_name\">";
     
       for($i=0; $i<$num_rows; $i++){
    	  $uname  = mysql_result($result,$i,"username");
          $uemail = mysql_result($result,$i,"email");
    	  $unom = mysql_result($result,$i,"nom");
    	  $uprenom = mysql_result($result,$i,"prenom");
    	  $ucaserne = mysql_result($result,$i,"caserne");
    	  $uequipe = mysql_result($result,$i,"equipe");
     
     
    	if ($uname == "admin") {
    		} else {
    			 echo "<option value=\"$uname\">[ $uname ] --- ($uprenom $unom, $ucaserne-$uequipe; $uemail)\n";
    		}
       }
       echo "</select>";
    echo '   </td>';
    echo '<td>';
    echo 'Matricule:<br>';
    echo '<input type="text" name="new_name" maxlength="9">';
    echo '</td>';
    echo '<td>';
    echo '<br>';
     
    for($i=0; $i<$num_rows; $i++){
    	  $uname2  = mysql_result($result,$i,"username");
          $uemail2 = mysql_result($result,$i,"email");
     
     
    	if ($uname2 == "admin") {
    		} else {
    			 echo "<input type=\"hidden\" name=\"email\"value=\"$uemail2\">";
    		}
       }
    echo '<input type="hidden" name="subupdusername" value="true">';
    echo '<input type="submit" value="Update username">';
    echo '</td></tr>';
    echo '</form></table>';
     
     
     
    echo "</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td><hr></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>";
     
     
    ECHO $tpl_footer;
    }
     
    ?>

    S.V.P me dire ce qui cloche dans ce code, ya rien n'as faire il ne fonctionne pas non plus.... es-ce que je suis trop rouillé..

  12. #12
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$uemail = $_POST['email'];
    	$uold_name = $_POST['old_name'];
    	$unew_name = $_POST['new_name'];
    Si le old_name par exemple n'est pas renseigner tu aura droit a un warning ou une notice.

    Et pourrais tu nous donner l'erreur parceque la ...

    A la fin du From ajoute peux etre \r\n

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé l'erreur, il y avait pas mal trop de input avec la meme valeur name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for($i=0; $i<$num_rows; $i++){
    	  $uname2  = mysql_result($result,$i,"username");
          $uemail2 = mysql_result($result,$i,"email");
     
     
    	if ($uname2 == "admin") {
    		} else {
    			 echo "<input type=\"hidden\" name=\"email\"value=\"$uemail2\">";
    		}
       }
    L'erreur est dans le code ci-haut...

    le champs hidden avec comme name email étais pris dans un for inutil...

    Merci Yoshio d'être venu a la rescourse.

    RESOLU

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec php mail
    Par abdoulfall dans le forum Langage
    Réponses: 8
    Dernier message: 03/05/2013, 11h06
  2. Réponses: 6
    Dernier message: 01/12/2010, 09h22
  3. [AJAX] Ajax fonctionne chez mon hébergeur mais pas en local
    Par Ericx_25 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 30/01/2009, 13h41
  4. Réponses: 4
    Dernier message: 30/03/2007, 10h37
  5. [Mail] Variable de PHP --> mail en HTML --> PHP
    Par JeanMi66 dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2005, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo