📜  php 注册表单和登录在同一页面 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:43.024000             🧑  作者: Mango

PHP 注册表单和登录在同一页面

在一个网站中,通常需要一个用户注册页面和一个登录页面。这两个页面虽然功能不同,但实现起来的代码结构很相似。为了更好的用户体验,有的网站将这两个功能放在同一个页面中。下面介绍如何实现 PHP 注册表单和登录在同一页面的功能。

HTML 代码

首先,我们需要在 HTML 中添加一个表单,让用户可以进行注册或登录操作。

<form action="login.php" method="post">
	<label>用户名</label>
	<input type="text" name="username" required>
	<label>密码</label>
	<input type="password" name="password" required>
	<button type="submit" name="login">登录</button>
</form>

<form action="register.php" method="post">
	<label>用户名</label>
	<input type="text" name="username" required>
	<label>密码</label>
	<input type="password" name="password" required>
	<label>确认密码</label>
	<input type="password" name="confirm_password" required>
	<button type="submit" name="register">注册</button>
</form>

这里我们采用了两个表单,一个用于登录,一个用于注册。表单的 action 属性分别指向登录和注册的 PHP 文件,这两个文件将在后面实现。

PHP 代码

接下来,我们需要编写登录和注册的 PHP 文件。

注册 PHP 文件

首先是注册 PHP 文件的代码。

if(isset($_POST['register']))
{
	$username = $_POST['username'];
	$password = $_POST['password'];
	$confirm_password = $_POST['confirm_password'];
	
	if($password !== $confirm_password)
	{
		echo "两次输入的密码不一致";
		exit;
	}
	
	// 进行注册操作
}

当用户提交注册表单时,会触发此 PHP 文件。首先获取用户输入的用户名和密码,然后判断两次输入的密码是否一致。如果密码不一致,则输出错误信息并终止程序。否则,进行注册操作。

登录 PHP 文件

接下来是登录 PHP 文件的代码。

if(isset($_POST['login']))
{
	$username = $_POST['username'];
	$password = $_POST['password'];
	
	// 进行登录操作
}

当用户提交登录表单时,会触发此 PHP 文件。首先获取用户输入的用户名和密码,然后进行登录操作。

共用的代码

登录和注册的 PHP 文件都需要连接数据库,因此我们需要把这段代码写成一个函数,方便两个文件都可以使用。

function connect_database()
{
	$db_host = "localhost";
	$db_user = "root";
	$db_password = "root";
	$db_name = "my_db";
	
	$conn = new mysqli($db_host, $db_user, $db_password, $db_name);
	
	if($conn->connect_error)
	{
		die("连接失败:" . $conn->connect_error);
	}
	
	return $conn;
}

此外,我们需要判断用户是进行注册操作还是登录操作。如果用户进行了注册操作,我们需要把用户的信息插入到数据库中。如果用户进行了登录操作,我们需要检查数据库中是否有相应的用户名和密码记录。

$conn = connect_database();

if(isset($_POST['register']))
{
	$username = $_POST['username'];
	$password = $_POST['password'];
	$confirm_password = $_POST['confirm_password'];
	
	if($password !== $confirm_password)
	{
		echo "两次输入的密码不一致";
		exit;
	}
	
	$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
	
	if($conn->query($sql) === TRUE)
	{
		echo "注册成功";
	}
	else
	{
		echo "注册失败:" . $conn->error;
	}
	
	$conn->close();
	exit;
}
else if(isset($_POST['login']))
{
	$username = $_POST['username'];
	$password = $_POST['password'];
	
	$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
	$result = $conn->query($sql);
	
	if($result->num_rows > 0)
	{
		echo "登录成功";
	}
	else
	{
		echo "用户名或密码错误";
	}
	
	$conn->close();
	exit;
}

如果插入记录成功,则输出“注册成功”消息;如果插入记录失败,则输出“注册失败”消息和错误信息。如果检索到了一条记录,则输出“登录成功”消息;如果没有检索到记录,则输出“用户名或密码错误”消息。

总结

本文介绍了如何实现 PHP 注册表单和登录在同一页面的功能。要实现这个功能,需要先在 HTML 中添加两个表单,并在两个 PHP 文件中编写注册和登录的代码。其中,登录和注册的 PHP 文件都需要连接数据库,因此需要把连接数据库的代码写成一个函数。整个功能的实现过程相对简单,但涉及到了 HTML、PHP 和 MySQL 三种技术,是一个基本的 Web 开发技能。