
le 18/08/2011 à 12:00
problème d'envoi mail de confirmation
Bonjour à tous,
Mon soucis du moment c'est que je n'arrive pas à trouver ou comprendre l'erreur du formulaire d'inscription, j'ai bien essayé divers solution mais bon..?
Alors j'en fais appelle à vous les experts du php
Je vous joint :
le code d'erreur
Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\site\Lezarts\000_membres\inscription.php on line 25
et le code php
Dans l'attente de votre aide si toute fois il y'en une je vous remercie d'avance...

Alors j'en fais appelle à vous les experts du php

Je vous joint :
le code d'erreur
Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\site\Lezarts\000_membres\inscription.php on line 25
et le code php
- <?php
- // on teste si le visiteur a soumis le formulaire
- if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
- // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
- if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) && (isset($_POST['email']) && !empty($_POST['email']))) {
- // on teste les deux mots de passe
- if ($_POST['pass'] != $_POST['pass_confirm']) {
- $erreur = 'Les 2 mots de passe sont différents.';
- }
- else {
- $base = mysql_connect ('localhost', 'root', '');
- mysql_select_db ('espace_membres', $base);
- // on recherche si ce login est déjà utilisé par un autre membre
- $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
- $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
- $data = mysql_fetch_array($req);
- // Récupération des variables nécessaires au mail de confirmation
- $email = $_POST['email'];
- $login = $_POST['login'];
- // Génération aléatoire d'une clé
- $cle = md5(microtime(TRUE)*100000);
- // Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
- $stmt = $base->prepare('UPDATE membre SET cle=:cle WHERE login like :login');
- $stmt->bindParam(':cle', $cle);
- $stmt->bindParam(':login', $login);
- $stmt->execute();
- // Préparation du mail contenant le lien d'activation
- $destinataire = $email;
- $sujet = "Activer votre compte" ;
- $entete = "From: inscription@votresite.com" ;
- // Le lien d'activation est composé du login(log) et de la clé(cle)
- $message = 'Bienvenue sur votre Email,
- Pour activer votre compte, veuillez cliquer sur le lien ci dessous
- ou copier/coller dans votre navigateur internet.
- http://www.lezarts.org/000_membres/membre.php?log='.urlencode($login).'&cle='.urlencode($cle).'
- ---------------
- Ceci est un mail automatique, Merci de ne pas y répondre.';
- mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
- if ($data[0] == 0) {
- $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "'.mysql_escape_string($_POST['email']).'")';
- mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
- session_start();
- $_SESSION['login'] = $_POST['login'];
- header('Location: membre.php');
- exit();
- }
- else {
- $erreur = 'Un membre possède déjà ce login.';
- }
- }
- }
- else {
- $erreur = 'Tous les champs doivent être remplis merci.';
- }
- }
- ?>
- <html>
- <head>
- <title>Inscription</title>
- </head>
- <body>
- Inscription à l'espace membre :<br />
- <form action="inscription.php" method="post">
- Login :<input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
- Mot de passe :<input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
- Confirmation mot de passe :<input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
- Votre adresse mail :<input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br />
- <input type="submit" name="inscription" value="Inscription">
- </form>
- <?php
- if (isset($erreur)) echo '<br />',$erreur;
- ?>
- </body>
- </html>
Dans l'attente de votre aide si toute fois il y'en une je vous remercie d'avance...
