Yop,
Après un long dialogue avec mon égo j'en suis arrivé à la conclusion suivantes:
1.- Pourquois me casser la tête..?
2.- A quoi cela me sert de savoir si une adresse mail existe dans ma base. Si par exemple je prend mon cas :
a.- Je suis père de famille
b.- Le fils de ma mère et de mon père, qui en informatique sont complétement dépassés, et que si je n'avais point d'amour pour eux, il me serait facile de les manipuler à mon avantage..?
3.- Bien donc après celà, j'ai pris la décision de revenir à mon formulaire d'avant quand tous fonctionnaient normalement. Et sutout me soucier que du pseudo, le reste n'était que de la paranoïaque, et ma remise en question, m'a aussi fait me rendre compte que j'utilisais parfois ma messagerie pour aider fille, maman, père et autres.... Alors..? Ha que coucou.... Et le 100% sécurité n'existe pas....
Merci à tous... je joins le code php du formulaire, si vous avez des améliorations à apporter..? Elles seront les bienvenues encore merci et
@ +.......
Ce code verifies les champs, le nombres de caratères par champs, crée unr clef d'activation et envoi un mail pour activer le compte etc etc... A vous de le lire et d'exploiter mes prises de tête à votre convenance.....
<?php
error_reporting(E_ALL);
header('Content-type: text/html; charset=UTF-8');
/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
return $chaine;
}
// Initialisation du message de réponse
//$erreur = null;
// 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['pseudo']) && htmlspecialchars(trim($_POST['pseudo'] !='')))? Verif_magicquotes($_POST['pseudo']) : null
&& (isset($_POST['password']) && htmlspecialchars(trim($_POST['password'] !='')))? Verif_magicquotes($_POST['password']) : null
&& (isset($_POST['pass_confirm']) && htmlspecialchars(trim($_POST['pass_confirm'] !='')))? Verif_magicquotes($_POST['pass_confirm']) : null
&& (isset($_POST['email']) && htmlspecialchars(trim($_POST['email'] !='')))? Verif_magicquotes($_POST['pseudo']) : null
&& (isset($_POST['email_confirm']) && htmlspecialchars(trim($_POST['email_confirm'] !='')))? Verif_magicquotes($_POST['email_confirm']) : null
&& (isset($_POST['url']) && htmlspecialchars(trim($_POST['email_confirm'])))? Verif_magicquotes($_POST['pseudo']) : null ) {
// Vérification de la validitée des champs
if (!preg_match('#^[A-Za-z0-9]{4,20}$#', $_POST['pseudo'])) {
$erreur = 'Votre pseudo doit comporter un minimum de 4 caractéres,<br /><br />L\'utilisation de l\'underscore est autorisée.';
}
elseif (!preg_match('#^[A-Za-z0-9]{6,30}$#', $_POST['password'])) {
$erreur = 'Votre mot de passe doit comporter un minimum de 6 caractéres.';
}
elseif ($_POST['password'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
elseif (!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$#',$_POST['email'])) {
$erreur = 'Votre adresse e-mail n\'est pas valide';
}
elseif ($_POST['email'] != $_POST['email_confirm']) {
$erreur = 'Les 2 adresse mail sont différents';
}
else {
$database = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membres', $database);
// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*)
FROM comptes_utilisateurs
WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'"
OR email="'.mysql_real_escape_string($_POST['email']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
// 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, 10);
$clef_activation = ('');
foreach($caracteres_aleatoires as $i) {
$clef_activation .= $caracteres[$i];
}
if ($data[0] == 0) {
$sql = 'INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement)
VALUES("'.mysql_real_escape_string($_POST['pseudo']).'",
"'.mysql_real_escape_string(sha1($_POST['password'])).'",
"'.mysql_real_escape_string($_POST['email']).'",
"'.mysql_real_escape_string($_POST['url']).'",
"'.mysql_real_escape_string($clef_activation).'", NOW())';
mysql_query($sql) or die('Erreur SQL !</br>'.$sql.'<br />'.mysql_error());
$login = ($_POST['pseudo']);
// Préparation du mail contenant le lien d'activation
$destinataire = ($_POST['email']);
$objet = 'Activer votre compte' ;
$entete = 'MIME-Version: 1.0' ;
$entete = 'Content-Type: text/html; charset=iso-8859-1\n';
$entete = 'Content-Transfert-Encoding: 8bit\n';
$entete = 'From: [email protected]\n';
// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = '<html><head><title>Mail d\'activation </title></head>
<body><h2>Merci de votre inscription sur le site http://www.lezarts.org</h2>
<p>Pour activer votre compte, veuillez cliquer sur le lien ci-dessous.</p>
<p>Ou faites un copier/coller dans la barre d\'adresse de votre navigateur internet.</p>
<p>http://www.lezarts.org/activation.php?log='.urlencode($login).'&cle='.urlencode($clef_activation).'</p>
<p>Ceci est un mail automatique, Merci de ne pas y répondre.</p>
</body></html>';
// Envoi du mail d'activation
if (mail($destinataire, $objet, $entete, $message)) {
// Message de confirmation
$erreur = 'Votre compte utilisateur a correctement été créer<br />
Un email vient de vous être envoyer afin de l\'activer';
}
else {
// Si une erreur survient
$erreur = 'Une erreur est survenue lors de l\'envoi du mail d\'activation<br />
Veuillez contacter l\'administrateur afin d\'activer votre compte';
}
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
PS : Ce code normalement fonctionne, parole de scout toujours... Pour les fainéant y'a qu'à copier/coller et développer le formulaire et la base selon vos besoins.......
@+
Yop,
Après un long dialogue avec mon égo j'en suis arrivé à la conclusion suivantes:
1.- Pourquois me casser la tête..?
2.- A quoi cela me sert de savoir si une adresse mail existe dans ma base. Si par exemple je prend mon cas :
a.- Je suis père de famille
b.- Le fils de ma mère et de mon père, qui en informatique sont complétement dépassés, et que si je n'avais point d'amour pour eux, il me serait facile de les manipuler à mon avantage..?
3.- Bien donc après celà, j'ai pris la décision de revenir à mon formulaire d'avant quand tous fonctionnaient normalement. Et sutout me soucier que du pseudo, le reste n'était que de la paranoïaque, et ma remise en question, m'a aussi fait me rendre compte que j'utilisais parfois ma messagerie pour aider fille, maman, père et autres.... Alors..? Ha que coucou.... Et le 100% sécurité n'existe pas....
Merci à tous... je joins le code php du formulaire, si vous avez des améliorations à apporter..? Elles seront les bienvenues encore merci et [size=125]@ +[/size].......
[b]Ce code verifies les champs, le nombres de caratères par champs, crée unr clef d'activation et envoi un mail pour activer le compte etc etc... A vous de le lire et d'exploiter mes prises de tête à votre convenance.....[/b]
[php]<?php
error_reporting(E_ALL);
header('Content-type: text/html; charset=UTF-8');
/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
return $chaine;
}
// Initialisation du message de réponse
//$erreur = null;
// 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['pseudo']) && htmlspecialchars(trim($_POST['pseudo'] !='')))? Verif_magicquotes($_POST['pseudo']) : null
&& (isset($_POST['password']) && htmlspecialchars(trim($_POST['password'] !='')))? Verif_magicquotes($_POST['password']) : null
&& (isset($_POST['pass_confirm']) && htmlspecialchars(trim($_POST['pass_confirm'] !='')))? Verif_magicquotes($_POST['pass_confirm']) : null
&& (isset($_POST['email']) && htmlspecialchars(trim($_POST['email'] !='')))? Verif_magicquotes($_POST['pseudo']) : null
&& (isset($_POST['email_confirm']) && htmlspecialchars(trim($_POST['email_confirm'] !='')))? Verif_magicquotes($_POST['email_confirm']) : null
&& (isset($_POST['url']) && htmlspecialchars(trim($_POST['email_confirm'])))? Verif_magicquotes($_POST['pseudo']) : null ) {
// Vérification de la validitée des champs
if (!preg_match('#^[A-Za-z0-9]{4,20}$#', $_POST['pseudo'])) {
$erreur = 'Votre pseudo doit comporter un minimum de 4 caractéres,<br /><br />L\'utilisation de l\'underscore est autorisée.';
}
elseif (!preg_match('#^[A-Za-z0-9]{6,30}$#', $_POST['password'])) {
$erreur = 'Votre mot de passe doit comporter un minimum de 6 caractéres.';
}
elseif ($_POST['password'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
elseif (!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$#',$_POST['email'])) {
$erreur = 'Votre adresse e-mail n\'est pas valide';
}
elseif ($_POST['email'] != $_POST['email_confirm']) {
$erreur = 'Les 2 adresse mail sont différents';
}
else {
$database = mysql_connect ('localhost', 'root', '');
mysql_select_db ('espace_membres', $database);
// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*)
FROM comptes_utilisateurs
WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'"
OR email="'.mysql_real_escape_string($_POST['email']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
// 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, 10);
$clef_activation = ('');
foreach($caracteres_aleatoires as $i) {
$clef_activation .= $caracteres[$i];
}
if ($data[0] == 0) {
$sql = 'INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement)
VALUES("'.mysql_real_escape_string($_POST['pseudo']).'",
"'.mysql_real_escape_string(sha1($_POST['password'])).'",
"'.mysql_real_escape_string($_POST['email']).'",
"'.mysql_real_escape_string($_POST['url']).'",
"'.mysql_real_escape_string($clef_activation).'", NOW())';
mysql_query($sql) or die('Erreur SQL !</br>'.$sql.'<br />'.mysql_error());
$login = ($_POST['pseudo']);
// Préparation du mail contenant le lien d'activation
$destinataire = ($_POST['email']);
$objet = 'Activer votre compte' ;
$entete = 'MIME-Version: 1.0' ;
$entete = 'Content-Type: text/html; charset=iso-8859-1\n';
$entete = 'Content-Transfert-Encoding: 8bit\n';
$entete = 'From:
[email protected]\n';
// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = '<html><head><title>Mail d\'activation </title></head>
<body><h2>Merci de votre inscription sur le site http://www.lezarts.org</h2>
<p>Pour activer votre compte, veuillez cliquer sur le lien ci-dessous.</p>
<p>Ou faites un copier/coller dans la barre d\'adresse de votre navigateur internet.</p>
<p>http://www.lezarts.org/activation.php?log='.urlencode($login).'&cle='.urlencode($clef_activation).'</p>
<p>Ceci est un mail automatique, Merci de ne pas y répondre.</p>
</body></html>';
// Envoi du mail d'activation
if (mail($destinataire, $objet, $entete, $message)) {
// Message de confirmation
$erreur = 'Votre compte utilisateur a correctement été créer<br />
Un email vient de vous être envoyer afin de l\'activer';
}
else {
// Si une erreur survient
$erreur = 'Une erreur est survenue lors de l\'envoi du mail d\'activation<br />
Veuillez contacter l\'administrateur afin d\'activer votre compte';
}
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>[/php]
PS : Ce code normalement fonctionne, parole de scout toujours... Pour les fainéant y'a qu'à copier/coller et développer le formulaire et la base selon vos besoins.......
[size=200]@+[/size]