如何解决foreach 验证在我的情况下不起作用 PHP
我正在尝试使用 PHP 中的 foreach 函数验证输入,但在我的情况下它不起作用。
我也在尝试使用 variables
模式检查空文本框。
我还检查了同一个 StackOverflow 和 SitePoint 上的其他线程,但这对我没有帮助。
请帮助我如何做同样的事情。
我想要做的代码在这里code editor -
$remark = trim(stripslashes(htmlspecialchars($_POST['remark'])));
$remark = preg_replace(['/\s{2,}/','/[\t\n]/'],' ',$remark);
$name = trim(stripslashes(htmlspecialchars($_POST['name'])));
$name = preg_replace(['/\s{2,$name);
foreach ($_POST as $key => $value) {
if (empty($_POST[$remark])) {
$msg = ['status' => 'error','message' => $value[$remark] . ' is required'];
echo json_encode($msg);
exit();
} else if (!preg_match("/^[a-zA-Z-' ]*$/",($_POST[$remark]))) {
$msg = ['status' => 'error','message' => $value[$remark] . ' is not valid pattern'];
echo json_encode($msg);
exit();
} else {
$msg = ['status' => 'error','message' => 'OK'];
echo json_encode($msg);
exit();
}
}
解决方法
到目前为止,我可以看到您可能会在这里遇到许多错误。
您必须在 isset()
函数中编写所有验证代码。
例如。您希望在单击按钮时执行所有验证
在这种情况下,你需要使用这样的东西
if (isset($_POST['submit_button_name'])) {
$remark = trim(stripslashes(htmlspecialchars($_POST['remark'])));
$remark = preg_replace(['/\s{2,}/','/[\t\n]/'],' ',$remark);
$name = trim(stripslashes(htmlspecialchars($_POST['name'])));
$name = preg_replace(['/\s{2,$name);
foreach ($_POST as $key => $value) {
if (empty($_POST[$remark])) {
$msg = ['status' => 'error','message' => $rate[$remark] . ' is required'];
echo json_encode($msg);
break;
} else if (!preg_match("/^[a-zA-Z-' ]*$/",($_POST[$remark]))) {
$msg = ['status' => 'error','message' => $rate[$remark] . ' is not valid pattern'];
echo json_encode($msg);
break;
} else {
$msg = ['status' => 'error','message' => 'OK'];
echo json_encode($msg);
break;
}
}
}
并使用 break
而不是 exit()
使消息可见和可读。因为 exit()
停止脚本并且永远不会执行之后的行,而 break
只停止 foreach
并给您想要看到的消息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。