je parle du module membre, j'ai repris ce formulaire pour les inscriptions:
Code :
<row>
<div class="aside">
<?php
$action = io::request('action', array('create', 'check'));
$message = $error = $lastname = $firstname = $email = $login = $pass1 = $pass2 = $spam = '';
if ($action == 'create') {
$spam = io::request('name');
$login = io::request('login');
$pass1 = io::request('pass1', 'sensitiveIO::isValidPassword');
$pass2 = io::request('pass2', 'sensitiveIO::isValidPassword');
$lastname = io::request('lastname');
$firstname= io::request('firstname');
$email = io::request('email', 'io::isValidEmail');
if ($spam) {
$error .= 'Erreur : Le champ name ne doit pas être rempli (antispam) ...<br />';
}
if (!$login) {
$error .= 'Erreur : L\'identifiant est obligatoire ...<br />';
} elseif (CMS_profile_usersCatalog::loginExists($login, $cms_user)) {
$error .= 'Erreur : Cet identifiant existe déjà ... Veuillez en choisir un autre.<br />';
}
if (!$pass1 || !$pass2) {
$error .= 'Erreur : Les champs "Mot de passe" sont manquant ou incorrects ...<br />';
} elseif ($pass1 != $pass2) {
$error .= 'Erreur : Les champs "Mot de passe" sont différents ...<br />';
}
if (!$lastname) {
$error .= 'Erreur : Le nom est obligatoire ...<br />';
}
if (!$email) {
$error .= 'Erreur : L\'email est manquant ou invalide ...<br />';
}
if (!$error) {
$user = new CMS_profile_user();
$user->setLogin($login);
$user->setPassword($pass1);
$user->setLastName($lastname);
$user->setFirstName($firstname);
$user->setLanguage(new CMS_language('fr'));
$contactData = new CMS_contactData();
$contactData->setEmail($email);
$user->setContactData($contactData);
if ($user->writeToPersistence()) {
// groupe des utilisateurs authentifiés
$groupObject = CMS_profile_usersGroupsCatalog::getByID(AUTHENTICATED_USERS_GROUP_ID);
$groupObject->addToUserAndWriteToPersistence($user);
// groupe de tous les utilisateurs
$groupObject = CMS_profile_usersGroupsCatalog::getByID(ALL_USERS_GROUP_ID);
$groupObject->addToUserAndWriteToPersistence($user);
//inactive user
$user->setActive(false);
$user->writeToPersistence();
//Création de la clé d'identification
$key = base64_encode(io::generateKey(20).'_'.$user->getUserId() ^ ENCODING_KEY);
//Création de l'email de confirmation
$template = (is_file(PATH_MAIL_TEMPLATES_FS)) ? PATH_MAIL_TEMPLATES_FS : '';
$mail = new CMS_email();
$mail->setEmailFrom(APPLICATION_POSTMASTER_EMAIL);
$mail->setFromName(APPLICATION_LABEL);
$mail->setSubject('Validation de votre compte utilisateur', true);
$mail->setEmailTo($email);
$pageURL = CMS_tree::getPageValue('{{pageID}}', 'url');
$body =
'Votre compte utilisateur sur le site <a href="http://www.genea-logique.fr">www.genea-logique.fr</a> a été créé avec succès.<br />
<br />'.
'Pour finaliser votre inscription, merci de cliquer sur le lien ci dessous :<br />
<br />'.
'<a href="'.$pageURL.'?action=check&key='.$key.'">» Activez votre compte</a>
<br />
<br />'.
'Toute l\'équipe vous souhaite la Bienvenue dans la communauté Automne !<br />
<br />';
$mail->setEmailHTML($body);
$mail->setFooter('Cet email est généré automatiquement par Généa-logique concernant le site http://www.genea-logique.fr.'."\n".'Ne répondez pas directement à ce message.');
$mail->setTemplate($template);
$mail->sendEmail();
$message = 'Votre compte a été créé. Un email vous a été envoyé pour valider votre inscription.';
} else {
$error .= 'Erreur lors de la création du compte, veuillez rééssayer ...<br />';
}
}
} elseif ($action == 'check') {
$key = io::request('key');
//Lecture de l'ID utilisateur à partir de la clé
$key = base64_decode($key) ^ ENCODING_KEY;
if( strpos($key,"_") !== false ) {
@list( $generatedKey, $userId ) = explode( "_", $key );
}
if (io::isPositiveInteger($userId)) {
$user = CMS_profile_usersCatalog::getByID($userId);
if (!is_object($user) || $user->hasError() || $user->isActive()) {
$error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
} else {
//Active user
$user->setActive(true);
$user->writeToPersistence();
$message = 'Votre compte a été activé. Vous pouvez maintenant vous identifier à l\'aide du formulaire ci-dessus.';
}
} else {
$error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
}
}
//Create user form
$content = '';
if ($message) {
$content .= '<h4>Créer votre compte :</h4>
<div class="cms_forms_msg">'.$message.'</div>';
} elseif ($action != 'check' && $cms_user->getUserId() == ANONYMOUS_PROFILEUSER_ID) {
$content .= '<h4>Créer votre compte :</h4>
<p>Vous ne possédez pas encore de compte sur Genea-logique.fr ? Créez en un facilement à l\'aide du formulaire suivant.</p>';
if ($error) {
$content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
}
$content .= '
<div class="cms_forms">
<a name="formAnchorCreate"></a>
<form action="/web/genea/12-inscription.php#formAnchorCreate" method="post" id="cms_forms_create">
<input type="hidden" name="action" value="create" />
<table width="100%" cellspacing="1" cellpadding="1" border="0" align="center">
<tbody>
<tr>
<td style="text-align:right; width:30%;">
<label for="lastname">* Nom</label>
</td>
<td>
<input type="text" name="lastname" value="'.io::htmlspecialchars($lastname).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">
<label for="firstname">Prénom</label>
</td>
<td>
<input type="text" name="firstname" value="'.io::htmlspecialchars($firstname).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">
<label for="email">* Email</label>
</td>
<td>
<input type="text" name="email" value="'.io::htmlspecialchars($email).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">
<label for="login">* Pseudo</label>
</td>
<td>
<input type="text" name="login" value="'.io::htmlspecialchars($login).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">
<label for="pass1">* Mot de passe</label>
</td>
<td>
<input type="password" name="pass1" value="'.io::htmlspecialchars($pass1).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">
<label for="pass2">* Confirme passe</label>
</td>
<td>
<input type="password" name="pass2" value="'.io::htmlspecialchars($pass2).'" />
</td>
</tr>
<tr>
<td style="text-align: right;"> </td>
<td>
<input type="submit" value="Créer votre compte" name="submit" class="button" />
</td>
</tr>
</tbody>
</table>
<span style="display:none;">
<input type="text" name="name" value="'.io::htmlspecialchars($spam).'" />
</span>
</form>
</div>
<p>
Conformément à la loi informatique et liberté du 06.01.78 (article 34), vous disposez d\'un droit d\'accès, de modification, de rectification et de suppression des données vous concernant.
</p>';
} elseif ($action == 'check' && $error) {
$content .= '<h4>Créer votre compte :</h4>';
if ($error) {
$content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
}
}
echo $content;
?>
</div>
</row>
quand je m'inscrit, je reçoit bien le mail de validation mais des le 1er clic, le lien est considéré comme invalide...
tu peux faire le test si tu veux:
http://www.genea-logique.fr/web/genea/1 ... iption.php je supprimerais ensuite ton compte...
et j'ai ajouté ça dans le config:*
//key used to check user email (in profile creation)
define("ENCODING_KEY",'aze');
//Identifiant du groupe redacteurs
define('AUTHENTICATED_USERS_GROUP_ID', 1);
//Identifiant du groupe "Tout le monde"
define('ALL_USERS_GROUP_ID', 1);