php - 根据来自不同页面的 if 语句更改注册页面回显消息
问题描述
我正在练习 PHP 和数据库创建,并想根据输入的错误更改我的消息。我不知道如何将更改后的消息传回,并希望得到任何帮助。
这是我的注册页面
<main>
<h1>Signup<h1>
<h3>
<?php
echo $errorMsg;
?>
<h3>
<form action="includes/signup.inc.php" method="post">
<input type="text" name="uid" placeholder="Username">
<input type="text" name="mail" placeholder="E-mail">
<input type="password" name="pwd" placeholder="Password">
<input type="password" name="pwd_repeat" placeholder="Repeat Password">
<button type="submit" name="signup-submit">Submit</button>
<form>
</main>
这是我的处理页面
if(isset($_POST['signup-submit'])){
require 'dbh.inc.php';
$Name = $_POST['uid'];
$Email= $_POST['mail'];
$Password = $_POST['pwd'];
$PasswordRepeat = $_POST['pwd_repeat'];
if(empty($Name) || empty($Email) || empty($Password) || empty($PasswordRepeat)){
header("Location: ../signup.php?error=emptyfields=1"); //Check if any field is empty
exit();
}
else if(!filter_var($Email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $Name)){
header("Location: ../signup.php?error=invalidamil&uid"); //Check if username and email is valid input
exit();
}
else if(!filter_var($Email, FILTER_VALIDATE_EMAIL)){
header("Location: ../signup.php?error=invalidamil&uid=".$Name); //Check if email is valid input
exit();
}
else if($Password !== $PasswordRepeat){
header("Location: ../signup.php?error=passwordCheck&uid=".$Name."&mail=".$Email); // Check if passwords don't match
exit();
}
$sql2 = "SELECT UserName FROM dbo.MainTable WHERE UserName = ?";
$params2 = array($Name, SQLSRV_PARAM_IN);
$stmt2 = sqlsrv_query($conn, $sql2, $params2);
if($stmt2 === false)
{
die(print_r(sqlsrv_errors(), true));
exit();
}
$row_count = sqlsrv_num_rows($stmt2);
if($row_count != 0)
{
$_SESSION['errMsg'] = "Error retrieving username";
header("location: ../register.php");
exit();
}
else if($row_count > 0)
{
$_SESSION['errMsg'] = "Username is already used";
header("Location: ../signup.php?error=UserNameTaken&uid");
exit();
}
else{
$sql = "INSERT INTO dbo.MainTable(UserName,Email,UserPassword)
VALUES (?,?,?)";
$Password = PASSWORD_HASH($_POST['pwd'], PASSWORD_DEFAULT); //Password hashing
$stmt = sqlsrv_query($conn, $sql,array(@$Name,@$Email,@$Password));
if($stmt === false){
die( print_r( sqlsrv_errors(), true));
}else{
$_SESSION['errMsg'] = "Registration completed!";
header("Location: ../signup.php?signup=COMPLETE");
exit();
}
}
我不确定在哪里放置更改消息变量,因为我无法让它在 if 语句中工作。
解决方案
您将错误消息作为 url 参数提供,因此您可以使用php $_GET访问它
<h3>
<?php
echo $_GET['error'];
?>
<h3>
推荐阅读
- github - 无法从 netbeans 连接到我的 github 存储库
- rest - 可以采用 2 种不同格式的 API 的 JSON 格式输入中字段的相同或不同名称
- node.js - 如何在 HTTP 请求到达目的地之前知道它的大小?
- python - 使用 pywikibot 从 Mediawiki 服务器下载完整的页面列表,而无需遍历页面
- python - 如何在跳过空单元格时将数据从一张表复制到另一张表 - Python 和 Openpyxl
- css - 在现代 CSS 中悬停时更改为相对颜色
- python - Python:指向公共列表对象的指针,为什么使用 2 种方法初始化 2D 矩阵会产生不同的输出?
- python - 不知道如何让用户名存储整齐
- php - 复制目标中没有文件名的文件
- python - 通过匹配删除重复项