{"id":24994,"date":"2021-05-29T13:32:00","date_gmt":"2021-05-29T10:32:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24994"},"modified":"2021-10-18T02:10:49","modified_gmt":"2021-10-17T23:10:49","slug":"comment-creer-un-systeme-de-connexion-php-pour-votre-site-web","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-creer-un-systeme-de-connexion-php-pour-votre-site-web\/","title":{"rendered":"Comment cr\u00e9er un syst\u00e8me de connexion PHP pour votre site Web"},"content":{"rendered":"<p>Vous cherchez \u00e0 int\u00e9grer un syst\u00e8me de login en PHP? Dans cet article, je vous montre comment cr\u00e9er un flux de connexion de base en PHP. Nous allons cr\u00e9er un formulaire de connexion, valider les informations d&rsquo;identification et rediriger l&rsquo;utilisateur sur la page du compte. J&rsquo;ajouterais \u00e9galement un code pour d\u00e9connecter l&rsquo;utilisateur. De plus, nous afficherons les messages d&rsquo;erreur si de mauvaises informations d&rsquo;identification sont saisies.<\/p>\n<p>Pour le tutoriel, je suppose que vous utilisez le hachage &lsquo;md5&rsquo; pour stocker le mot de passe. J&rsquo;\u00e9crirais le code en tenant compte du hachage md5 d&rsquo;une cha\u00eene. Vous utilisez peut-\u00eatre un autre algorithme. Dans ce cas, vous devez modifier la requ\u00eate selon votre algorithme.<\/p>\n<p>Afin d&rsquo;int\u00e9grer le flux de connexion, nous avons besoin d&rsquo;une table de base de donn\u00e9es qui stocke les d\u00e9tails de l&rsquo;utilisateur. Par rapport \u00e0 ce tableau, nous validons si l&rsquo;utilisateur a saisi les informations d&rsquo;identification correctes ou non. Si les informations d&rsquo;identification de l&rsquo;utilisateur sont correctes, alors seulement ils devraient avoir acc\u00e8s aux pages s\u00e9curis\u00e9es.<\/p>\n<p>Dans mon cas, j&rsquo;ai cr\u00e9\u00e9 une table \u00ab\u00a0utilisateurs\u00a0\u00bb et ajout\u00e9 des entr\u00e9es factices. J&rsquo;ai \u00e9galement ajout\u00e9 une colonne &lsquo;statut&rsquo; qui sera utilis\u00e9e pour savoir si un compte est actif ou non. Cette colonne a le type de donn\u00e9es ENUM avec les valeurs 0 et 1.<\/p>\n<ul>\n<li>1: le compte est actif<\/li>\n<li>0: le compte n&rsquo;est pas actif<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20431-6081f068055fd.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20431-6081f068055fd.png\" alt=\"Comment cr\u00e9er un syst\u00e8me de connexion PHP pour votre site Web\" ><\/a><\/p>\n<h3>Cr\u00e9er un formulaire de connexion<\/h3>\n<p>Pour commencer, cr\u00e9ons un formulaire de connexion o\u00f9 les utilisateurs peuvent saisir leurs informations d&rsquo;identification. J&rsquo;utilise un framework Bootstrap pour cr\u00e9er un formulaire de connexion. Mon <code>index.php<\/code>fichier contient le code ci-dessous.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Login Form&lt;\/title&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.3.1\/css\/bootstrap.min.css\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"container\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"row\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-md-6\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h3&gt;Login Form&lt;\/h3&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php if(!empty($error_message)) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"alert alert-danger\"&gt;&lt;?php echo $error_message; ?&gt;&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputEmail1\"&gt;Email address&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"email\" class=\"form-control\" id=\"exampleInputEmail1\" name=\"email\" placeholder=\"Email\" required \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputPassword1\"&gt;Password&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"password\" class=\"form-control\" id=\"exampleInputPassword1\" name=\"password\" placeholder=\"Password\" required \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Le code ci-dessus affichera le formulaire de connexion comme indiqu\u00e9 dans la capture d&rsquo;\u00e9cran ci-dessous.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20431-6081f06877449.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20431-6081f06877449.png\" alt=\"Comment cr\u00e9er un syst\u00e8me de connexion PHP pour votre site Web\" ><\/a><\/p>\n<p>J&rsquo;ai ajout\u00e9 la variable <code>$error_message<\/code>dans le code qui imprimera les erreurs de connexion.<\/p>\n<h3>Code PHP pour valider les informations d&rsquo;identification des utilisateurs<\/h3>\n<p>Vous \u00eates pr\u00eat avec le formulaire de connexion et la table de base de donn\u00e9es. Ensuite, lors de la soumission d&rsquo;un formulaire, nous devons \u00e9crire du code PHP qui v\u00e9rifie les informations d&rsquo;identification de l&rsquo;utilisateur par rapport aux enregistrements de la base de donn\u00e9es. Si les d\u00e9tails sont corrects, connectez l&rsquo;utilisateur au syst\u00e8me et redirigez-le vers la <code>myaccount.php<\/code>page.<\/p>\n<p>Cr\u00e9ez un <code>config.php<\/code>fichier et ajoutez un code pour la connexion \u00e0 la base de donn\u00e9es.<\/p>\n<pre><code>&lt;?php\n$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');\n\u00a0\nif ($conn-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0echo \"Error: \". $conn-&gt;connect_error;\n}\n?&gt;<\/code><\/pre>\n<p>Remplacez les espaces r\u00e9serv\u00e9s par les valeurs r\u00e9elles.<\/p>\n<p>Maintenant, dans le <code>index.php<\/code>fichier avant le d\u00e9but de la balise html, ajoutez le code ci-dessous.<\/p>\n<pre><code>&lt;?php\nsession_start();\n\u00a0\u00a0\nrequire_once('config.php');\n\u00a0\u00a0\n\/\/if user is logged in redirect to myaccount page\nif (isset($_SESSION['id'])) {\n\u00a0\u00a0\u00a0\u00a0header('Location: myaccount.php');\n}\n\u00a0\u00a0\n$error_message = '';\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0extract($_POST);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!empty($email) &amp;&amp; !empty($password)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$sql = \"SELECT id, status FROM users WHERE email = '\".$conn-&gt;real_escape_string($email).\"' AND password = '\".md5($conn-&gt;real_escape_string($password)).\"'\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $conn-&gt;query($sql);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($result-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$row = $result-&gt;fetch_assoc();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($row['status']) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$_SESSION['id'] = $row['id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Location: myaccount.php');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$error_message = 'Your account is not active yet.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$error_message = 'Incorrect email or password.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$error_message = 'Please enter email and password.';\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Ici dans le code, tout en v\u00e9rifiant le mot de passe, j&rsquo;ai utilis\u00e9 la m\u00e9thode PHP md5 en supposant que vous avez stock\u00e9 le mot de passe en utilisant cet algorithme.<\/p>\n<h3>Code de d\u00e9connexion<\/h3>\n<p>La partie suivante consiste \u00e0 ajouter du code pour d\u00e9connecter l&rsquo;utilisateur. Pour cela, cr\u00e9ez un <code>myaccount.php<\/code>fichier. Une autre chose \u00e0 g\u00e9rer, qui est uniquement r\u00e9serv\u00e9e aux utilisateurs connect\u00e9s, doit acc\u00e9der \u00e0 cette page.<\/p>\n<p><strong>moncompte.php<\/strong><\/p>\n<pre><code>&lt;?php\nsession_start();\n\u00a0\nif (isset($_GET['action']) &amp;&amp; ('logout' == $_GET['action'])) {\n\u00a0\u00a0\u00a0\u00a0unset($_SESSION['id']);\n}\n\u00a0\nif (isset($_SESSION['id'])) {\n\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;h3&gt;Welcome User! &lt;a href=\"?action=logout\"&gt;Logout&lt;\/a&gt;&lt;\/h3&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;?php\n} else { \/\/redirect to login page\n\u00a0\u00a0\u00a0\u00a0header('Location: index.php');\n}\n?&gt;<\/code><\/pre>\n<p>En utilisant une session PHP, nous d\u00e9terminons s&rsquo;il faut donner acc\u00e8s \u00e0 cette page ou non. Si la session n&rsquo;est pas d\u00e9finie, redirigez l&rsquo;utilisateur vers la page de connexion.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez les bases de la construction d&rsquo;un syst\u00e8me de connexion en PHP. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es et suggestions dans la section commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/enregistrement-de-l-utilisateur-et-systeme-de-connexion-dans-laravel\/\" title=\"Enregistrement de l'utilisateur et syst\u00e8me de connexion dans Laravel\" >Enregistrement de l&rsquo;utilisateur et syst\u00e8me de connexion dans Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/connexion-google-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Connexion Google dans Laravel en utilisant Laravel Socialite\" >Connexion Google dans Laravel en utilisant Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-creer-un-systeme-d-enregistrement-php-pour-votre-site-web\/\" title=\"Comment cr\u00e9er un syst\u00e8me d'enregistrement PHP\" >Comment cr\u00e9er un syst\u00e8me d&rsquo;enregistrement PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, je cr\u00e9e un syst\u00e8me de connexion PHP qui est utile pour les d\u00e9butants. Ici, nous \u00e9crivons un code pour HTML, PHP et traitons tous les possibles<\/p>\n","protected":false},"author":1,"featured_media":21659,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[273],"tags":[844],"class_list":["post-24994","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24994"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24994\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21659"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24994"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}