Partage
  • Partager sur Facebook
  • Partager sur Twitter

Informations

    19 septembre 2017 à 0:00:37

    Bonsoir à tous,

    Je poste ce sujet ici car je trouve pas quel endroit le poser ^^

    Me voilà dont aujourd'hui pas pour du code mais des informations qui pourrais m'être utile.

    J'ai créer un espaces membres avec le système MVC qui s'organise de la sorte

    - Page d'accueil qui contient un slideshow

    - Page de connexion qui me permet de me connecter

    - Page d'inscription qui me permet de m'inscrire

    - Page de profil qui me permet de consulter et modifier mes données.

    - Page de déconnexion qui me permet de me déconnecter.

    - Système Multi-Langages

    Donc, voici mes questions.

    - Au moment de l'inscription je demande, le nom, prénom et adresse email de l'utilisateur et par la suite envoyer un mot de passe provisoire à l'utilisateur sur l'adresse e-mail renseigné, est-ce une bonne idée ?

    Je vous remercie d'avance de vos précisions. Bonne soirée. 

    • Partager sur Facebook
    • Partager sur Twitter
    Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
      19 septembre 2017 à 0:11:31

      Ce n'est pas une mauvaise idée tant que :

      • Le mot de passe provisoir n'est pas trop simple,
      • Le mot de passe provisoir n'est pas ultra compliqué,
      • Le mot de passe provisoir n'est valide qu'une seule fois,
      • Le mot de passe provisoir est demandé à être changé lors de la première connexion,
      • Le mot de passe est crypté en base de données (password_hash()).
      • Partager sur Facebook
      • Partager sur Twitter
      Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
        19 septembre 2017 à 0:24:59

        L'idée est pertinente dans le mesure où ce faisant, vous forcez la validation de l'adresse email.

        Mais attention aux adresses email jetables.

        Attention également à ce que votre message ne tombe pas directement dans les spams du destinataire (bien configurer le serveur mail). Il peut parfois ne jamais arriver à destination ! (Champs spf & Co)

        -
        Edité par Maels1991 19 septembre 2017 à 0:25:32

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2017 à 0:39:27

          +1 maels, j'avais oublié cette partie (le mail en lui-même).

          Il est vrai que pour mettre ce système en place, il est important de s'assurer de la réception des mails sur les différentes plateformes du web.

          Tu peux aussi choisir de blacklister des domaines jetables, tel yopmail et ses amis pour éviter que le mot de passe soit perdu dans la nature ...

          • Partager sur Facebook
          • Partager sur Twitter
          Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
            20 septembre 2017 à 0:32:51

            Bonsoir, je vous remercie de vos réponses rapide. Donc comment pourrais-je construire ceci ? Le mot de passe provisoire doit être crypter en BCRYPT ? Donc comment le déchiffrer pour l'envoyer par email ?

            Ps : J'avais oublié de préciser une question. Lorsque que je me connecte je redirige l'utilisateur sur sa page de profil. C'est mieux que je fasse apparaître son identifiant ou son nom et son prénom dans dans l'URL ? En sachant que j'utilise du Rewriting avec un fichier. Htaccess pour mes URL. 

            Identifiant : (série de chiffre à 8 caractères ex : 567843278 qui est générer lors de l'inscription). 

            • Partager sur Facebook
            • Partager sur Twitter
            Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
              20 septembre 2017 à 9:24:19

              Bonjour,

              A mon sens, si vous souhaitez envoyer le mot de passe par email, il faut le faire au moment de l'inscription. Après, ce serait trop tard compte tenu de l'irréversibilité de l'algorithme de hachage. 

              Par ailleurs, pour l'URL, vous pouvez utiliser nom + prénom mais pas uniquement. Les URL doivent être uniques. Comment feriez-vous si vous vous trouviez avec deux utilisateurs homonymes ?

              Vous pourriez avoir une URL du genre : monsite.com/membres/439324242/claude-monet.html

              -
              Edité par Maels1991 20 septembre 2017 à 9:25:59

              • Partager sur Facebook
              • Partager sur Twitter
                20 septembre 2017 à 11:20:08

                Bonjour, merci de ta réponse.

                Oui c'est vrai, cela n'est pas bête du tout, donc faudrait partir de cette idée

                hhtp://monsite.com/membres/identifiant-gnerer/nomprenom ?

                Edit : 

                Lors de mon url rewriting, c'est mieux de rewritedes urls complètes ?

                Exemple : 

                index.php?core=membre&act=compte&identifiant=....&nom=...&prenom=... ?

                Quel est la meilleure façon a adopter ?

                -
                Edité par Neveer 20 septembre 2017 à 11:22:40

                • Partager sur Facebook
                • Partager sur Twitter
                Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                  20 septembre 2017 à 12:54:51

                  Pour l'URL, on s'est bien compris.

                  Par contre, au niveau du rewriting, y'a pas de demie-mesure : on réécrit tout ! :)

                  monsite.com/users/toto-45.html

                  Après, tant que c'est développé dans le respect des bonnes pratiques et que ça fonctionne ... c'est gagné !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 septembre 2017 à 13:18:40

                    D'accord, donc on s'est compris, par contre c'est juste pour l'inscription que je conprend pas, je m'explique : 

                    Je demandes les informations suivantes lors de l'inscription : 

                    • Nom d'utilisateur
                    • Nom
                    • Prénom
                    • Adresse email

                    En voulant envoyer le mot de passe par email, ce dernier il ne faut pas qu'il soit hashé ?

                    Et comment faire pour ne pas qu'il soit hasher ? C'est ça que je ne comprend pas.

                    Merci de tes précisions :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                      20 septembre 2017 à 14:42:28

                      Normalement, c'est pas trop recommandé d'envoyer les mots de passe par email.

                      Mais puisque c'est un choix que vous faites, non, le mot de passe doit être envoyé en clair.

                      Normalement on hache un mot de passe qui n'a pas déjà été haché :D C'est ce mot de passe non haché que vous devez expédier par email.

                      Vous auriez qqchose comme :

                      $mdp = uniqid();

                      $mdpHash = bcrypt($mdp);

                      mail(... $mdp);

                      Tout simplement :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 septembre 2017 à 15:01:51

                        > Le mot de passe provisoir n'est valide qu'une seule fois,

                        Juste sur ce point, je dirais plutôt qu'il faut que le mot de passe provisoire ne sert qu'à arriver sur une page où on est obligé de choisir un nouveau mot de passe. Parce qu'il arrive qu'on ferme la page de changement de mot de passe avant d'avoir changé le mdp, donc si le mot de passe envoyé par mail n'est valable qu'une fois c'est ballot.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 septembre 2017 à 15:12:16

                          melepe a écrit:

                          > Le mot de passe provisoir n'est valide qu'une seule fois,

                          Juste sur ce point, je dirais plutôt qu'il faut que le mot de passe provisoire ne sert qu'à arriver sur une page où on est obligé de choisir un nouveau mot de passe. Parce qu'il arrive qu'on ferme la page de changement de mot de passe avant d'avoir changé le mdp, donc si le mot de passe envoyé par mail n'est valable qu'une fois c'est ballot.


                          En effet, c'était l'idée du truc. Ce qui n'empêche que ce mot de passe DOIT être changé lors de la première connexion !
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                            20 septembre 2017 à 15:25:25

                            D'accord,

                            Après reflexion, je préfère demander ces informations pour l'inscription : 

                            • Nom d'utilisateur
                            • Nom
                            • Prénom
                            • Adresse email
                            • Mot de passe
                            • Mot de passe de confirmation

                            Qu'en pense-tu ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                              20 septembre 2017 à 15:31:31

                              Et abandonner l'envoi par mail ?

                              Ca fait l'affaire, mais si tu veux valider une adresse, il te faut un moyen de le faire, par token par exemple ...

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                                20 septembre 2017 à 16:54:43

                                A ce moment-là, on parle d'activer le compte via un lien à usage unique.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 septembre 2017 à 20:58:39

                                  Lors de mon inscription je demande de mentionner une adresse email valide, un mail sera envoyé à l'adersse email pour confirmer son compte

                                  Édit : le rewrite et linscription c'est fini.

                                  Je vois exposé un dernier truc en relation avec ma connexion et je clos le sujet.

                                  Lorsque je me connecte je veux afficher un message flash au dessus de mon body

                                  mais une fois qu'il est afficher je veux l'effacer de la session par la suite. Le soucis est que mon message n'apparaît jamais. voici mon code : 

                                  <?php if(isset($_SESSION['flash'])): ?>
                                  	<?php foreach ($_SESSION['flash'] as $type => $message): ?>
                                  		<div id="AlertFlash" class="AlertFlash <?= $type; ?>Flash">
                                  			<?= $message; ?>
                                  		</div>
                                  		<?php unset($_SESSION['flash']); ?>
                                  	<?php endforeach; ?>
                                  <?php endif; ?>

                                  Merci de votre aide.

                                  -
                                  Edité par Neveer 21 septembre 2017 à 20:33:20

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                                    21 septembre 2017 à 21:07:22

                                    Up Please
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                                      21 septembre 2017 à 21:50:45

                                      Bonsoir,

                                      Que contient votre session lorsque vous vous connectez ?

                                      <pre>
                                          print_r($_SESSION["flash"])
                                      </pre>



                                      -
                                      Edité par Maels1991 21 septembre 2017 à 21:51:51

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 septembre 2017 à 21:53:41

                                        Tu n’as pas tout implémenté je crois.

                                        si tu suis le tuto Grafikart, reprends le, sinon je plussoierais maels1991.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                                          21 septembre 2017 à 21:56:23

                                          Merci Ealon, mes chevilles en avaient besoin :p
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            21 septembre 2017 à 23:29:57

                                            Je suis aucun tuto, c'est juste un ancien code de mon ancien site.

                                            J'ai créer une classe afin de faire ceci proprement. Mais j'ai plein, d'erreur.

                                            D'abord, voici mes bouts de code.

                                            (Mon message flash sera affiché juste au début du body, code : 

                                            <?php
                                            	$MessageFlash = new MessageFlash();
                                            	if ($MessageFlash->GetFlash('Warning')) {
                                            		$MessageFlash->GetFlash('Warning');
                                            	}
                                            ?>

                                            Dans ma page de traitement, le message : 

                                            <?php
                                                $MessageFlash = new MessageFlash();
                                                $MessageFlash->Flash('Warning', "Message de test");
                                            ?>

                                            Ma class : 

                                            <?php
                                            
                                            class MessageFlash
                                            {
                                                
                                                public function Flash($type, $message) {
                                                    if (!isset($_SESSION['flash'])) {
                                                        $_SESSION['flash'] = array();
                                                        $_SESSION['flash']['uri'] = $_SERVER['REQUEST_URI'];
                                                    }
                                                    $_SESSION['flash'][$type] .= $message;
                                                }
                                            
                                                public function UnsetFlash() {
                                                    if(isset($_SESSION['flash'])) {
                                                        if($_SERVER['REQUEST_URI'] != $_SESSION['flash']['uri']) {
                                                            $_SESSION['flash'] = NULL;
                                                        }
                                                    }
                                                }
                                            
                                                public function GetFlash($type) {
                                                    if (isset($_SESSION['flash'])) {
                                                        echo $_SESSION['flash'][$type];
                                                    } else {
                                                        return $_SESSION['flash'] = '';
                                                    }
                                                    
                                                }
                                            }

                                            Mes erreurs sur ma page d'accueil : 

                                            Warning: Illegal string offset 'Warning' in C:\xampp\htdocs\Mvc_Final\Library\_Common\SessionFlash.Class.php on line 24
                                            
                                            Notice: Uninitialized string offset: 0 in C:\xampp\htdocs\Mvc_Final\Library\_Common\SessionFlash.Class.php on line 24

                                            Mes erreurs lorsque je me connecte : 

                                            Warning: Illegal string offset 'Warning' in C:\xampp\htdocs\Mvc_Final\Library\_Common\SessionFlash.Class.php on line 11
                                            
                                            Fatal error: Uncaught Error: Cannot use assign-op operators with string offsets in C:\xampp\htdocs\Mvc_Final\Library\_Common\SessionFlash.Class.php:11 Stack trace: #0 C:\xampp\htdocs\Mvc_Final\Library\_Membres\TraitementMembres.Class.php(49): MessageFlash->Flash('Warning', 'Message de test') #1 C:\xampp\htdocs\Mvc_Final\Control\_Membres\_Connexion\Connexion.php(76): TraitementMembres->ConnexionMembre('...', '...') #2 C:\xampp\htdocs\Mvc_Final\index.php(44): include('C:\\xampp\\htdocs...') #3 {main} thrown in C:\xampp\htdocs\Mvc_Final\Library\_Common\SessionFlash.Class.php on line 11

                                            Si cela peut vous inspirer mdrr





                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Portfolio en cours de construction : http://www.dev-neveer.esy.es/index.php?controleur=accueil&action=index
                                              22 septembre 2017 à 10:45:40

                                              Un Github qu'on pourrait consulter ?

                                              L'erreur est claire : votre session ne contient aucune clé "Warning".

                                              L'enregistrement de votre flash ne fonctionne pas du tout.

                                              Essayez de semer des die() à chaque étape de votre processus pour débogguer.

                                              -
                                              Edité par Maels1991 22 septembre 2017 à 10:47:03

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Informations

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown