header("location:./inscription.php"); exit; } //Si on a redirigé un usagé vers authentification.php, la variable 'prov' du GET //note la page d'origine. if (isset($_GET['prov'])) { //On l'enregistre dans la variable de session pour pouvoir la garder lors d'un refraichissement. $_SESSION['prov'] = $_GET['prov']; } //Si on arrive à la page après le bouton submit 'valider' du formulaire a été cliqué. if (isset($_POST['valider'])) { $tabFormulaire = array(); //Le POST contient toutes les données entré par l'utilisateur dans le formulaire. //On désinfecte les données et les enregistres dans le tableau. foreach ($_POST as $cle => $valeur) { $tabFormulaire[$cle] = desinfecte($valeur); } //Retourne un tableau contenant les données du compte client si le nom d'utilisateur et //le mot de passe correspond à un compte client dans la base de données. //$tmp = $maBD->selectClientMotDePasse($tabFormulaire['nomUtilisateur'], $tabFormulaire['motDePasse']); //Retourne un tableau contenant les données du compte client si le nom d'utilisateur //correspond à un compte client dans la base de données. $tmp = $maBD->selectClient($tabFormulaire['nomUtilisateur']); //Vérifie le mot de passe entré contre le hash stocké en bd. $bonMdp = $hasher->CheckPassword($tabFormulaire['motDePasse'], $tmp['motDePasse']); //Si le mot de passe ne correspond pas, unset la variable. if (!$bonMdp) { unset($tmp); } //Si le tableau est set, c'est qu'il y a un compte retourné. if (isset($tmp)) {
//du formulaire. $messages[$champ] = $message; //La validation du formulaire à échoué. $valide = false; return false; } return true; } //Messages d'erreur affiché pour un champs vide qui est requis. $msgRequis = "Champ requis"; //On arrive du bouton Valider, inscription à valider. if (isset($_POST['valider'])) { $tabClient = array(); //Récupère les champs du POST et désinfecte les données de l'utilisateur. foreach ($_POST as $cle => $valeur) { $tabClient[$cle] = desinfecte($valeur); } //Vérifie manuellement si le champs genre est set et non vide, car il n'est pas transmit dans le POST si l'utilisateur ne le choisit pas. //Les autres champs sont vérifiés dans un foreach if (empty($tabClient['sexe'])) { $messages['sexe'] = $msgRequis; //Le formulaire à échoué la validation. $valide = false; } else { //N'est pas F ou M validationChamp("/^[FM]\$/", $tabClient['sexe'], 'sexe', 'Option invalide'); } //Nom et prénom: au moins 2 max 20 caractères parmi lettres, tiret, espace, apostrophe et point validationChamp("/^[a-zàáâéèêîíìôòóùúûç \\-\\'.]{2,20}\$/iu", $tabClient['nom'], 'nom', 'Entre 2 et 20 lettres'); //Nom et prénom: au moins 2 max 20 caractères parmi lettres, tiret, espace, apostrophe et point validationChamp("/^[a-zàáâéèêîíìôòóùúûç \\-\\'.]{2,20}\$/iu", $tabClient['prenom'], 'prenom', 'Entre 2 et 20 lettres');
<?php //----------------------------- // Script qui vérifie l'unicité en base de données d'un nom // d'utilisateur passé par une variable GET // // Retourne 0 à un doublon, 1 si le nom est disponible, // un message d'erreur dans le cas d'un erreur. //----------------------------- require_once realpath(__DIR__) . '/php/biblio/foncCommunes.php'; //S'il reçoit nomUtilisateur dans le GET if (!empty($_GET['nomUtilisateur'])) { global $maBD; //Désinfecte l'entré de l'utilisateur. $nomUtilisateur = desinfecte($_GET['nomUtilisateur']); try { //Select en base de données sur le nom de l'utilisateur. $client = $maBD->selectClient($nomUtilisateur); } catch (Exception $e) { echo 'Erreur du test d\'unicité'; exit; } //Si $client est set, il y a donc déjà une entré dans la base de données avec le nom d'utilisateur. if (isset($client)) { //False pour non-libre/non unique. echo 0; } else { //Libre/Unique echo 1; } }
$valide = false; return false; } return true; } //Si l'utilisateur est déjà authentifié if (isset($_SESSION['authentification'])) { //On peut assumé qu'un objet client est enregistré sous la variable de SESSION et on le récupère. $client = $_SESSION['client']; //On arrive du bouton valider, changement du mot de passe à valider. if (isset($_POST['valider'])) { //Tableau pour contenir les données entré par l'utilisateur $tabMotPasse = array(); //Désinfecte les données de l'utilisateur. foreach ($_POST as $cle => $valeur) { $tabMotPasse[$cle] = desinfecte($valeur); } //Mot de passe: au moins 5 caractères max 10 parmi lettres et chiffres validationChamp("/^[a-zàáâéèêîíìôòóùúûç0-9]{5,10}\$/iu", $tabMotPasse['mdpNouveau'], 'Nouveau mot de passe: entre 5 et 10 caractères. Lettre et chiffres seulement.'); if (validationChamp("/^[a-zàáâéèêîíìôòóùúûç0-9]{5,10}\$/iu", $tabMotPasse['mdpConfirmer'], 'Confirmation du nouveau mot de passe: entre 5 et 10 caractères. Lettre et chiffres seulement.')) { //Mot de passe de confirmation n'est pas le même que le mot de passe if ($tabMotPasse['mdpConfirmer'] != $tabMotPasse['mdpNouveau']) { $messages[] = 'Confirmation du nouveau mot de passe: N\'est pas identique au nouveau mot de passe.'; $valide = false; } } //Mot de passe actuel est le même que le nouveau mot de passe. //On se fit à la valeur des champs plutôt que de vérifier en BD. if ($tabMotPasse['mdpActuel'] == $tabMotPasse['mdpNouveau']) { $messages[] = 'Le nouveau mot de passe et le mot de passe actuel sont les mêmes.'; $valide = false;
return $valide; } //Si on navigue à la page à partir du bouton valider du formulaire. if (isset($_POST['valider'])) { $postData = array(); //Récupère les champs du POST et désinfecte les données de l'utilisateur. foreach ($_POST as $cle => $valeur) { //Puisque categories est un tableau dans le POST, désinfecte les éléments individuellement. if ($cle == 'categories') { $tmp = array(); foreach ($valeur as $codeCategorie) { $tmp[] = desinfecte($codeCategorie); } $postData[$cle] = $tmp; } else { $postData[$cle] = desinfecte($valeur); } } //Valide les données du POST. Passe en paramètre les caractéristiques du tableau en BD et les données du POST. $valide = valideForm($nomChamps, $postData); //Retire du POST le submit button et le MAX_FILE_SIZE du téléchargement de fichier. $produitData = array_splice($postData, 0, -2); if (isset($produitData['categories'])) { //Transforme notre array des catégories sélectionnées en une string d'on les catégories //sont séparé par une virgule. //Préparation pour former un objet Produit. $produitData['categories'] = implode(',', $produitData['categories']); } else { $produitData['categories'] = ''; } //Si les champs du formulaire sont valides.