1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
<?php
header('Content-Type: text/html; charset=UTF-8');
require_once 'inc_connexion.php';
$conn=opendb(); // on se connecte à la Base de données
/** script permettant l'insertion d'un membre en Base , ce script devra vérifier que le login n'est pas déjà présent en Base.
Le pseudo choisi par le futur membre sera le pseudo intégré en Base. Il faudra par ailleurs envoyé un mail au membre
afin de lui communiquer son login et son password après validation de l'unicité du login en base.
Il faudra également vérifier la validité des autres informations saisis par l'utilisateur
*/
// variables correspondant aux champs présents en base
// utilisation de l'opérateur ternaire ?: pour assigner les variables aux valeurs des champs du formulaire
$pseudo = (isset($_POST['pseudo']))?$_POST['pseudo']:null; // on vérifie que la variable est définie
$password = (isset($_POST['password']))?$_POST['password']:null;
$password = sha1($password); // on crypte le mot de passe
$verifPassword = (isset($_POST['verifPassword']))?$_POST['verifPassword']:null;
$anneNaiss = (isset($_POST['anneeNaiss']))?$_POST['anneeNaiss']:null;
$anneeNaiss = htmlspecialchars($_POST['anneeNaiss']);
$email = (isset($_POST['email']))?$_POST['email']:null;
$email = (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))?$email:null; // on vérifie la validité de l'adresse email
$email = htmlspecialchars($_POST['email']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$telephone = (isset($_POST['telephone']))?$_POST['telephone']:null;
$telephone = htmlspecialchars($_POST['telephone']);// On rend inoffensives les balises HTML que le visiteur a pu rentrer
$masquerTel = (isset($_POST['masquerTel']))?$_POST['masquerTel']:null;
$region = (isset($_POST['region']))?$_POST['region']:null;
$cle = sha1(microtime(TRUE)*100000);
$actif = 0;
// json permet de faire le pont entre Javascript et PHP
$t = array(); // tableau permettant le traitement des données avec json
$t["erreur"] = "Formulaire incorrect";
// on récupère le nombre d'occurence présentes dans la clause where
$sql = "select count(*) as nbr from membres where pseudo ='".$_POST['pseudo']."'";
$stmt=$conn->prepare($sql);
$stmt->execute();
// creation de la variable $result recuperant les lignes et les retournant EN TANT que tableau associatif
$result=$stmt->fetch(PDO::FETCH_ASSOC);
//print_r($result); // pour le test
// on vérifie que le champ pseudo ne soit pas vide et que le pseudo n'est pas déjà dans la table
if(!(empty($pseudo)) and !($result['nbr']) == 0) { // si le nombre d'occurrence du résultat de la requête n'est pas nul alors
// on crée un indice dans le tableau PHP permettant de récupérer le message et de l'afficher sur le poste client équipé de Javascript
$t["erreurPseudo"] = 'Ce pseudo existe déjà! Veuillez saisir un autre pseudo.';
} else if(empty($password) and ($password != $verifPassword)) {
// si le champ du mot de passe est vide et que les valeurs des champs ne sont pas équivalents alors
// on utilise notre tableau de données JSON à envoyer sur le serveur
$t["erreurPassword"] = 'Vos mots de passe ne correspondent pas !';
} else { // sinon on peut effectuer le traitement de l'insertion en Base du futur membre
// requête pour l'insertion du producteur en base
$req =
"insert into membres
values(null,:pseudo,:password,:annee_naissance,:email,:telephone,:masquerTel,:region,CURDATE(),:cle,:actif)";
// on prépare le traitement de la requête
$stm=$conn->prepare($req);
// Tentative d'insertion en base d'un nouveau producteur en utilisant le mode transactionnel
// bloc try ... catch()
try {
$conn->beginTransaction();
// on associe les marqueurs nommés avec les variables crées plus haut
$stm->bindParam(':pseudo', $pseudo, PDO::PARAM_STR);
$stm->bindParam(':password', $password, PDO::PARAM_STR);
$stm->bindParam(':annee_naissance', $anneeNaiss, PDO::PARAM_STR);
$stm->bindParam(':email', $email, PDO::PARAM_STR);
$stm->bindParam(':telephone', $telephone, PDO::PARAM_STR);
$stm->bindParam(':masquerTel', $masquerTel, PDO::PARAM_STR);
$stm->bindParam(':region', $region, PDO::PARAM_STR);
$stm->bindParam(':cle', $cle, PDO::PARAM_STR);
$stm->bindParam(':actif', $actif, PDO::PARAM_INT);
// exécution de la requête
$stm->execute();
// on commit
$conn->commit();
// on utilise notre tableau de données JSON à envoyer sur le serveur
$t["erreur"] = "ok"; // utiliser lors de l'appel Ajax pour recevoir la réponse du serveur
$t["retour"] = 'Inscription réussie! Un email de confirmation est en cours d\'envoi ...';
} catch(PDOException $e) {
// on rollback si cela se passe mal
$conn->rollback();
// on affiche un message d'erreur
print '</br>';
print "Erreur lors de l'insertion en base !: ". $e->getMessage() . "</br>";
header( "refresh:7;url=http://localhost/clothesBusiness/index.php" );
} // fin bloc try ... catch()
// Préparation du courriel contenant le lien d'activation
/** Un email est composé des informations suivantes :
Destinataire
Sujet
Entête // optionnel
Message
*/
/**
$destinataire = $email;
$sujet = "Activer votre compte";
$from_name = "vendeur";
$from_email = "sogia@sogia.fr";
$entete = "From: $from_name <$from_email>";
// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = 'Bienvenue sur jevendsmesfringues.com,
Le site internet jevendsmesfringues.com a été optimisé pour une utilisation
sous Mozilla Firefox, Google Chrome et Safari. Nous vous recommandons fortement
d\'utiliser ces navigateurs pour bénéficier de l\'intégralité des fonctionnalités du site internet.
Nous vous recommandons également d\'activer le javascript dans votre navigateur
afin de profiter de l\'interactivité du site internet.
Pour activer votre compte et vous connecter, veuillez cliquer sur le lien ci dessous
ou le copier/coller dans l\'un des navigateurs sus-cités.
http://localhost/includes/clothesBusiness/inc_activation.php?log='.urlencode($login).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete);
**/
}
// Ne pas oublier d'afficher l'encodage de la représentation json des valeurs envoyées sur le serveur
header('Content-Type: application/json');
echo json_encode($t); // la fonction json_encode() retourne la représentation json d'une valeur
?> |
Partager