php - 无法将值分配给错误数组以处理 PHP 中的错误
问题描述
我试图在 PHP 中创建一个 POST 请求表单。当用户提交表单时,代码应该验证输入并将其放入称为错误的数组中。之后,系统会检查该数组是否为空。如果它有东西,它会撞到一个警告框。
我面临的问题是无论我如何尝试分配值,错误数组仍然为空。以下是完整代码。
<?php
$errors = array('name' => '', 'age' => '' ); // array containing errors
// check get request. The GET will be an array storing data to be transfered to server as GET.
// _ is global var. GET belows will take the value when the submit button pressed
if(isset($_POST['submit'])){ // when user submit POST request
errCheck();
if(!empty($errors['name'])) {
phpAlert($errors['name']);
}; // check if errors exist
if(!empty($errors['age'])) {
phpAlert($errors['age']);
};
}
function errCheck() { // validate user input
if(empty($_POST['name'])) {
$errors['name'] = 'Name can\'t be emty';
}
elseif(!preg_match('/^[a-zA-Z\s]+$/', $_POST['name'])){
$errors['name'] = 'Only letters available for name.';
};
if(empty($_POST['age'])) {
$errors['age'] = 'Age can\'t be empty';
}
}
function phpAlert($msg){ // in case errors exist
echo $msg;
echo '<script type="text/javascript">alert("' . $msg . '")</script>';
};
?>
<!DOCTYPE html>
<html>
<head>
<title> my PHP </title>
</head>
<body>
<h4 class="center">Add a Person</h4>
<form class="white" action="15.php" method="POST"> <!-- GET request form -->
<label>Name: </label>
<input type="text" name="name"> <!-- name is the key for http request -->
<label>Age: </label>
<input type="number" name="age">
<div class="center">
<input type="submit" name="submit" value="submit">
</div>
</form>
</body>
</html>
预期结果:当用户没有输入任何内容或在“名称”输入中写入非字母内容时,会出现警告框。
当前问题:代码运行,但无论我在输入中输入什么,它总是会碰到 2 个空白警报框。错误数组始终为空。
我尝试过的(但不起作用):制作错误全局数组,重新排列代码,print_r 一切($_POST 有值但没有 $errors),重新制作函数 phpAlert。
已编辑:使代码更易于阅读。
解决方案
在函数 errCheck 中定义错误并返回。
// check get request. The GET will be an array storing data to be transfered to server as GET.
// _ is global var. GET belows will take the value when the submit button pressed
if(isset($_POST['submit'])){ // when user submit POST request
$errors = errCheck();
if(!empty($errors['name'])) {phpAlert($errors['name']);}; // check if errors exist
if(!empty($errors['age'])) {phpAlert($errors['age']);};
}
function errCheck() { // validate user input. Throw errors into errors array
//Define the array of error within this function
$errors = array('name' => '', 'age' => '' ); // array containing errors
if(empty($_POST['name'])) {$errors['name'] = 'Name can\'t be emty';}
elseif(!preg_match('/^[a-zA-Z\s]+$/', $_POST['name'])){ $errors['name'] = 'Only letters available for name.';};
if(empty($_POST['age'])) {$errors['age'] = 'Age can\'t be empty';}
//Return the errors
return $errors;
}
function phpAlert($msg){ // in case errors exist
echo $msg;
echo '<script type="text/javascript">alert("' . $msg . '")</script>';
};
推荐阅读
- apache-beam - 数据流:设置 DataflowPipelineDebugOptions
- java - 在使用“java-library”和“api”而不是“compile”时获取 Gradle 中的运行时库列表
- java - 将 JSON 对象作为对象而不是作为字符串写入文件
- swift - 如何在swift中从字符串中提取所选字符[已归档]
- android - 使用数据绑定清理项目错误:无法删除文件 androidx.databinding.library.baseAdapters--setter_store.json
- gmail-api - 是否可以使用 User.messages.list 同步收件箱消息?
- java - 传递了错误的参数。爪哇
- javascript - 如何让 if/else 语句在函数内部工作
- sql-server - 授予创建数据库的访问权限,但不授予对现有数据库的访问权限
- kubernetes - 可以从 metrics-server 获取哪些指标用于 Horizontal Pod Autoscaling