微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

foreach 验证在我的情况下不起作用 PHP

如何解决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 举报,一经查实,本站将立刻删除。