For qui ne s'arrête pas
Résolu
Daniel
-
Daniel -
Daniel -
Bonjour,
A partir d'une table contenant ID, MdpClair, MdpCrypte, je souhaiterai pour chaque MdpClair
récupérer le MdpCrypte.
La requête pour récupérer les ID et les MdpClair fonctionne (j'arrive à les afficher). J'ai également le nombre de lignes à traiter pour la boucle for mais ensuite la boucle for ne s'arrête pas à chaque ligne pour attendre le submit avant le prochain $i
La variable $mdp est bien dans l'input comme souhaité mais il y a autant d'input que d'enregistrement. ;-(
Voici mon code :
Merci d'avance pour m'aider à comprendre ce problème qui empêche la boucle de s'arrêter à chaque enregistrement.
Ce n'est pas tant le défaut d'affichage qui me gêne (ça, à la limite je m'en tape), mais c'est plus pour la suite avec l'update, j'ai comme le pré-sentiment que je 1er MdpCrypte créé va être dans toutes les lignes de la table.
Daniel
A partir d'une table contenant ID, MdpClair, MdpCrypte, je souhaiterai pour chaque MdpClair
récupérer le MdpCrypte.
La requête pour récupérer les ID et les MdpClair fonctionne (j'arrive à les afficher). J'ai également le nombre de lignes à traiter pour la boucle for mais ensuite la boucle for ne s'arrête pas à chaque ligne pour attendre le submit avant le prochain $i
La variable $mdp est bien dans l'input comme souhaité mais il y a autant d'input que d'enregistrement. ;-(
Voici mon code :
<?php //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //on inclut le fichier de connexion à la bdd require_once "./secure/cnxBdd.php"; ?> <!DOCTYPE html> <html> <head> <TITLE>Cryptage d'un mot</TITLE> </head> <body> <?php $table = $bdd->query('SELECT ID, MdpClair FROM Identifiants_ANEG'); $table->execute(); $table_bdd = $table->fetchall(); // Passage en commentaire après vérification de la présence des données /* foreach($table_bdd as $row){ echo '- '.$row["ID"].' - '.$row["MdpClair"].'<br>'; } */ // Compte le nb de ligne à traiter $max = $table->rowCount(); // $max = nombre d'éléments de $table echo $max .'<br>'; // Boucle pour valider le mdpClair et généré le MdpCrypte for( $i = 0; $i < $max; $i++ ) { echo $table_bdd[$i]['MdpClair'].'<br>'; $mdp=$table_bdd[$i]["MdpClair"]; echo 'Cette page sert à utiliser le cryptage du serveur pour remplir le fichier .htpasswd<BR>'; echo '<BR>'; echo '<form action="'. $_SERVER['REQUEST_URI'] .'">'; echo '<input type="text" name="mdp" value="'. $mdp .'">'; echo '<input type="submit" value="Crypter !">'; echo '</form>'; if ( isset($_GET['mdp'])) { echo 'Mot de passe en clair: ' . $_GET['mdp'] . '<BR>Mot de passe crypté :' . crypt( $_GET['mdp'] ); /* étape suivante $maj = $bdd->query('UPDATE Identifiants_ANEG SET MdpCrypte = crypt ($_GET['mdp'])'); $maj->execute(); */ } } ?> </body> </html>
Merci d'avance pour m'aider à comprendre ce problème qui empêche la boucle de s'arrêter à chaque enregistrement.
Ce n'est pas tant le défaut d'affichage qui me gêne (ça, à la limite je m'en tape), mais c'est plus pour la suite avec l'update, j'ai comme le pré-sentiment que je 1er MdpCrypte créé va être dans toutes les lignes de la table.
Daniel
Configuration: Windows / Firefox 83.0
A voir également:
- For qui ne s'arrête pas
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
2 réponses
Bonjour,
Avant tout, je t'invite à lire et à appliquer les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ainsi que là :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite, je pense qu'il est préférable d'utiliser la fonction password_hash plutôt que la fonction crypt.
Bref, ton code devrait ressembler à un truc du genre
Avant tout, je t'invite à lire et à appliquer les conseils donnés ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ainsi que là :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite, je pense qu'il est préférable d'utiliser la fonction password_hash plutôt que la fonction crypt.
Bref, ton code devrait ressembler à un truc du genre
<?php //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //on inclut le fichier de connexion à la bdd require_once "./secure/cnxBdd.php"; //Liste des mots de pass $sql = 'SELECT ID, MdpClair FROM Identifiants_ANEG'; try{ $table = $bdd->prepare($sql); $table->execute(); $table_bdd = $table->fetchAll();//On stocke le résultat de la requête dans un array }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } //récupération PROPRE des variables du submit AVANT de les utiliser $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL;* $id = !empty($_POST['id']) ? $_POST['id'] : NULL; if($mdp && $id ){ $passwordCrypt = password_hash($mdp); // ou crypt($mdp) si tu y tiens... $sql = 'UPDATE Identifiants_ANEG SET MdpCrypte = :mdpcrypt WHERE ID=:id'; $datas = array(':mdpcrypt'=>$passwordCrypt , ':id'=>$id); try{ $table = $bdd->prepare($sql); $table->execute($datas); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } } ?> <!DOCTYPE html> <html> <head> <title>Cryptage d'un mot</title> <meta charset="utf-8"> </head> <body> <?php // Boucle pour valider le mdpClair et généré le MdpCrypte foreach ($table_bdd as $K=>$V){ $MdpClair = $V['MdpClair']; $ID = $V['ID']; echo 'Cette page sert à utiliser le cryptage du serveur pour remplir le fichier .htpasswd<BR>'; echo '<BR>'; echo '<form action="" method="post">'; echo '<input type="text" name="mdp" value="'. $MdpClair .'">'; echo '<input type="hidden" name="id" value="'. $ID .'">'; // permet de savoir l'id du password à hasher echo '<input type="submit" value="Crypter !">'; echo '</form>'; } ?> </body> </html>