Partage
  • Partager sur Facebook
  • Partager sur Twitter

Enregistremen

    26 mai 2017 à 17:53:23

    ...

    -
    Edité par julienmop 3 juin 2017 à 12:28:06

    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2017 à 22:13:57

      Tu prends le dernier id enregistré dans la bdd non? Ils mettent un exemple ici pour une connexion en PDO. (C'est plutôt du php que du javascript, c'est peut-être mieux de demander sur le forum php).
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2017 à 22:47:00

        Le système de gestion de base de données fait ça pour toi normalement. Par exemple avec MySQL tu peux utiliser LAST_INSERT_ID() qui retourne l'id du dernier élément inséré lors de ta session MySQL (pas de risque de crosstalk avec d'autres requêtes).

        Si ce que tu veux faire, c'est envoyer progressivement tes données en AJAX, tu devrais enregistrer cette valeur dans une variable de session et ouvrir/fermer une connexion à la bdd à chaque requête AJAX, si non tu es vulnérable aux attaques par déni de service. Tu peux aussi enregistrer toutes les valeurs entrées dans la session, et attendre que tous les champs soient remplis pour faire un seul INSERT. C'est ce qui me semble le plus approprié.

        Dans tous les cas tu dois simuler des situations où l'utilisateur serait distrait ou malveillant et enverrait plusieurs fois le contenu des champs. Par exemple, il ne faut pas que, en rentrant plusieurs fois son nom, l'utilisateur crée plusieurs entrées dans la base de données dont seulement la dernière serait complète. Il faut aussi généraliser le cas : permettre que n'importe quel champ (si tu décides de ne pas stocker les valeurs dans la session) initie le INSERT

        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2017 à 14:12:15

          Thdv

          -
          Edité par julienmop 3 juin 2017 à 12:27:41

          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2017 à 17:19:09

            La session c'est le serveur qui la gère. Tu ne dois jamais donner ce genre de pouvoir au client, donc oublie jQuery. Rends-toi compte : tu décides de ce que tu fais avec ta base de données en fonction de cette variable. Si tu autorises le client à la changer, il peut faire en sorte que chaque opération soit un INSERT en vidant la variable par exemple. Fais ça exclusivement côté PHP. Ta page web, elle ne fait qu'envoyer le contenu des champs avec des requêtes AJAX et c'est tout, et ce sera toujours comme ça, quelque soit l'application. Jamais tu ne brancheras directement un script côté client avec ta base de données. C'est MAL.

            Pour le reste, tu as besoin d'apprendre des choses sur les sessions. Là je ne peux pas t'aider, je ne te ferai pas un cours, mais si tu veux séparer tes utilisateurs il faut simplement mettre fin à la session. La session c'est par navigateur que c'est divisé, il faut que l'utilisateur suivant utilise le même ordinateur avec le même navigateur pour pouvoir éventuellement utiliser la même session.

            Pour ce qui est de faire un seul INSERT, tu as le droit de dire à ton prof que c'est un con si tu as un bon argument. En l’occurrence c'est pas malin de faire un INSERT dans la bdd si tu n'es pas certain que l'utilisateur ira jusqu'au but, parce que tu vas te retrouver avec des entrées incomplètes. Il y a plein de raisons qui peuvent pousser un utilisateur à renoncer, ou le réseau à planter, ou n'importe quoi d'autre. Tu peux envoyer les données au serveur petit à petit, ça, pourquoi pas, mais remplir la base de données petit à petit c'est exposer directement la base de données aux actions du client, et on a dit que c'était MAL ;) Tu veux une frontière infranchissable entre ta base de données et le monde extérieur et tu veux valider les données côté serveur AVANT de faire quoi que ce soit avec la bdd. C'est ça la bonne façon de faire. Maintenant, tu veux avoir une bonne note, ton prof t'a donné un exercice, fais ce qu'il te demande, mais n'oublie pas cette maxime "never trust user input".

            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2017 à 17:56:07

              Thhj

              -
              Edité par julienmop 3 juin 2017 à 12:27:12

              • Partager sur Facebook
              • Partager sur Twitter
                28 mai 2017 à 18:38:08

                Pas en JS. Tu n'as pas besoin de JS ici, tu ne dois pas utiliser de JS ici. Tu as une session qui peut enregistrer ton ID et le rappeler à la prochaine requête AJAX. Cette donnée n'a pas besoin, ne doit pas, jamais, quitter ton serveur.

                Et ça c'est indépendant de mon avis sur la consigne du travail à faire. C'est juste la base de la séparation client / serveur.

                -
                Edité par tabouretBleu 28 mai 2017 à 18:38:47

                • Partager sur Facebook
                • Partager sur Twitter
                  29 mai 2017 à 23:17:16

                  Effectivement j'ai réussi a ne pas passer par le JavaScript et faire ca du côté PHP.

                  Seulement ca fonctionnait jusqu'à ce midi mais ce soir plus rien.

                  Le soucis c'est que ca fait sans cesse des update.

                  En fait il n'y a pas de connexion pour l'utilisateur, il arrive direct sur index.HTML avec les champ à remplir.

                  Ce qu'il me faudrait c'est qu'au rechargement de la page ( ce qui simule l'arrivé d'une nouvelle personne sur le formulaire) ma variable de session se supprime et que mon script me fasse un INSERT au lieu d'un Update.

                  Mais ce soir impossible de refaire ca, pourtant il ne me semble pas avoir touche à quelque chos

                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 mai 2017 à 8:51:24

                    Le rechargement de la page ne simule pas l'arrivée d'une nouvelle personne, ça simule la même personne qui navigue dans le site. C'est normal que la session persiste parce que c'est une session de navigation, et si tu veux qu'elle se ferme il vaut mieux qu'elle expire après un certain temps (c'est déjà le cas) ou que l'utilisateur ait la possibilité de se déconnecter avec un bouton de déconnexion.

                    Sur aucun site tu ne peux enregistrer un nouvel utilisateur depuis un compte utilisateur existant. Ça n'aurait pas de sens, tu es déjà inscrit, pourquoi créer un compte ? Quand on est authentifié sur un site, le formulaire d'inscription n'est même plus visible, et c'est normal.

                    Bon, là c'est un exercice qu'on te donne et visiblement l'authentification ne fait pas partie de ce qu'on te demande, donc ce que je ferais à ta place c'est un lien de déconnexion qui pointe vers une page PHP avec simplement un session_destroy() et un header("location:index.html"). Par contre, ce que tu devrais faire normalement, c'est créer un système d'authentification (en général je le programme même avant). Quand on n'est pas authentifié, tu affiches le formulaire d'inscription ET de connexion. Si l'utilisateur remplit le formulaire de connexion, tu lui donnes accès à ton contenu et tu caches tes deux formulaires, si il remplit le formulaire d'inscription, tu crées un compte, tu lui demande peut-être de la valider par mail en lui envoyant un lien de confirmation pour l'activer, et tu caches aussi tes deux formulaires.

                    -
                    Edité par tabouretBleu 30 mai 2017 à 8:58:49

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Enregistremen

                    × 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