4E e 4I: procedura di registrazione nuovo utente in Php e file di testo


Questa procedura consente di inserire le credenziali tramite la pagina login.php dove vengono richieste la username e la password.

Nei campi input text viene inserito l'attributo required che obbliga l'utente a compilare il campo.

Required è un attributo booleano.

Quando presente, specifica che è necessario compilare un campo di input prima dell'invio del modulo.

Required  funziona con i seguenti tipi di input: testo, ricerca, URL, telefono, e-mail, password, selettori di data, numero, casella di controllo, radio e file.

I dati vengono passati con il metodo $post. Se i dati inseriti corrispondono con quelli memorizzati nel file di testo users.txt allora l'utente viene reindirizzato nella pagina Index.php.

pagina login.php


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Login Utente</title>

    <style>

        body {

            font-family: Arial, sans-serif;

            background-color: #f4f4f4;

            margin: 0;

            padding: 0;

            display: flex;

            align-items: center;

            justify-content: center;

            height: 100vh;

        }


        form {

            background-color: #fff;

            padding: 20px;

            border-radius: 8px;

            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

            width: 300px;

            text-align: center;

        }


        h2 {

            color: #333;

        }


        label {

            display: block;

            margin: 10px 0;

            font-weight: bold;

        }


        input {

            width: 100%;

            padding: 10px;

            margin-bottom: 15px;

            box-sizing: border-box;

            border: 1px solid #ccc;

            border-radius: 4px;

            font-size: 16px;

        }


        input[type="submit"] {

            background-color: #4caf50;

            color: white;

            padding: 10px 15px;

            border: none;

            border-radius: 4px;

            cursor: pointer;

            font-size: 16px;

        }

        input[type="submit"]:hover {

            background-color: #45a049;

        }

        p {

            margin-top: 10px;

            font-size: 14px;

        }

        a {

            color: #3498db;

            text-decoration: none;

        }

        a:hover {

            text-decoration: underline;

        }

    </style>

</head>

<body>

    <form method="post" action="login.php">

        <h2>Login Utente</h2>

        <label>Username:</label>

        <input type="text" name="username" required>

        <label>Password:</label>

        <input type="password" name="password" required>

        <input type="submit" value="Login">

        <p><a href="register.php">Non sei ancora registrato? Clicca qui</a></p>

    </form>

        <?php

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {

        $username = $_POST['username'];

        $password = md5($_POST['password']); // Non consigliato per un'applicazione reale

        // r perchè apro il file in modalità lettura

        $file = fopen('users.txt', 'r');

        while (!feof($file)) {

            $line = fgets($file);

            $fields = explode("|", $line);

            $storedUsername = $fields[0];

            $storedPassword = trim($fields[1]);

            if ($username == $storedUsername && $password == $storedPassword) {

                echo "Login avvenuto con successo!";

                fclose($file);

                header("Location: index.php");

                exit();

            }

        }

      

        fclose($file);

        echo "Credenziali non valide. Riprova.";

    }

    ?>

</body>

</html>


Se le credenziali non sono state memorizzate nel file users.txt si procede alla registrazione.

La password memorizzata nel file di testo è stata criptata con la funzione MD5 

pagina register.php

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Registrazione Utente</title>

    <style>

        body {

            font-family: Arial, sans-serif;

            background-color: #f4f4f4;

            margin: 0;

            padding: 0;

            display: flex;

            align-items: center;

            justify-content: center;

            height: 100vh;

        }


        form {

            background-color: #fff;

            padding: 20px;

            border-radius: 8px;

            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

            width: 300px;

            text-align: center;

        }


        h2 {

            color: #333;

        }


        label {

            display: block;

            margin: 10px 0;

            font-weight: bold;

        }


        input {

            width: 100%;

            padding: 10px;

            margin-bottom: 15px;

            box-sizing: border-box;

            border: 1px solid #ccc;

            border-radius: 4px;

            font-size: 16px;

        }


        input[type="submit"] {

            background-color: #3498db;

            color: white;

            padding: 10px 15px;

            border: none;

            border-radius: 4px;

            cursor: pointer;

            font-size: 16px;

        }


        input[type="submit"]:hover {

            background-color: #2980b9;

        }

    </style>

</head>

<body>

    <form method="post" action="register.php">

        <h2>Registrazione Utente</h2>

        <label>Username:</label>

        <input type="text" name="username" required>


        <label>Password:</label>

        <input type="password" name="password" required>


        <input type="submit" value="Registra">

    </form>

    

    <?php

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {

        $username = $_POST['username'];

        $password = md5($_POST['password']); 


        $userData = "$username|$password\n";


        // Apri il file in modalità append 

        $file = fopen('users.txt', 'a');


        // Qui ho fatto si che le informazioni dell'utente venissero scritte nel file

        fwrite($file, $userData);

        fclose($file);


        echo "Registrazione avvenuta con successo!";

        

        header("Location: login.php");

        exit();

    }

    ?>

</body>

</html>


Parametri, metodi  e funzioni utilizzate in questa procedura:

$_SERVER

  while (!feof($file))

fopen('users.txt', 'r')

fgets($file);

explode("|", $line)

trim($fields[1])

 $userData = "$username|$password\n"; vengono memorizzati nella variabile $userData i dati relativi al contenuto delle due variabili $username e $password con il carattere "|" e il parametro "\n"

Si usa il carattere \n per andare a capo: se all'interno o alla fine di una stringa compare \n, in quel punto si andrà a capo.

 $file = fopen('users.txt', 'a+');





Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)