[RESOLU] Gestion mot de passe utilisateur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Gestion mot de passe utilisateur

Re: Gestion mot de passe utilisateur

par filou80 » 09 mars 2023, 06:18

Merci Saian,
J'ai réussi a faire ce que je souhaiter grâce a ton commentaire.

Je met ce post en résolu.
Merci au forum.

@+Filou

Re: Gestion mot de passe utilisateur

par Saian » 08 mars 2023, 15:42

Salut, côté admin ce que je fais généralement c'est de laisser le champ vide ou le remplir selon qu'on souhaite le modifier ou pas.

Champ vide => on ignore le champ.
Champ rempli => on met le mot de passe à jour.

Pour ce qui est de ton dernier message, j'ai envi de dire, si tu un obtiens un des messages d'erreur du case 2 c'est que la valeur de modifier est égal à 2. Vérifie simplement la valeur dans $_POST et la valeur de $validation juste avant le switch pour t'assurer qu'il n'y a pas d'embrouille.

Re: Gestion mot de passe utilisateur

par filou80 » 08 mars 2023, 06:40

Je viens de modifier mon code cela fonctionne, je suis passer par un switch.
Mais je rencontre un soucis c'est quand je veux modifier la première partie mail et pseudo (mon bouton modifier valeur =1) cela me demande le mot de passe qui se trouve dans mon deuxième formulaire sur la même page (ou le bouton modifier a pour valeur 2).
Sur mon premier formulaire j'ai bien enlever le code de contrôle mot de passe et tout ce qui est lié avec.

voici mon code front :
<?php
ob_start();
?>

<!-- Debut code message erreur -->
<div class="container">
<div class="row justify-content-center my-5">
<?php if($code) :?>
<div class="col-10 text-center h5 alert mt-3 <?= $messageCode[$code]['type'] ?>">
<?= $messageCode[$code]['msg'] ?>
</div>
<?php endif ?>
</div>
</div>
<!-- Fin code message erreur -->

<!-- Fiche inscrit -->

<div class="container">
<div class="row justify-content-center">
<div class="col-10">

<div class="mt-3">
<h1>Modification de la fiche</h1>
</div>
</div>
</div>
</div>

<div class="middleSite mt-3">

<div class="container my-3">
<div class="row d-flex justify-content-center align-items-center">
<div class="col-10">

<input type="hidden" name="id" value="<?= htmlentities($result->pseudo ?? '', ENT_QUOTES, 'UTF-8')?>">

<form action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="<?= htmlentities($result->id ?? '', ENT_QUOTES, 'UTF-8')?>">';
<!-- Photo -->
<div class="text-center mb-3">
<img class="picture aurore" src="<?= $finalPic ?>" alt="Photo de profil">
</div>

