Envoyer des info oubliées par mail PHP

Résolu
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   -  
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai essayer de créer un script en PHP pour envoyer par mail des info, du type pseudo, qu'un membre aurait oublié. Tout marche parfaitement, le mail est bien envoyé, mais je ne sais pas quel code utiliser pour afficher le pseudo du membre dans le mail qui lui est destiné. Donc si vous pouvez m'aider, n'hésitez pas.

Voici mon script :

<?php

$e_mail = $_POST['e_mail'];
$confirmation_mail = $_POST['confirmation_mail'];

if ($e_mail != $confirmation_mail)
{
$erreur=1;
include('page4.php');
exit();
}
// Je verifie si les adresses rentrés par le membre sont les mêmes.


$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);


$sql = "SELECT pseudo FROM formulaire WHERE e_mail='".$e_mail."'";
$req = $bdd->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);

if ($ligne = $req->fetch()){

// Préparation du mail
$destinataire = $e_mail;
$sujet = "Pseudo oublié" . "\r\n";
$entete = 'From: monsite@hotmail.fr' . "\r\n" .
'Reply-To: monsite@hotmail.fr' . "\r\n" .
'MIME-Version: 1.0' . "\r\n";
'Content-type: text/html; charset=iso-8859-1' . "\r\n";
'Content-Transfer-Encoding: 8bit' . "\r\n";
'X-Mailer: PHP/' . phpversion() . "\r\n";


$message = 'Bonjour,

Votre pseudo est (ici je ne sais pas comment afficher le pseudo).


----------------
Ceci est un mail automatique, Merci de ne pas y répondre.';

$message = wordwrap($message, 70);
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
header('location: rdv_mail.php');
?>

Tout marche parfaitement mais je ne sais pas comment faire pour insérer le pseudo du membre dans le message.
A voir également:

4 réponses

Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
tiens, sur mon site, j'ai ça qui correspond un peu à ce que tu cherches :

$host = '***';
$nom_de_la_BDD = '***';
$utilisateur = '***';
$mot_de_passe = '***';


if(isset($_GET['id']) && @$_GET['id'] != 0)
	{
	
$id = $_GET['id'];

try
{
	$bdd = new PDO('mysql:host='.$host.';dbname='.$nom_de_la_BDD, $utilisateur, $mot_de_passe);
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}

$req = "SELECT nom, article, date FROM sandbox WHERE id=".$id;
			 
			 $res = $bdd->query($req);
			 foreach($res as $row)
			 {
  $nom = $row['nom'];
  $article = $row['article'];
  $date = $row['date'];
  }


j'en conclue que tu dois pouvoir faire un truc du genre :



try
{
	$bdd = new PDO('mysql:host='.$host.';dbname='.$nom_de_la_BDD, $utilisateur, $mot_de_passe);
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}

$req = "SELECT nom, article, date FROM sandbox WHERE id=".$id;
			 
			 $res = $bdd->query($req);
			 foreach($res as $row)
			 {
  $pseudo = $row['pseudo'];
  }


tu dois pouvoir remplacer le foreach j'imagine, mais comme ça ça devrait quand même marcher
1
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
ce code m'affiche une page blanche et n'envoie pas le mail :s
0
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
Heu... Oui, il faut l'intégrer dans ton code quand même ^^
0
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
A désolé j'avais oublié une ligne :s.
Maintenant ça m'affiche une erreur sur cette ligne : if ($ligne = $req->fetch())

( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\Program Files\wamp\www\Site\Page4\pseudo_oublie.php on line 33.

Voici mon code avec tes propositions :

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
}
catch (Exeption $e)
{
die('Erreur : ' . $e->getMessage());
}

$req = "SELECT pseudo FROM formulaire WHERE e_mail='".$e_mail."'";

$res = $bdd->query($req);
foreach($res as $row)
{
$pseudo = $row['pseudo'];
}

if ($ligne = $req->fetch()){

// Préparation du mail contenant le lien d'activation
$destinataire = $e_mail;
$sujet = "Pseudo oublié" . "\r\n";
$entete = 'From:nomdusite@hotmail.fr' . "\r\n" .
'Reply-To: nomdusite@hotmail.fr' . "\r\n" .
'MIME-Version: 1.0' . "\r\n";
'Content-type: text/html; charset=iso-8859-1' . "\r\n";
'Content-Transfer-Encoding: 8bit' . "\r\n";
'X-Mailer: PHP/' . phpversion() . "\r\n";


$message = 'Bonjour,

Votre pseudo est '.$pseudo.'.


----------------
Ceci est un mail automatique, Merci de ne pas y répondre.';

$message = wordwrap($message, 70);
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail

}
?>
0
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
Remplace ta condition par if($pseudo != NULL) ça devrait marcher :)
0
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci infiniment Templier Nocture, tu as résolu mon problème :).
Tout marche!!
0
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
$pseudo = [tu vas le chercher dans la BDD]
$message = "Bonjour,

Votre pseudo est $pseudo"
0
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci d'avoir répondue Templier Nocturne,
Ca je sais, mais je ne c'est pas quel code mettre pour aller chercher le pseudo dans la BDD.
0
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
0
Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
du coup :

$sql = "SELECT pseudo FROM formulaire WHERE e_mail='".$e_mail."'";
$req = $bdd->query($sql);

$pseudo = $req[0]

ça fait longtemps que j'ai plus fait de SQL, de mémoire c'est comme ça
0
shoub-tcy Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci de m'avoir conseiller le site du zéro, mais je n'ai pas trouvé ma réponse chez eux.

Le code que tu ma donné m'affiche une erreur à la ligne $pseudo = $req[0] ;
( ! ) Fatal error: Cannot use object of type PDOStatement as array in C:\Program Files\wamp\www\Site\Page4\pseudo_oublie.php on line 23
0