Espace membre => confirmation par mail?

Répondre
Laetitia
le 03/01/2010 à 10:11
Laetitia
Bonjour,

Voilà, j'ai fais le tutoriel proposé pour créer un espace membre, puis celui sur la messagerie interne. Seulement, il n'y a aucune protection anti-robot il me semble? Le formulaire pourrait être remplis automatiquement?

Donc, j'ai cherché et j'ai fais un autre tutoriel, d'un autre site. Pas mal aussi, qui lui propose l'activation du compte, à l'aide d'un mail.

J'ai donc essayé de faire "mon code" avec un espace membre qui s'active par mail, et avec une messagerie interne.

Sauf que ça ne marche pas :/

Je sais pas trop si vous pouvez m'aider? Me dire comment ajouter une validation de compte par e-mail, au tuto qui est sur ce site?

Merci d'avance :)
Laetitia
le 03/01/2010 à 19:33
Laetitia
J'ai fais plusieurs codes, j'me suis embrouillé, alors j'ai repris vraiment le tuto de ce site, et j'ai juste ajouté la confirmation par mail, ce qui donne :

(bien sur j'ai enlevé mes identifiants de connexion pour le forum^^

<?php
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('serveur', 'login', 'mdp');
mysql_select_db ('base', $base);

$sql = 'SELECT id FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 0) {

// Génération de la clef d'activation
$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$caracteres_aleatoires = array_rand($caracteres, 8);
$clef_activation = "";

foreach($caracteres_aleatoires as $i)
{
$clef_activation .= $caracteres[$i];
}

// Création du compte
$result = mysql_query("
INSERT INTO membre(
login
, pass
, mail
, Date_Inscription
, Clef_Activation
)
VALUES(
'" . $_POST["login"] . "'
, '" . md5($_POST["pass"]) . "'
, '" . $_POST["mail"] . "'
, '" . time() . "'
, '" . $clef_activation . "'
)
");

// S'il y a une erreur
if(!$result)
{
$message = "Erreur d'accès à la base de données lors de la création du compte utilisateur";
}
else
{

// Envoi du mail d'activation
$sujet = "Activation de votre compte utilisateur";

$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
$message .= "http://" . $_SERVER["SERVER_NAME"];
$message .= "/membre/activer-compte-utilisateur.php?id=" . mysql_insert_id();
$message .= "&clef=" . $clef_activation;

// S'il y a une erreur
if(!@mail($_POST["mail"], $sujet, $message))
{
$message = "Une erreur est survenue lors de l'envoi du mail d'activation<br />\n";
$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
}
else
{

// Message de confirmation
$message = "Votre compte utilisateur a correctement été créer<br />\n";
$message .= "Un email vient de vous être envoyer afin de l'activer";
}



// id du membre
$id = mysql_insert_id();

session_start();
$_SESSION['login'] = $_POST['login'];

// stocke l'id
$_SESSION['id'] = $id;
header('Location: /membre.php');
exit();
}

}

mysql_close ();
}


?>
<html>
<head>
<title>Inscription</title>
</head>
<body>
Inscription à l'espace membre :<br />
<form action="/inscription2.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo stripslashes(htmlentities(trim($_POST['pass_confirm']))); ?>"><br />
Adresse e-mail : <input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo stripslashes(htmlentities(trim($_POST['mail']))); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
</body>
</html>
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours