gpt4 book ai didi

php - 使用程序方式引发自定义PHP错误的更好的实践

转载 作者:行者123 更新时间:2023-12-03 08:14:57 25 4
gpt4 key购买 nike

我知道以前可能会问过这个问题,但是我想展示我的代码,我想知道这是在做简单的事情还是使代码复杂化?此外,答案说使用trycatch,但是要使用过程方法,所以我想知道我做对了吗?

我该怎么做,例如联系表格

<?php
if(isset($_POST['contact'])) {
$throw_error = array();

//First Block Is Validation
if($_POST['first_name'] == '' || $_POST['last_name'] == '') {
$throw_error['field_blank'] = 'Fields Cannot Be Blank';
} elseif(strlen($_POST['first_name']) < 3) {
$throw_error['char_len'] = 'First Name Cannot Be Less Than 3 Characters';
}

//Second Block Is Process If No Errors Are Found
if(empty($throw_error)) {
$first_name = $_POST['first_name'];
//Don't worry about the sanitizing part, am doing it
//Process the form ahead and then redirect using header()
}
} elseif(!empty($throw_error)) { //Third Block To Throw Error If Any Errors Found
if(isset($throw_error['field_blank'])) {
echo $throw_error['field_blank'];
} elseif(isset($throw_error['char_len'])) {
echo $throw_error['char_len'];
}
}
?>

<form>
<input type="text" name="first_name" />
<input type="text" name="last_name" />
<input type="submit" value="Submit" name="contact" />
</form>

最佳答案

我还建议您使用“尝试/捕获”。您仍然可以在程序块中使用它。

如果您对此一无所知,那么这段代码看起来将像您想要的那样执行,但是它的设计过度。由于用户可能会遇到 field_blank char_len 错误,因此您只需要一个字符串错误变量。

$error = NULL;
if($_POST['first_name'] == '' || $_POST['last_name'] == '') {
$error = 'Fields Cannot Be Blank';
} elseif(strlen($_POST['first_name']) < 3) {
$error = 'First Name Cannot Be Less Than 3 Characters';
}

...
if(!empty($error)) {
echo $error;
}

如果您需要捕获并显示多个非排他性错误,则可以使用示例代码中引用的数组,然后遍历值,而不是制作巨型if/elseif块。
} elseif(!empty($throw_error)) { //Third Block To Throw Error If Any Errors Found
foreach($throw_error as $key => $message) {
echo $message.'<br>';
}
}

关于php - 使用程序方式引发自定义PHP错误的更好的实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com