前端0基础,草草看了一天的HTML和php的相关知识,写了个大致功能实现的可以实现注册登录的页面。下面就是代码了:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Register Page</title>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<h1>Register/Login Page<br></h1>
<?php
$username=$password="";
$usererr=$passwderr=$checkerr="";
$check="";
function str_input($str) //对输入字符串进行预处理
{
$str=trim($str);//去除首尾的空白字符
$str=htmlspecialchars($str);//将输入字符串转换为html实体
return $str;
}
if ($_SERVER["REQUEST_METHOD"]=="POST")
{
if (empty($_POST["username"]))
{
$usererr="*用户名不能为空!";
}
else
{
$username=str_input($_POST["username"]);
if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) //用正则表达式匹配,保证用户名仅包含字母和数字
{
$usererr="*仅允许使用字母和数字构成用户名";
}
}
if (empty($_POST["password"]))
{
$passwderr="*密码不能为空";
}
else
{
$password=str_input($_POST["password"]);
if (!preg_match("/^[a-zA-Z0-9]*$/", $password)) //用正则表达式匹配,保证密码仅包含字母和数字
{
$passwderr="*密码仅支持字母数字";
}
}
if (empty($_POST["check"]))
{
$checkerr="*未选择登录/注册类型!";
}
else
{
$check=str_input($_POST["check"]);
}
}
?>
<h2>注册/登录界面</h2>
//值得注意的是,这里设置表单的提交对象为自身,且需用htmlspecialchars转移,避免可以执行外部脚本的漏洞。
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
username: <input type="text" name="username" value="<?php echo $username;?>">
<span class="error"> <?php echo $usererr;?></span>
<br><br>
password: <input type="password" name="password" value="<?php echo $password;?>">
<span class="error"> <?php echo $passwderr;?></span>
<br><br>
注册/登录:
<input type="radio" name="check" <?php if (isset($check) && $check=="register") echo "checked";?> value="register">Register
<input type="radio" name="check" <?php if (isset($check) && $check=="login") echo "checked";?> value="login">Login
<span class="error"> <?php echo $checkerr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>TEST OUTPUT:</h2>";
echo"<br>";
?>
<?php
$servername="localhost";//设置数据库的连接相关信息
$mysqluser="yourusername";//你当时安装mysql的时候设置的账户名
$mysqlpasswd="yourpassword";//你当时注册的时候设置的密码
$database="your_db_name";//你当时注册的时候的数据库名
$db_conn = new mysqli($servername,$mysqluser,$mysqlpasswd,$database);//连接数据库
if (!$db_conn)
{
die("数据库连接失败: " . mysqli_connect_error());//返回数据库的连接错误信息
}
echo "数据库连接成功";
echo "<br>";
if (!$usererr&&!$passwderr) //保证用户名和密码不能为空
{
if ($check=="register")//如果是采用注册的方式
{
$verify="SELECT USERNAME FROM USERINF WHERE USERNAME='".$username."'";//这里多加一个'".string."'的原因是保证SQL语句里面USERNAME是字符串。
echo "<br>";
$result = mysqli_query($db_conn,$verify);
if (mysqli_fetch_all($result))//查看用户名是否存在
echo "该用户名已注册!";
else
{
$sql = "INSERT INTO userinf (username, password) VALUES ('".$username."','".$password."')";
if ($db_conn->query($sql) === TRUE)//插入提交的表单数据
{
echo "用户注册成功!";
}
else
{
echo "Error: " . $sql . "<br>" . $db_conn->error;
}
}
mysqli_free_result($result); //释放结果集内存
}
if ($check=="login")
{
$verify1="SELECT USERNAME FROM USERINF WHERE USERNAME='".$username."'";
echo "<br>";
$result1 = mysqli_query($db_conn,$verify1);
if (mysqli_fetch_all($result1))//查看用户名是否存在
{
$verify2="SELECT PASSWORD FROM USERINF WHERE USERNAME ='".$username."'";
$result2 = mysqli_query($db_conn,$verify2);
$row=mysqli_fetch_array($result2,MYSQLI_NUM);//输出Mysql数据表里面的对应用户名的密码来匹配
if ($row[0]==$password)
echo "登陆成功";
else
echo "密码错误";
mysqli_free_result($result2); //释放结果集内存
}
else
{
echo "该用户名未注册,请检查用户名";
}
mysqli_free_result($result1); //释放结果集内存
}
}
else
echo "用户名和密码不能为空";
$db_conn->close();
?>
</body>
</html>