<?php session_start(); /*session_start() en tête de fichier*/ function gen_uuid() { $uuid = array( 'time_low' => 0, 'time_mid' => 0, 'time_hi' => 0, 'clock_seq_hi' => 0, 'clock_seq_low' => 0, 'node' => array() ); $uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16); $uuid['time_mid'] = mt_rand(0, 0xffff); $uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000)); $uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128)); $uuid['clock_seq_low'] = mt_rand(0, 255); for ($i = 0; $i < 6; $i++) { $uuid['node'][$i] = mt_rand(0, 255); } $uuid = sprintf('%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', $uuid['time_low'], $uuid['time_mid'], $uuid['time_hi'], $uuid['clock_seq_hi'], $uuid['clock_seq_low'], $uuid['node'][0], $uuid['node'][1], $uuid['node'][2], $uuid['node'][3], $uuid['node'][4], $uuid['node'][5] ); return $uuid; } function mail_client($email=null,$user=null,$pass=null,$uuid=null){ if(isset($email,$user,$pass,$uuid) && !empty($email) && !empty($user) && !empty($pass) && !empty($uuid)){ $destinataire = $email; $sujet = 'Activation de votre compte MonSite'; // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $entete = 'MIME-Version: 1.0' . "\r\n"; $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $entete .= 'From: inscription@monsite.fr' . "\r\n"; $lien = 'Je valide mon inscription'; $message = 'Bonjour '.$user.' '; $message .= 'Bienvenue sur le site MonSite.fr '; $message .= 'Pour utilisé votre compte veuillez l´activé en cliquant sur le lien ci-dessous : '; $message .= $lien.' '; $message .= 'Nous vous rappelons votre identifiant et votre mot de passe : '; $message .= 'Identifiant : '.$user.' '; $message .= 'Mot de Passe : '.$pass.' '; $message .= 'Merci d´en prendre note. '; $message .= 'Cordialement '; $message .= 'L´équipe de MonSite.fr '; $message .= '<hr>'; $message .= 'Ceci est un mail automatique. Merci de ne pas y répondre.'; /*derniere etape*/ if(@mail($email,$sujet,$message,$entete)){ echo 'Votre inscription a bien été validée :)'; //ou un header vers une pagemerci.html //header('Location: pagemerci.html');exit; }else{ echo 'check smtp ...'; } }else{ //no user ... } } function inscription($email,$user,$pass){ /*on se connecte*/ try { $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbbase = 'testjerome'; $bdd = new PDO('mysql:host='.$dbhost.';dbname='.$dbbase.'', ''.$dbuser.'', ''.$dbpass.''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } /*est il déjà inscrit ?*/ $sql "select id from `testjerome`.`mesusers` where email :email limit 1"; $req = $bdd->prepare($sql); $req -> bindParam(':email',$email); $req->execute(); $result = $req->fetch(PDO::FETCH_ASSOC); if($result==true){ exit('Déjà inscrit vérifier votre messagerie du mail : '.$email); } /*tu fais ton uuid que tu te compliques la vie en passant :-)*/ $uuid = gen_uuid(); $sql = "INSERT INTO `testjerome`.`mesusers` (`user`, `pass`, `email`, `uuid`, `estactif`) VALUES (:user,:pass,:email,:uuid,0)"; $md5pass = md5($pass); try{ $req = $bdd->prepare($sql); $req -> bindParam(':user',$user); $req -> bindParam(':pass',$md5pass); $req -> bindParam(':email',$email); $req -> bindParam(':uuid',$uuid); $req->execute(); mail_client($email,$user,$pass,$uuid); } catch(Exception $e) { echo('Erreur : '.$e->getMessage()); } } /*si la method est post pas de get le post est mieux ... beaucoup d'attaque sur les form se font par get ... blabla */ $test = false; if($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['user'],$_POST['pass'],$_POST['email']) && strlen($_POST['user'])>3 && strlen($_POST['pass'])>6 && strlen($_POST['email'])>6){ /*un peu de protection basique anti xss*/ $user = htmlentities(trim($_POST['user'])); $pass = htmlentities(trim($_POST['pass'])); $email = htmlentities(trim($_POST['email'])); /*on lance la function inscription*/ /*tu peux contrôler le mail avec une regex ...*/ if($test === false){ inscription($email,$user,$pass); }else{ echo 'Des champs sont à saisir correctement '; } }else{ echo 'Des champs sont à saisir correctement '; } ?> <html> <head> <title>Inscription</title> </head> S'inscrire : <form Method="POST" Action="<?php echo htmlentities(trim($_SERVER['PHP_SELF']));?>"> Pseudo : Mot de Passe : Email : </form> </html>
<?php if(isset($_GET['user'],$_GET['verifyuuid'])){ $user = strip_tags(urldecode(trim($_GET['user']))); $uuid = strip_tags(urldecode(trim($_GET['verifyuuid']))); }else{ exit('UNAUTHORISED'); } /*ON SE CONNECTE*/ try { $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbbase = 'testjerome'; $bdd = new PDO('mysql:host='.$dbhost.';dbname='.$dbbase.'', ''.$dbuser.'', ''.$dbpass.''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $sql "SELECT user,uuid,estactif FROM mesusers WHERE user :user and uuid = :uuid limit 1"; $stmt = $bdd->prepare($sql); $stmt -> bindParam(':user',$user); $stmt -> bindParam(':uuid',$uuid); if($stmt->execute() && $row = $stmt->fetch()) { $uuidbdd = $row['uuid']; // Récupération de la clé $estactif = $row['estactif']; // $uuidverify contiendra alors 0 ou 1 } // On teste la valeur de la variable $uuidverify récupéré dans la BDD if((int)$estactif == '1') // Si le compte est déjà uuidverify on prévient { echo "Votre compte est déjà activé !"; } else // Si ce n'est pas le cas on passe aux comparaisons { // Si elles correspondent on active le compte ! echo "Votre compte a bien été activé !"; // La requête qui va passer notre champ uuidverify de 0 à 1 $stmt $bdd->prepare('UPDATE mesusers SET estactif 1 WHERE user = :user '); $stmt->bindParam(':user', $user); $stmt->execute(); } ?>
-- phpMyAdmin SQL Dump -- version 3.5.1 -- http://www.phpmyadmin.net -- -- Client: localhost -- Généré le: Mer 02 Janvier 2013 à 15:50 -- Version du serveur: 5.5.8-log -- Version de PHP: 5.4.3 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de données: `testjerome` -- -- -------------------------------------------------------- -- -- Structure de la table `mesusers` -- CREATE TABLE IF NOT EXISTS `mesusers` ( `id` int(10) NOT NULL AUTO_INCREMENT, `user` varchar(30) NOT NULL, `pass` varchar(32) NOT NULL, `email` varchar(50) NOT NULL, `uuid` varchar(50) NOT NULL, `estactif` tinyint(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- -- Contenu de la table `mesusers` -- INSERT INTO `mesusers` (`id`, `user`, `pass`, `email`, `uuid`, `estactif`) VALUES (1, 'toto', '961592c3731e8513e81cae739a36a7d9', 'bricomamfree.fr', 'b92853ee-a082-4564-bc64-a0ffce7c792c', 1); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<?php if(isset($_GET['user'],$_GET['verifyuuid'])){ $user = strip_tags(urldecode(trim($_GET['user']))); $uuid = strip_tags(urldecode(trim($_GET['verifyuuid']))); }else{ exit('UNAUTHORISED'); } /*ON SE CONNECTE*/ try { $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbbase = 'testjerome'; $bdd = new PDO('mysql:host='.$dbhost.';dbname='.$dbbase.'', ''.$dbuser.'', ''.$dbpass.''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $sql "SELECT user,uuid,estactif FROM mesusers WHERE user :user and uuid = :uuid limit 1"; $stmt = $bdd->prepare($sql); $stmt -> bindParam(':user',$user); $stmt -> bindParam(':uuid',$uuid); if($stmt->execute() && $row = $stmt->fetch()) { $uuidbdd = $row['uuid']; // Récupération de la clé $estactif = $row['estactif']; // $uuidverify contiendra alors 0 ou 1 } // On teste la valeur de la variable $uuidverify récupéré dans la BDD if((int)$estactif == '1') // Si le compte est déjà uuidverify on prévient { echo "Votre compte est déjà activé !"; } else // Si ce n'est pas le cas on passe aux comparaisons { // Si elles correspondent on active le compte ! echo "Votre compte a bien été activé !"; // La requête qui va passer notre champ uuidverify de 0 à 1 $stmt $bdd->prepare('UPDATE mesusers SET estactif 1 WHERE user = :user '); $stmt->bindParam(':user', $user); $stmt->execute(); } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<html> <head> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; utf-8"> <meta name="generator" content="PSPad editor, www.pspad.com"> <title>Inscription </title> <style> #divform{ text-align:center; background-color:#eedddd; } #pform label{ background-color:#ddeeff; width:25%; padding:10px; } #pform input{ background-color:#ffeedd; width:25%; padding:10px; } </style> </head> S'inscrire : <form Method="POST" Action="<?php echo htmlentities(trim($_SERVER['PHP_SELF']));?>"> <label>Pseudo : </label> <label>Mot de Passe : </label> <label>Email : </label> </form> </html>
<?php session_start(); /*session_start() en tête de fichier*/ function gen_uuid() { $uuid = array( 'time_low' => 0, 'time_mid' => 0, 'time_hi' => 0, 'clock_seq_hi' => 0, 'clock_seq_low' => 0, 'node' => array() ); $uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16); $uuid['time_mid'] = mt_rand(0, 0xffff); $uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000)); $uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128)); $uuid['clock_seq_low'] = mt_rand(0, 255); for ($i = 0; $i < 6; $i++) { $uuid['node'][$i] = mt_rand(0, 255); } $uuid = sprintf('%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', $uuid['time_low'], $uuid['time_mid'], $uuid['time_hi'], $uuid['clock_seq_hi'], $uuid['clock_seq_low'], $uuid['node'][0], $uuid['node'][1], $uuid['node'][2], $uuid['node'][3], $uuid['node'][4], $uuid['node'][5] ); return $uuid; } function mail_client($email=null,$user=null,$pass=null,$uuid=null){ if(isset($email,$user,$pass,$uuid) && !empty($email) && !empty($user) && !empty($pass) && !empty($uuid)){ $destinataire = $email; $sujet = 'Activation de votre compte MonSite'; // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $entete = 'MIME-Version: 1.0' . "\r\n"; $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $entete .= 'From: inscription@monsite.fr' . "\r\n"; $lien = 'Je valide mon inscription'; $message = 'Bonjour '.$user.' '; $message .= 'Bienvenue sur le site MonSite.fr '; $message .= 'Pour utilisé votre compte veuillez l´activé en cliquant sur le lien ci-dessous : '; $message .= $lien.' '; $message .= 'Nous vous rappelons votre identifiant et votre mot de passe : '; $message .= 'Identifiant : '.$user.' '; $message .= 'Mot de Passe : '.$pass.' '; $message .= 'Merci d´en prendre note. '; $message .= 'Cordialement '; $message .= 'L´équipe de MonSite.fr '; $message .= '<hr>'; $message .= 'Ceci est un mail automatique. Merci de ne pas y répondre.'; /*derniere etape*/ if(@mail($email,$sujet,$message,$entete)){ echo 'Votre inscription a bien été validée :)'; //ou un header vers une pagemerci.html //header('Location: pagemerci.html');exit; }else{ echo 'check smtp ...'; } }else{ //no user ... } } function inscription($email,$user,$pass){ /*on se connecte*/ try { $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbbase = 'testjerome'; $bdd = new PDO('mysql:host='.$dbhost.';dbname='.$dbbase.'', ''.$dbuser.'', ''.$dbpass.''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } /*est il déjà inscrit ?*/ $sql "select id from `testjerome`.`mesusers` where email :email limit 1"; $req = $bdd->prepare($sql); $req -> bindParam(':email',$email); $req->execute(); $result = $req->fetch(PDO::FETCH_ASSOC); if($result==true){ exit('Déjà inscrit vérifier votre messagerie du mail : '.$email); } /*tu fais ton uuid que tu te compliques la vie en passant :-)*/ $uuid = gen_uuid(); $sql = "INSERT INTO `testjerome`.`mesusers` (`user`, `pass`, `email`, `uuid`, `estactif`) VALUES (:user,:pass,:email,:uuid,0)"; $md5pass = md5($pass); try{ $req = $bdd->prepare($sql); $req -> bindParam(':user',$user); $req -> bindParam(':pass',$md5pass); $req -> bindParam(':email',$email); $req -> bindParam(':uuid',$uuid); $req->execute(); mail_client($email,$user,$pass,$uuid); } catch(Exception $e) { echo('Erreur : '.$e->getMessage()); } } /*si la method est post pas de get le post est mieux ... beaucoup d'attaque sur les form se font par get ... blabla */ $test = false; $err = null; if($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['user'],$_POST['pass'],$_POST['email']) && strlen($_POST['user'])>3 && strlen($_POST['pass'])>6 && strlen($_POST['email'])>6){ /*un peu de protection basique anti xss*/ $user = htmlentities(trim($_POST['user'])); $pass = htmlentities(trim($_POST['pass'])); $email = htmlentities(trim($_POST['email'])); /*on lance la function inscription*/ /*tu peux contrôler le mail avec une regex ...*/ if(preg_match('#^[a-zA-Z0-9]+[\w.-]*@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email )){ }else{ $test = true; $err .= 'Verifier le mail ! '; } if($test === false){ inscription($email,$user,$pass); }else{ echo $err .= 'les champs sont à saisir correctement '; } }else{ echo 'Les champs sont à saisir correctement '; } ?> <html> <head> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; utf-8"> <meta name="generator" content="PSPad editor, www.pspad.com"> <title>Inscription </title> <style> #divform{ text-align:center; background-color:#eedddd; } #pform label{ background-color:#ddeeff; width:25%; padding:10px; } #pform input{ background-color:#ffeedd; width:25%; padding:10px; } </style> </head> S'inscrire : <form Method="POST" Action="<?php echo htmlentities(trim($_SERVER['PHP_SELF']));?>"> <label>Pseudo : </label> <label>Mot de Passe : </label> <label>Email : </label> </form> </html>
<?php $headers ='From: "jerome"'."\n"; $headers .='Reply-To: inscription@rudelune.fr'."\n"; $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; $message ='<html><head><title>Un titre ici</title></head>Un message de test</html>'; if(mail('monadresse@truc.com', 'Sujet', $message, $headers)) { echo 'Le message a été envoyé'; } else { echo 'Le message n\'a pu être envoyé'; } mail('monadresse@truc.com', 'monessai', 'message'); ?>