✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo crear un sistema de registro PHP para su sitio web

140

¿Está buscando integrar el sistema de registro PHP? En esta publicación, creamos un formulario de registro, validamos el correo electrónico con la base de datos. Tras el registro exitoso de un usuario, enviamos un enlace de activación al correo electrónico del usuario. Una vez que el usuario haga clic en el enlace de activación del correo electrónico, activaremos su cuenta.

Dicho esto, creemos nuestro sistema de registro PHP.

Crear una tabla de usuarios en la base de datos

Para cada sistema de registro, necesitamos una tabla de base de datos. Con los registros de esta tabla, verificamos si el usuario ingresa una dirección de correo electrónico única o no. Si los datos del usuario son únicos y correctos, solo ellos pueden registrarse en nuestro sistema.

Ejecute la siguiente consulta en su base de datos para crear la tabla llamada ‘usuarios’.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `fullname` varchar(255) NOT NULL,
 `email` varchar(255) NOT NULL,
 `password` varchar(255) NOT NULL,
 `activation_key` varchar(255) NOT NULL,
 `status` enum('0','1') NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)) ENGINE=MyISAM;

Crear un formulario de registro

Cómo crear un sistema de registro PHP para su sitio web

Usamos Bootstrap Framework para diseñar nuestro formulario de registro. Cree un archivo ‘index.php’ y coloque el siguiente código en él.

<!DOCTYPE html>
<html>
    <head>
        <title>Registration Form</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h3>Registration Form</h3>
                    <?php if(!empty($arr_message['msg'])) { ?>
                        <div class="alert <?php echo $arr_message['class']; ?>"><?php echo $arr_message['msg']; ?></div>
                    <?php } ?>
                    <form method="post">
                        <div class="form-group">
                            <label for="exampleInputFullname">Full Name</label>
                            <input type="text" class="form-control" id="exampleInputFullname" name="fullname" placeholder="Full Name" value="<?php if(isset($fullname)) echo $fullname; ?>" required>
                        </div>
                        <div class="form-group">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" value="<?php if(isset($email)) echo $email; ?>" required>
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword1">Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required>
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword2">Confirm Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword2" name="cpassword" placeholder="Confirm Password" required>
                        </div>
                        <button type="submit" name="submit" class="btn btn-default">Submit</button>
                    </form>
                </div>
            </div>
        </div>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </body>
</html>

El código anterior mostrará el formulario de registro cuando ejecutemos el archivo ‘index.php’. Observa la variable $ arr_message [‘msg’] en el código que imprimirá el error de registro, si lo hubiera. Esta variable se declara en breve.

Código del lado del servidor para el sistema de registro PHP

En esta etapa, estamos listos con el formulario de registro y la tabla de la base de datos. A continuación, en el envío del formulario, tenemos que escribir código PHP que verifica si el correo electrónico ya existe en la base de datos. Si el correo electrónico existe, lanzamos el mensaje de error. Si todos los detalles son correctos, insertamos los detalles del usuario en la base de datos y enviamos un enlace de activación a su dirección de correo electrónico proporcionada.

Cree un archivo ‘config.php’ donde almacenamos las credenciales de la base de datos.

<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
 
if ($conn->connect_errno) {
    echo "Error: ". $conn->connect_error;
}
?>

En nuestro ‘index.php’ antes del inicio de la etiqueta html agregue el siguiente código.

<?php
require_once('config.php');
 
$arr_message = [];
if (isset($_POST['submit'])) {
 
    $_POST = array_map('trim', $_POST);
    extract($_POST);
 
    if (!empty($fullname) && !empty($email) && !empty($password)) {
         
        if ($password == $cpassword) {
            $sql = "SELECT id FROM users WHERE email = '".$conn->real_escape_string($email)."'";
            $result = $conn->query($sql);
 
            if ($result->num_rows > 0) {
                $arr_message = [
                    'class' => 'alert-danger',
                    'msg' => 'Email already exist.',
                ];
            } else {
                $email = $conn->real_escape_string($email);
                $activation_key = sha1(mt_rand(10000,99999).time().$email);
 
                $sql = "INSERT INTO users(fullname, email, password, activation_key) VALUES('".$conn->real_escape_string($fullname)."', '".$email."', '".md5($conn->real_escape_string($password))."', '".$activation_key."')";
                $conn->query($sql);
 
                //send activation link in an email
                $subject = 'Activate Your Account';
                $message = 'Hello '.ucwords($fullname).',<br> 
                            <p>Click the below link to activate your account.</p>
                            <a href="YOUR_PROJECT_URL/activate.php?key='.$activation_key.'">Activate Account</a><br><br>
                            Thanks,<br>Admin';
 
                $headers[] = 'MIME-Version: 1.0';
                $headers[] = 'Content-type: text/html; charset=iso-8859-1';
                mail($email, $subject, $message, implode("rn", $headers));
 
                $arr_message = [
                    'class' => 'alert-success',
                    'msg' => 'We have sent an activation link to your email. Please activate your account.',
                ];
                $fullname = $email = '';
            }
        } else {
            $arr_message = [
                'class' => 'alert-danger',
                'msg' => 'Password mismatch.',
            ];
        }
    }
}
?>

Aquí, mientras almacenamos la contraseña, usamos el método PHP md5 asumiendo que almacenó la contraseña usando este algoritmo.

Activar archivo.php para activar su cuenta

Ahora es el momento de crear el archivo "active.php ". Este archivo maneja el código de activación de la cuenta. Escribimos un código para activar la cuenta de usuario si la URL contiene una clave de activación correcta.

El archivo ‘enable.php’ contiene el siguiente código.

<?php
require_once('config.php');
 
if (!isset($_GET['key']) || empty($_GET['key'])) {
    header('Location:index.php');
}
 
$sql = "SELECT id, status FROM users WHERE activation_key = '".$_GET['key']."'";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    if ($row['status']) {
        $arr_message = [
            'class' => 'alert-success',
            'msg' => 'Your account is already activated.',
        ];
    } else {
        $sql = "UPDATE users SET status = '1' WHERE id = ".$row['id']." AND activation_key = '".$_GET['key']."'";
        $conn->query($sql);
 
        $arr_message = [
            'class' => 'alert-success',
            'msg' => 'Your account is activated. You can <a href="YOUR_PROJECT_URL/login.php">login now</a>.',
        ];
    }
} else {
    $arr_message = [
        'class' => 'alert-danger',
        'msg' => 'Invalid URL.',
    ];
}
?>

Para mostrar el mensaje de éxito / error en el archivo ‘activar.php’, agregue el siguiente código HTML.

<div class="container">
        <div class="row">
            <div class="col-md-6">
                <?php if(!empty($arr_message['msg'])) { ?>
                    <div class="alert <?php echo $arr_message['class']; ?>">
                        <?php echo $arr_message['msg']; ?>
                    </div>
                <?php } ?>
            </div>
        </div>
    </div>

También puede leer nuestro artículo relacionado sobre cómo crear un sistema de inicio de sesión PHP.

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More