Hur man skapar ett PHP-registreringssystem för din webbplats
Vill du integrera PHP-registreringssystem? I det här inlägget skapar vi ett registreringsformulär, validerar e-post mot databasen. Vid framgångsrik registrering av en användare skickar vi en aktiveringslänk till användarens e-post. När användaren klickar på aktiveringslänken från e-postmeddelandet aktiverar vi deras konto.
Med detta sagt, låt oss skapa vårt PHP-registreringssystem.
Skapa en användartabell i databasen
För varje registreringssystem behöver vi en databastabell. Mot den här tabellposten kontrollerar vi om användaren anger en unik e-postadress eller inte. Om användaruppgifterna är unika och korrekta kan endast de registrera sig i vårt system.
Kör frågan nedan till din databas för att skapa tabellen ‘användare’.
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;
Skapa ett registreringsformulär
Vi använder Bootstrap Framework för att utforma vårt registreringsformulär. Skapa en ‘index.php’-fil och placera nedanstående kod i den.
<!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>
Ovanstående kod visar registreringsformuläret när vi kör ‘index.php’ -filen. Du observerar variabeln $ arr_message [‘msg’] i kod som kommer att skriva ut registreringsfel om någon. Denna variabel deklareras inom kort.
Serversida för PHP-registreringssystem
I detta skede är vi redo med registreringsformuläret och databastabellen. Därefter, på formuläret skicka måste vi skriva PHP-kod som kontrollerar om e-post redan finns i databasen. Om e-post existerar skickar vi felmeddelandet. Om all information är korrekt sätter vi in användaruppgifterna i databasen och skickar en aktiveringslänk till deras angivna e-postadress.
Skapa en fil ‘config.php’ där vi lagrar databasuppgifterna.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Lägg till nedanstående kod i vår ‘index.php’ före början av html-taggen.
<?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.',
];
}
}
}
?>
Här när vi lagrar lösenordet använder vi PHP-metoden md5 förutsatt att du lagrade lösenordet med hjälp av denna algoritm.
enable.php-fil för att aktivera ditt konto
Nu är det dags att skapa filen ‘enable.php’. Den här filen hanterar kontoaktiveringskoden. Vi skriver en kod för att aktivera användarkontot om webbadressen innehåller en korrekt aktiveringsnyckel.
filen ‘active.php’ innehåller nedanstående kod.
<?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.',
];
}
?>
För att visa framgångs- / felmeddelandet i filen ‘enable.php’, lägg till nedanstående HTML-kod i den.
<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>
Du kanske också vill läsa vår relaterade artikel om hur man skapar PHP-inloggningssystem.