使用 PHP PDO 创建登录和注册表单

在本教程中,我们将使用 PHP创建一个PDO 登录和注册。PHP 是一种服务器端脚本语言,主要用于 Web 开发。PDO 代表 PHP 数据对象。这是访问数据库的一种精简且一致的方式。这意味着开发人员可以更轻松地编写可移植代码。它主要由新编码人员使用,因为它具有用户友好的环境。

所以让我们进行编码...

在我们开始之前:

首先,您必须下载并安装 XAMPP 或任何运行 PHP 脚本的本地服务器。这是 XAMPP 服务器的链接XAMPP Installers and Downloads for Apache Friends。然后,打开XAMPP 的控制面板Apache并启动MySQL. 我在本教程中也使用了 Bootstrap,请前往Bootstrap · The most popular HTML, CSS, and JS library in the world.下载。

创建数据库

打开您的数据库网络服务器 [ie http://localhost/phpmyadmin] 然后在其中创建一个数据库名称db_login

在数据库中创建成员表。单击SQL选项卡和copy/paste下面的代码。单击Go按钮提交SQL 代码

CREATE TABLE `member` (
  `mem_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `firstname` varchar(50) NOT NULL,
  `lastname` varchar(50) NOT NULL,
  `username` varchar(30) NOT NULL,
  `password` varchar(12) NOT NULL
)

创建数据库连接

打开任何类型的文本编辑器(notepadd++ 等)。然后只需copy/paste下面的代码,然后将其另存为conn.php.

<?php
	$db_username = 'root';
	$db_password = '';
	$conn = new PDO( 'mysql:host=localhost;dbname=db_login', $db_username, $db_password );
	if(!$conn){
		die("Fatal Error: Connection Failed!");
	}
?>

创建标记/界面

这是我们将为我们的应用程序创建一个简单表单的地方。要创建表单,只需将其复制并粘贴到您的文本编辑器中,然后如下所示保存它们。

index.php

此页面是浏览应用程序时的默认页面。这显示了登录表单。

<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
	<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
	<nav class="navbar navbar-default">
		<div class="container-fluid">
			<a class="navbar-brand" href="https://sourcecodester.com">Sourcecodester</a>
		</div>
	</nav>
	<div class="col-md-3"></div>
	<div class="col-md-6 well">
		<h3 class="text-primary">PHP - PDO Login and Registration</h3>
		<hr style="border-top:1px dotted #ccc;"/>
		<div class="col-md-2"></div>
		<div class="col-md-8">
			<?php if(isset($_SESSION['message'])): ?>
				<div class="alert alert-<?php echo $_SESSION['message']['alert'] ?> msg"><?php echo $_SESSION['message']['text'] ?></div>
			<script>
				(function() {
					// removing the message 3 seconds after the page load
					setTimeout(function(){
						document.querySelector('.msg').remove();
					},3000)
				})();
			</script>
			<?php 
				endif;
				// clearing the message
				unset($_SESSION['message']);
			?>
			<form action="login_query.php" method="POST">	
				<h4 class="text-success">Login here...</h4>
				<hr style="border-top:1px groovy #000;">
				<div class="form-group">
					<label>Username</label>
					<input type="text" class="form-control" name="username" />
				</div>
				<div class="form-group">
					<label>Password</label>
					<input type="password" class="form-control" name="password" />
				</div>
				<br />
				<div class="form-group">
					<button class="btn btn-primary form-control" name="login">Login</button>
				</div>
				<a href="registration.php">Registration</a>
			</form>
		</div>
	</div>
</body>
</html>

registration.php

此页面显示注册表。

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
        <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
    </head>
    <body>
        <nav class="navbar navbar-default">
            <div class="container-fluid">
                <a class="navbar-brand" href="https://sourcecodester.com">Sourcecodester</a>
            </div>
        </nav>
        <div class="col-md-3"></div>
        <div class="col-md-6 well">
            <h3 class="text-primary">PHP - PDO Login and Registration</h3>
            <hr style="border-top:1px dotted #ccc;"/>
            <div class="col-md-2"></div>
            <div class="col-md-8">
                <form action="register_query.php" method="POST">
                    <h4 class="text-success">Register here...</h4>
                    <hr style="border-top:1px groovy #000;">
                    <div class="form-group">
                        <label>Firstname</label>
                        <input type="text" class="form-control" name="firstname" />
                    </div>
                    <div class="form-group">
                        <label>Lastname</label>
                        <input type="text" class="form-control" name="lastname" />
                    </div>
                    <div class="form-group">
                        <label>Username</label>
                        <input type="text" class="form-control" name="username" />
                    </div>
                    <div class="form-group">
                        <label>Password</label>
                        <input type="password" class="form-control" name="password" />
                    </div>
                    <br />
                    <div class="form-group">
                        <button class="btn btn-primary form-control" name="register">Register</button>
                    </div>
                    <a href="index.php">Login</a>
                </form>
            </div>
        </div>
    </body>
</html>

home.php

这将是用户登录后将被重定向的页面。

<!DOCTYPE html>
<?php
	require 'conn.php';
	session_start();
	
	if(!ISSET($_SESSION['user'])){
		header('location:index.php');
	}
?>
<html lang="en">
	<head>
		<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
		<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
	</head>
<body>
	<nav class="navbar navbar-default">
		<div class="container-fluid">
			<a class="navbar-brand" href="https://sourcecodester.com">Sourcecodester</a>
		</div>
	</nav>
	<div class="col-md-3"></div>
	<div class="col-md-6 well">
		<h3 class="text-primary">PHP - PDO Login and Registration</h3>
		<hr style="border-top:1px dotted #ccc;"/>
		<div class="col-md-2"></div>
		<div class="col-md-8">
			<h3>Welcome!</h3>
			<br />
			<?php
				$id = $_SESSION['user'];
				$sql = $conn->prepare("SELECT * FROM `member` WHERE `mem_id`='$id'");
				$sql->execute();
				$fetch = $sql->fetch();
			?>
			<center><h4><?php echo $fetch['firstname']." ". $fetch['lastname']?></h4></center>
			<a href = "logout.php">Logout</a>
		</div>
	</div>
</body>
</html>

创建主函数

此代码包含数据库中查询过程的特定脚本。此代码由不同的功能组成,例如注销、登录和注册。为此,在文本编辑器中编写这些代码块并相应地保存它们,如下所示。

register_query.php

这是代码将输入中的所有数据注册到数据库服务器的地方。PDO创建一个请求,然后它将收集所有收集到的数据,然后存储。

<?php

session_start();
require_once 'conn.php';

if (ISSET($_POST['register'])) {
    if ($_POST['firstname'] != "" || $_POST['username'] != "" || $_POST['password'] != "") {
        try {
            $firstname = $_POST['firstname'];
            $lastname = $_POST['lastname'];
            $username = $_POST['username'];
            // md5 encrypted
            // $password = md5($_POST['password']);
            $password = $_POST['password'];
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO `member` VALUES ('', '$firstname', '$lastname', '$username', '$password')";
            $conn->exec($sql);
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
        $_SESSION['message'] = array("text" => "User successfully created.", "alert" => "info");
        $conn = null;
        header('location:index.php');
    } else {
        echo "
				<script>alert('Please fill up the required field!')</script>
				<script>window.location = 'registration.php'</script>
			";
    }
}
?>

login_query.php

这是代码可以登录用户的地方。PDO向数据库服务器发送请求,然后如果用户帐户有效访问数据,则会收到一些确认。

<?php

session_start();

require_once 'conn.php';

if (ISSET($_POST['login'])) {
    if ($_POST['username'] != "" || $_POST['password'] != "") {
        $username = $_POST['username'];
        // md5 encrypted
        // $password = md5($_POST['password']);
        $password = $_POST['password'];
        $sql = "SELECT * FROM `member` WHERE `username`=? AND `password`=? ";
        $query = $conn->prepare($sql);
        $query->execute(array($username, $password));
        $row = $query->rowCount();
        $fetch = $query->fetch();
        if ($row > 0) {
            $_SESSION['user'] = $fetch['mem_id'];
            header("location: home.php");
        } else {
            echo "
				<script>alert('Invalid username or password')</script>
				<script>window.location = 'index.php'</script>
				";
        }
    } else {
        echo "
				<script>alert('Please complete the required field!')</script>
				<script>window.location = 'index.php'</script>
			";
    }
}
?>

logout.php

这是代码可以注销用户帐户的地方。单击注销按钮时,用户将强制注销。

<?php

session_start();
session_destroy();
header('location: index.php');
?>

演示

在那里,我们成功地使用 PHP创建了PDO 登录和注册。您现在可以测试您的工作是否正常运行或我们打算在本教程中创建它的方式。如果您出现错误,请重新检查代码或下载工作源代码以将其与您的工作区分开来。

我希望这个简单的教程能帮助你找到你想要的东西。如需更多更新和教程,请访问此网站。

享受编码!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值