php - 我收到此错误:解析错误:语法错误,C:\wamp\www 中出现意外的 'else' (T_ELSE)。我很难找到来源
问题描述
希望有新鲜眼光的人可以提供帮助。谢谢-R
检查提交按钮是否被点击---安全(signup.php 文件中的按钮类型)--/
if (isset($_POST['submit'])) {
/*INCLUDE DATABASE FILE--*/
include_once 'dbh.inc.php';
/ CREATE A VARIABLE--(CALLED FIRST)--(是注册表单中的第一个输入) (允许将代码转换为文本) [[无法将代码输入框}}-- /
$first = mysqli_real_escape_string($conn, $_POST['first']);
$last = mysqli_real_escape_string($conn, $_POST['last']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
//ERROR HANDLERS
//CHECK FOR EMPTY FIELDS---(double pipes means or in php)
if (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) {
header("Location: ../signup.php?signup=empty");
exit();
} else {
//CHECK IF INPUT CHARACTERS ARE VALID
if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {
header("Location: ../signup.php?signup=invalid");
exit();
} else {
//CHECK IF EMAIL IS VALID
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
header("Location: ../signup.php?signup=email");
exit();
} else {
$sql = "SELECT * FROM users WHERE user_uid='$uid'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0){
header("Location: ../signup.php?signup=usertaken");
exit();
} else {
//HASHING PASSWORD---
$hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
//INSERT USER INTO DATABASE
$sql= "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first','$last', '$email', '$uid','$hashedPwd' );";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
}
} else{
/*COLON MUST NOT HAVE SPACE BETWEEN LOCATION---SPACE BETWEEN ../---(TAKES BACK A DIRECTORY)--PREVENTS GOING TO URL TO ACCESS FILE PAGE.--TAKES USER
BACK TO SIGNUP PAGE*/
header("Location: ../signup.php");
/*exit--closes off script from running--(IF ANYTHING AFTER EXIT FUNCTION)*/
exit();
}
解决方案
下次请正确格式化您的代码,以便将来避免此类错误:
<?php
if (isset($_POST['submit'])) {
include_once 'dbh.inc.php';
$first = mysqli_real_escape_string($conn, $_POST['first']);
$last = mysqli_real_escape_string($conn, $_POST['last']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
if(empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) {
header("Location: ../signup.php?signup=empty");
exit();
}else{
if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {
header("Location: ../signup.php?signup=invalid");
exit();
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
header("Location: ../signup.php?signup=email");
exit();
}else{
$sql = "SELECT user_uid FROM users WHERE user_uid='$uid'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if($resultCheck > 0){
header("Location: ../signup.php?signup=usertaken");
exit();
}else{
$hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
$sql= "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first','$last', '$email', '$uid','$hashedPwd' );";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
}
}else{
header("Location: ../signup.php");
exit();
}
我更改了这部分代码:
if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {
header("Location: ../signup.php?signup=invalid");
exit();
} else {
//CHECK IF EMAIL IS VALID
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
header("Location: ../signup.php?signup=email");
exit();
} else {
因为您可以email
在检查用户的first
和last
名称后使用else if
.
PS我不想成为这种网站的用户,因为每次输入错误时它都会重定向你。理想情况下,如果您可以在他们仍然处于表单中时告诉他们输入中的错误,那么他们不必在重定向后重新输入所有内容并每次都弄清楚他们做错了什么,这将是最好的。
HTML5 电子邮件输入将检查电子邮件是否具有有效格式,因此您也可以使用它。
}
您的代码中的问题是最终else
语句之前的缺失
推荐阅读
- r - 如何使用多个几何图形和 ggplot2 中的一个因子更改绘图顺序
- angular - 为 Angular 9 编写测试用例 - 谷歌分析事件
- c++ - 这个虚函数声明是什么意思?
- scala - 使用 Mill 或 SBT 在测试中运行时找不到 Scala 脚本引擎
- angular - Safari(Mac 和 iOS)上的 Angular 加载时间太长(太慢),比 Chrome(PC 和 Android)长得多
- c - __LINE__ 在宏定义中,代表宏调用的行
- scala - 我们可以在 Scala 中序列化更新的对象吗?
- python - 如何将 Dataframe 的第一行读取为数据行而不是标题
- javascript - CSS 捆绑不适用于 MiniCssExtract 插件和 css-loader (Webpack)
- javascript - 多个正则表达式/模式验证 Joi Hapi