{"id":25279,"date":"2021-05-29T14:27:00","date_gmt":"2021-05-29T11:27:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25279"},"modified":"2021-10-18T03:07:24","modified_gmt":"2021-10-18T00:07:24","slug":"come-creare-un-sistema-di-accesso-php-per-il-tuo-sito-web","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-creare-un-sistema-di-accesso-php-per-il-tuo-sito-web\/","title":{"rendered":"Come creare un sistema di accesso PHP per il tuo sito web"},"content":{"rendered":"<p>Stai cercando di integrare un sistema di login in PHP? In questo articolo, ti mostro come eseguire un flusso di accesso di base in PHP. Creeremo un modulo di accesso, convalideremo le credenziali e reindirizzeremo l&#8217;utente sulla pagina dell&#8217;account. Aggiungerei anche un codice per disconnettere l&#8217;utente. Inoltre, verranno visualizzati i messaggi di errore se vengono inserite le credenziali errate.<\/p>\n<p>Per il tutorial, presumo che tu stia usando l&#8217;hash &#8216;md5&#8217; per memorizzare la password. Scriverei il codice considerando l&#8217;hash md5 di una stringa. Forse stai usando un altro algoritmo. In tal caso, devi modificare la query secondo il tuo algoritmo.<\/p>\n<p>Per integrare il flusso di accesso, abbiamo bisogno di una tabella di database che memorizzi i dettagli dell&#8217;utente. In base a questa tabella, convalidiamo se l&#8217;utente ha inserito o meno le credenziali corrette. Se le credenziali dell&#8217;utente sono corrette, solo loro dovrebbero avere accesso alle pagine protette.<\/p>\n<p>Nel mio caso, ho creato una tabella &quot;utenti&quot; e aggiunto alcune voci fittizie. Ho anche aggiunto una colonna &quot;stato&quot; che verr\u00e0 utilizzata per scoprire se un account \u00e8 attivo o meno. Questa colonna ha il tipo di dati ENUM con i valori 0 e 1.<\/p>\n<ul>\n<li>1: l&#8217;account \u00e8 attivo<\/li>\n<li>0: l&#8217;account non \u00e8 attivo<\/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=\"Come creare un sistema di accesso PHP per il tuo sito web\" ><\/a><\/p>\n<h3>Crea un modulo di accesso<\/h3>\n<p>Per iniziare, creiamo un modulo di accesso in cui gli utenti possono inserire le proprie credenziali. Sto usando un framework Bootstrap per creare un modulo di accesso. Il mio <code>index.php<\/code>file contiene il codice seguente.<\/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>Il codice sopra mostrer\u00e0 il modulo di accesso come mostrato nello screenshot qui sotto.<\/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=\"Come creare un sistema di accesso PHP per il tuo sito web\" ><\/a><\/p>\n<p>Ho aggiunto la variabile <code>$error_message<\/code>nel codice che stamper\u00e0 gli errori di accesso.<\/p>\n<h3>Codice PHP per convalidare le credenziali degli utenti<\/h3>\n<p>Sei pronto con il modulo di accesso e la tabella del database. Successivamente, all&#8217;invio di un modulo, dobbiamo scrivere il codice PHP che verifica le credenziali dell&#8217;utente rispetto ai record del database. Se i dettagli sono corretti, accedi all&#8217;utente nel sistema e reindirizza alla <code>myaccount.php<\/code>pagina.<\/p>\n<p>Crea un <code>config.php<\/code>file e aggiungi un codice per la connessione al database.<\/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>Sostituisci i segnaposto con i valori effettivi.<\/p>\n<p>Ora, nel <code>index.php<\/code>file prima dell&#8217;inizio del tag html aggiungi il codice seguente.<\/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>Qui nel codice, durante il controllo della password ho utilizzato il metodo PHP md5 assumendo che tu abbia memorizzato la password utilizzando questo algoritmo.<\/p>\n<h3>Codice di disconnessione<\/h3>\n<p>La parte successiva \u00e8 l&#8217;aggiunta del codice per disconnettere l&#8217;utente. Per questo, crea <code>myaccount.php<\/code>file. Un&#8217;altra cosa necessaria per gestire che solo gli utenti registrati dovrebbero accedere a questa pagina.<\/p>\n<p><strong>mioaccount.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>Utilizzando la sessione PHP stiamo cercando di capire se dare accesso a questa pagina o meno. Se la sessione non \u00e8 impostata, reindirizza l&#8217;utente alla pagina di accesso.<\/p>\n<p>Spero che tu capisca le basi della creazione di un sistema di accesso in PHP. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/sistema-di-registrazione-e-accesso-utente-in-laravel\/\" title=\"Sistema di registrazione e accesso utente in Laravel\" >Sistema di registrazione e accesso utente in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/accedi-a-google-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi a Google in Laravel utilizzando Laravel Socialite\" >Accedi a Google in Laravel utilizzando Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-creare-un-sistema-di-registrazione-php-per-il-tuo-sito-web\/\" title=\"Come creare un sistema di registrazione PHP\" >Come creare un sistema di registrazione PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo creo un sistema di login PHP utile per i principianti. Qui scriviamo un codice per HTML, PHP e gestiamo tutto il possibile<\/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":[276],"tags":[846],"class_list":["post-25279","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25279"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25279\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21659"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}