<!-- MAil -->
<div class="col-8 input-group">
<div class="input-group-text iconesConnexionInscription">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/>
</svg>
</div>
<input type="email"
class="persoConnexionInscription form-control"
placeholder="Mail"
name="mail"
id="mail"
value="<?= htmlentities($result->mail ?? '', ENT_QUOTES, 'UTF-8')?>"
required>
</div>
<div class="error mb-3"><?= htmlentities($error['mail'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Pseudo -->
<div class="col-8 input-group">
<div class="input-group-text iconesConnexionInscription">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person" viewBox="0 0 16 16">
<path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z"/>
</svg>
</div>
<input type="text"
class="persoConnexionInscription form-control"
placeholder="Pseudo (chiffre et lettre)"
minlength="2"
maxlength="20"
name="pseudo"
id="pseudo"
value="<?= htmlentities($result->pseudo ?? '', ENT_QUOTES, 'UTF-8')?>"
required>
</div>
<div class="error mb-3"><?= htmlentities($error['pseudo'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Status -->
<div class="col-8 input-group">
<select class="form-select" aria-label="Default select example" name="status" id="status" value="<?= htmlentities($result->status ?? '', ENT_QUOTES, 'UTF-8')?>">
<option value="0"<?= $status == '0' ? ' selected' : '' ?>>Activer</option>
<option value="1"<?= $status == '1' ? ' selected' : '' ?>>Désactiver</option>
</select>
</div>
<div class="error mb-3"><?= htmlentities($error['status'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Niveau -->
<div class="col-8 input-group">
<select class="form-select" aria-label="Default select example" name="role" id="role" value="<?= htmlentities($result->role ?? '', ENT_QUOTES, 'UTF-8')?>">
<option value="1"<?= $role == '1' ? ' selected' : '' ?>>Option 1</option>
<option value="2"<?= $role == '2' ? ' selected' : '' ?>>Utilisateur</option>
<option value="3"<?= $role == '3' ? ' selected' : '' ?>>Option 3</option>
<option value="4"<?= $role == '4' ? ' selected' : '' ?>>Option 4</option>
<option value="5"<?= $role == '5' ? ' selected' : '' ?>>Administrateur</option>
</select>
</div>
<div class="error mb-3"><?= htmlentities($error['role'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Avatar -->
<div class="col-8 input-group mb-3">
<div class="input-group-text iconesConnexionInscription">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-bounding-box" viewBox="0 0 16 16">
<path d="M1.5 1a.5.5 0 0 0-.5.5v3a.5.5 0 0 1-1 0v-3A1.5 1.5 0 0 1 1.5 0h3a.5.5 0 0 1 0 1h-3zM11 .5a.5.5 0 0 1 .5-.5h3A1.5 1.5 0 0 1 16 1.5v3a.5.5 0 0 1-1 0v-3a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 1-.5-.5zM.5 11a.5.5 0 0 1 .5.5v3a.5.5 0 0 0 .5.5h3a.5.5 0 0 1 0 1h-3A1.5 1.5 0 0 1 0 14.5v-3a.5.5 0 0 1 .5-.5zm15 0a.5.5 0 0 1 .5.5v3a1.5 1.5 0 0 1-1.5 1.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 0 .5-.5v-3a.5.5 0 0 1 .5-.5z"/>
<path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3zm8-9a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/>
</svg>
</div>
<input type="file"
class="form-control"
name="avatar"
id="avatar"
value="<?= htmlentities($_POST['avatar'] ?? '', ENT_QUOTES, 'UTF-8')?>">
</div>
<div class="error mb-3"><?= htmlentities($error['avatar'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Boutons MAJ SUPPRIMER DESACTIVATION -->
<?php
// Récupération de la valeur de la variable status
//$status = 1; // Remplacez cette ligne par la récupération de la valeur de la variable depuis votre base de données ou autre source

// Condition pour masquer les boutons "Désactiver" et "Réactiver"
if ($status == 1) {
?>
<div class="col-12 text-center">
<button class="btn btn-outline-success my-3" type="submit" name="modifier" value="1">Modifier</button>
<button class="btn btn-outline-warning my-3" type="submit" name="reactiver">Réactiver</button>
<button class="btn btn-outline-danger my-3" type="submit" name="supprimer">Supprimer</button>
</div>
<?php
} else {
?>
<div class="col-12 text-center">
<button class="btn btn-outline-success my-3" type="submit" name="modifier" value="1">Modifier</button>
<button class="btn btn-outline-warning my-3" type="submit" name="desactiver">Désactiver</button>
<button class="btn btn-outline-danger my-3" type="submit" name="supprimer">Supprimer</button>
</div>
<?php
}
?>
</div>
</div>
</div>
</div>

<div class="container">
<div class="row justify-content-center">
<div class="col-10">
<div class="mt-3">
<h1>Modification du mot de passe</h1>
</div>
</div>
</div>
</div>

<!-- Debut code message erreur -->
<div class="container">
<div class="row justify-content-center my-5">
<?php if($code) :?>
<div class="col-10 text-center h5 alert mt-3 <?= $messageCode[$code]['type'] ?>">
<?= $messageCode[$code]['msg'] ?>
</div>
<?php endif ?>
</div>
</div>
<!-- Fin code message erreur -->

<div class="middleSite mt-3">

<div class="container my-3">
<div class="row d-flex justify-content-center align-items-center">
<div class="col-10">

<form action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="<?= htmlentities($result->id ?? '', ENT_QUOTES, 'UTF-8')?>">';

<div class="col-8 input-group">
<div class="input-group-text iconesConnexionInscription">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lock" viewBox="0 0 16 16">
<path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z"/>
</svg>
</div>
<input type="password"
class="persoConnexionInscription form-control"
placeholder="Mot de passe*"
minlength="6"
maxlength="20"
name="mdpInscription"
id="mdpInscription"
value="<?= htmlentities($_POST['mdpInscription'] ?? '', ENT_QUOTES, 'UTF-8')?>"
required>
</div>
<div class="error mb-3"><?= htmlentities($error['mdpInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<div class="col-8 input-group">
<div class="input-group-text iconesConnexionInscription">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-lock" viewBox="0 0 16 16">
<path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z"/>
</svg>
</div>
<input type="password"
class="persoConnexionInscription form-control"
placeholder="Confirmation*"
minlength="6"
maxlength="20"
name="mdpConfirmationInscription"
id="mdpConfirmationInscription"
value="<?= htmlentities($_POST['mdpConfirmationInscription'] ?? '', ENT_QUOTES, 'UTF-8')?>"
required>
</div>
<div class="error mb-3"><?= htmlentities($error['mdpConfirmationInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div>

<!-- Boutons MAJ SUPPRIMER DESACTIVATION -->

<div class="col-12 text-center">
<button class="btn btn-outline-success my-3" type="submit" name="modifier" value="2">Modifier</button>
</div>

</form>

</div>
</div>
</div>

</div>

<!-- Fin fiche inscrit -->

<?php
$content = ob_get_clean();

$titlePage = 'FicheInscrit';
$metaDescription ="";
$metaKeywords ="";

$title = 'FicheInscrit';

include(dirname(__FILE__).'/templates/connecter.php');
?>
et mon controlleur :
<?php
// Session start et redirection vers connexion
require_once(dirname(__FILE__).'/../publics/utils/session.php');
require_once(dirname(__FILE__).'/../models/Utilisateur.php');
require_once(dirname(__FILE__).'/../config/config.php');
require_once(dirname(__FILE__).'/../publics/utils/regex.php');
require_once(dirname(__FILE__).'/../publics/utils/database.php');

$id = trim(filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT));
$code = trim(filter_input(INPUT_GET, 'code', FILTER_SANITIZE_NUMBER_INT));
$status = trim(filter_input(INPUT_GET, 'status', FILTER_SANITIZE_NUMBER_INT));
$role = trim(filter_input(INPUT_GET, 'role', FILTER_SANITIZE_NUMBER_INT));

$exception ='';

//On récupére les valeurs
$all = new Utilisateurs();
$result = $all->findOneInscrit($id);


$testPic = dirname(__FILE__).'/../uploads/avatars/'.$id.'.jpeg';
$testPic1 = dirname(__FILE__).'/../uploads/avatars/'.$id.'.png';

if(!file_exists($testPic) && !file_exists($testPic1) ){
$finalPic = '/uploads/avatars/anonyme.png';
}elseif(file_exists($testPic)){
$finalPic = '/uploads/avatars/'.$id.'.jpeg';
}else{
$finalPic = '/uploads/avatars/'.$id.'.png';
}

// condition a faire

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$validation = intval(trim(filter_input(INPUT_POST, 'modifier', FILTER_SANITIZE_NUMBER_INT)));
switch ($validation) {
case 1: //Connexion
if (isset($_POST['modifier'])) {
$id = $_POST['id'];

//Champ mail
$mail = trim(filter_input(INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL));
if(!empty($mail)){
$testRegex = filter_var($mail, FILTER_VALIDATE_EMAIL);
if(!$testRegex){
$error["mail"] = 'Le mail n\'est pas au bon format.';
} if(strlen($mail)>100){
$error["mail"] = 'La longueur du mail doit inférieur à 100 caractéres.';
}
} else {
$error["mail"] = 'Vous devez entrer une adresse mail.';
}

//Pseudo
$pseudo = trim(filter_input(INPUT_POST, 'pseudo', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
$testRegex = preg_match('/'.REGEX_NUMBER_AND_LETTER.'/', $pseudo);
if(!$testRegex){
$error["pseudo"] = 'Le pseudo n\'est pas au bon format.';
}
if(!empty($pseudo)){
if(strlen($pseudo)<2 || strlen($pseudo)>20){
$error["pseudo"] = 'Le pseudo doit etre compris entre 2 et 20 caractéres.';
}
} else {
$error["pseudo"] = 'Le pseudo est obligatoire.';
}

// Vérifier si la valeur a été sélectionnée
if (!isset($_POST['status'])) {
$erreur = "Veuillez sélectionner une option.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

// Vérifier si la valeur status sélectionnée est valide
$status = $_POST['status'];
$options_status = array("0", "1");
if (!in_array($status, $options_status)) {
$error = "L'option status sélectionnée n'est pas valide.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

// Vérifier la sécurité de la valeur sélectionnée
$status_securise = htmlspecialchars($status, ENT_QUOTES, 'UTF-8');

// Vérifier la longueur de la valeur sélectionnée
if (strlen($status_securise) > 2) {
$error = "La valeur sélectionnée est trop longue.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

// Vérifier si la valeur role a été sélectionnée
if (!isset($_POST['role'])) {
$error = "Veuillez sélectionner une option.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

// Vérifier si la valeur sélectionnée est valide
$role = $_POST['role'];
$options_valides = array("1", "2", "3", "4", "5");
if (!in_array($role, $options_valides)) {
$error = "L'option role sélectionnée n'est pas valide.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

// Vérifier la sécurité de la valeur sélectionnée
$role_securise = htmlspecialchars($role, ENT_QUOTES, 'UTF-8');

// Vérifier la longueur de la valeur sélectionnée
if (strlen($role_securise) > 2) {
$error = "La valeur sélectionnée est trop longue.";
// Afficher un message d'erreur ou rediriger l'utilisateur vers la page du formulaire
}

$role = $role_securise;

//détails du fichier nom, extension et taille
$nomFichier = $_FILES['avatar']['name'];
$extension = pathinfo($nomFichier, PATHINFO_EXTENSION);
$extensionMin = strtolower($extension);
$extensionMinuscule = '.'.$extensionMin;
$taille = $_FILES['avatar']['size'];

$extensionAutorisee = array('.png' , '.jpg' , '.jpeg' , '.');

if(!empty($extensionMinuscule)){
if(!in_array($extensionMinuscule,$extensionAutorisee)){
$error["avatar"] = 'Format de fichier non pris en charge. Seulement png jpeg et jpg.';
}
}

//Controle taille
if(!empty($taille)){
if($taille > 6000000){
$error["avatar"] = 'La taille du fichier ne doit pas excéder 4 MO.';
}
}

//On verifie que le tableau erreur est vide pour update en base de donnees
if(empty($error)){

//// il faut rendre le mot de passe non obligatoire //////
////// Warning: Undefined variable $idUtilisateur in /volume1/EASYKODE/easykodePhp/controllers/ficheInscrit-ctrl.php on line 176 string(51) "/volume1/EASYKODE/easykodePhp/uploads/avatars/.jpeg" ///////
//// Voir rafraichier la page problem id get et post //////

// $status = 0;
// $role = 2; //Role par defaut
// $actif = 0; //Mettre à 1 apres validation par mail
// $effacer = 0; //Mettre à 1 si demande de suppression
// //Melange de caractere et chiffre via la fonction
// $token = $returnMaxId.str_random(60);

$idUtilisateur = $id;

// var_dump($id);
// var_dump($mail);
// var_dump($pseudo);
// var_dump($mdpc);
// var_dump($status);
// var_dump($role);
// exit;


//On recupere les valeurs hydrate
$maj = new Utilisateurs($id, $mail, $pseudo,'', $status, $role);
//On actualise le message
$exception = $maj->update($id);

if ($exception == 25){
$code = 25; //le profil à été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception == 24) {
$code = 24; //le profil n'a pas été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

elseif ($exception === 2) {
$code = 2; //Une erreur SQL est survenue
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 3) {
$code = 3; //Le mail existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 6) {
$code = 6; //Le mail et le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 5) {
$code = 5; //Le pseudo existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

//Traitement de la photo
if($_FILES['avatar'] && $_FILES['avatar']['error']==0){

// Vérification du poids limité
if($_FILES['avatar']['size'] > LIMIT_WEIGHT){
$error['avatar'] = 'Poids limite dépassée';
}
// Vérification du format autorisé
// $mime = mime_content_type($_FILES['avatar']['tmp_name']);
// if(!in_array($mine, SUPPORTED_FORMAT)){
// $error['avatar'] = 'Format non autorisé';
// }

// if(!in_array($extension, $extensionAutorisee)){
// $error['avatar'] = 'Format non autorisé';
// }

$sizes = getimagesize($_FILES['avatar']['tmp_name']);
$originalWidth = $sizes[0];
$originalHeight = $sizes[1];
if($originalWidth < MIN_WIDTH || $originalHeight < MIN_HEIGHT){
$error['avatar'] = 'Dimensions trop petites';
}

// repertoire du serveur en aboslu
$rep=$_SERVER['DOCUMENT_ROOT']."/";
// on ajoute au chemin aboslu le chemin de depot de fichier et son nom de fichier
$rep.="uploads/avatars/".$idUtilisateur.$extensionMinuscule;

//Enregistrement du fichier sur mon site
if(empty($error)){

$from = $rep;
//$from = $_FILES['avatar']['tmp_name'];

// Si on veut conserver le fichier original sur le serveur
// $to = dirname(__FILE__) . '/../uploads/avatars/original.jpg';
if(!move_uploaded_file(($_FILES['avatar']['tmp_name']),$rep)){
$error['avatar'] = 'Problème lors de l\'enregistrement';
}

if(empty($error)){
// Redimensionnement
$src_width = $originalWidth;
$src_height = $originalHeight;

// Si format portrait on redimensionne selon la largeur sinon, selon la hauteur
if($src_width<$src_height){
$dst_width = 200;
$dst_height = $dst_width*$src_height/$src_width;
} else {
$dst_height = 200;
$dst_width = $dst_height*$src_width/$src_height;
}

$dst_image = imagecreatetruecolor($dst_width, $dst_height);

// On pourrait creer une ressource selon le type mime de fichier

if(!empty($extensionMin)){
if($extensionMin == 'jpeg'){
$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
}
}

if(!empty($extensionMin)){
if($extensionMin == 'png'){
$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)
}
}



//$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
//$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)

$dst_x = 0;
$dst_y = 0;
$src_x = 0;
$src_y = 0;

$isResampled = imagecopyresampled(
$dst_image,
$src_image,
$dst_x,
$dst_y,
$src_x,
$src_y,
$dst_width,
$dst_height,
$src_width,
$src_height
);

if($isResampled){
$dst_resampled_file = $rep;
imagejpeg($dst_image, $dst_resampled_file,75);

// Recadrage
$im = imagecreatefromjpeg($dst_resampled_file);
$croppedRessource = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 200]);
$dst_cropped_file = $rep;
imagejpeg($croppedRessource, $dst_cropped_file,75);

// var_dump($dst_cropped_file);

} else {
$error['avatar'] = 'Problème lors du recadrage';
}
}
}
} else {
$error['avatar'] = "Une erreur s'est produite lors de l'envoi du fichier";
}


}

// elseif ($exception === 2) {
// $code = 2; //Une erreur SQL est survenue
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 3) {
// $code = 3; //Le mail existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 6) {
// $code = 6; //Le mail et le pseudo existe deja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 5) {
// $code = 5; //Le pseudo existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// }


} elseif (isset($_POST['desactiver'])) {
$id = $_POST['id'];
$status = '1';
$role = $_POST['role'];
//On recupere les valeurs hydrate
$desactiver = new Utilisateurs($id,'','','', $status);
//On actualise le message
$exception = $desactiver->desactiver($id);
if ($exception == 26){
$code = 26; //le profil à été desactiver
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
} elseif ($exception == 27) {
$code = 27; //le profil n'a pas été desactiver
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
}
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// Code pour traiter l'action "Désactiver"

} elseif (isset($_POST['reactiver'])) {
$id = $_POST['id'];
$status = '0';
$role = $_POST['role'];
//On recupere les valeurs hydrate
$reactiver = new Utilisateurs($id,'','','', $status);
//On actualise le message
$exception = $reactiver->reactiver($id);
if ($exception == 28){
$code = 28; //le profil à été reactiver
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
} elseif ($exception == 29) {
$code = 29; //le profil n'a pas été reactiver
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
}
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// Code pour traiter l'action "reactiver"

} elseif (isset($_POST['supprimer'])) {
$id = $_POST['id'];
//On recupere les valeurs hydrate
$supprimer = new Utilisateurs($id);
//On actualise le message
$exception = $supprimer->supprimer($id);
if ($exception == 30){
$code = 30; //le profil à été supprimer
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
} elseif ($exception == 31) {
$code = 31; //le profil n'a pas été supprimer
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
exit;
}
header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// Code pour traiter l'action "Supprimer"
}

break;

case 2: //Mot de passe uniquement
/// Modification que du mot de passse ///
$id = $_POST['id'];
//Mot de passe inscription mdpInscription
$mdpInscription = trim(filter_input(INPUT_POST, 'mdpInscription', FILTER_SANITIZE_STRING));
if(!empty($mdpInscription)){
if(strlen($mdpInscription)<6 || strlen($mdpInscription)>20){
$error["mdpInscription"] = 'Le mot de passe n\'est pas compris entre 6 et 20 caractéres.';
}
} else {
$error["mdpInscription"] = 'Le mot de passe est obligatoire.';
}

//Mot de passe inscription mdpConfirmationInscription
$mdpConfirmationInscription = trim(filter_input(INPUT_POST, 'mdpConfirmationInscription', FILTER_SANITIZE_STRING));
if(!empty($mdpConfirmationInscription)){
if(strlen($mdpConfirmationInscription)<6 || strlen($mdpConfirmationInscription)>20){
$error["mdpConfirmationInscription"] = 'Le mot de passe n\'est pas compris entre 6 et 20 caractéres.';
}
} else {
$error["mdpConfirmationInscription"] = 'Le mot de passe est obligatoire.';
}

//Verification des mots de passe
if($mdpInscription && $mdpConfirmationInscription) {
if($mdpInscription != $mdpConfirmationInscription) {
$error["mdpInscription"] = 'Les mots de passe sont différents.';
$error["mdpConfirmationInscription"] = 'Les mots de passe sont différents.';
}
}

if(empty($error)){
//Affectation des valeurs

$mdp = $mdpConfirmationInscription;

//Crytptage du mot de passe mdpc
$mdpc=password_hash($mdp, PASSWORD_DEFAULT);
// var_dump($mdpInscription);
// var_dump($mdpc);
// var_dump($id);
// exit;
//On recupere les valeurs hydrate
$maj = new Utilisateurs($id,'','', $mdpc);
//On actualise le message
$exception = $maj->mdpadmin($id);
if ($exception == 32){
$code = 32; //Mot de passe mis a jour
header("Location: /controllers/ficheInscrit-ctrl.php?code=".$code."&id=".$id);
exit;
} elseif ($exception == 33) {
$code = 33; //Mot de passe pas mis a jour
header("Location: /controllers/ficheInscrit-ctrl.php?code=".$code."&id=".$id);
exit;
}
header("Location: /controllers/ficheInscrit-ctrl.php?code=".$code."&id=".$id);
}
break;
}
}


// //Pour avoir date dans le bon sens $result fait reference a la variable qui recupere tout findall
// foreach($result as $child):
// $birth = $child->birthdate;
// $timeStamp = strtotime($birth);
// $newDate = date("d-m-Y",$timeStamp);
// $child->birthdate = $newDate;
// endforeach;
// //Fin date dans bon sens


include(dirname(__FILE__).'/../views/ficheInscrit.php');
Merci par avance pour votre aide
@+ Filou

Re: [RESOLU] Gestion mot de passe utilisateur

par filou80 » 08 mars 2023, 04:27

Merci pour vos réponses, je vais faire un autre formulaire que pour le mot de passe.

Encore merci à vous et merci au forum.
@+ Filou

Re: Gestion mot de passe utilisateur

par two3d » 08 mars 2023, 02:02

Dans ta requête SQL (UPDATE), ne touche pas au mot de passe et enlève les vérifications sur le mot de passe lorsque tu modifie.

Re: Gestion mot de passe utilisateur

par or 1 » 07 mars 2023, 22:24

faire une page spécifique pour l'administrateur où il y a une partie pour tout modifier sauf le mot de passe, et un second formulaire pour mettre un nouveau mot de passe.

Gestion mot de passe utilisateur

par filou80 » 07 mars 2023, 21:54

Bonjour,

Je suis entrain de faire l'interface utilisateur, je me pose une question mais je ne sais pas comment résoudre mon problème.
Via l'interface administrateur, il a accès a tous les profils mail pseudo etc et le mot de passe.
par contre l'administrateur récupère le mot de passe crypté normal.
Le soucis c'est quand l'administrateur doit modifié le profil sans toucher au mot de passe (dessus il y a contrôle de la longueur etc....) a chaque fois il est bloqué sur le contrôle de la longueur (car crypté) et il est également obliger d'en remettre un car sinon la modification ne prend pas (mot de passe obligatoire).
Je voudrais que quand je modifie que le pseudo ou mail l'ancien mot de passe reste identique.
Question bête comment faire car la au niveau logique je suis bloqué.
pour les contrôles on peut les modifiés mais comment faire pour le mot de passe.

Merci par avance pour votre aide.
@+ Filou