【问题标题】:foreach validation not working in my case PHPforeach 验证在我的情况下不起作用 PHP
【发布时间】:2021-06-04 17:48:22
【问题描述】:

我正在尝试使用 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,}/', '/[\t\n]/'], ' ', $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();
    }
}

【问题讨论】:

  • 您能具体说明您遇到了什么错误吗?我现在可以通过查看您的代码为您提供快速的解决方案。您可以使用 break 而不是 exit() 吗,因为 exit() 会停止脚本,而 break 只会破坏 foreach
  • 没有任何错误发生

标签: php arrays validation foreach


【解决方案1】:

到目前为止,我可以看到您在这里可能会遇到许多错误。 您必须在 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,}/', '/[\t\n]/'], ' ', $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 并给你你想看到的消息

【讨论】:

  • 我只收到这条消息is required这里不显示what is required ?
  • 您能否发布图片或您遇到的错误类型。会更有意义。并且最好也发布 HTML。
  • 好的,先生-我以后会关心这个的,请看图片https://ibb.co/RBdX2j7 https://ibb.co/xH3Dx9Nhttps://ibb.co/7k5dzWV
  • 图像不清晰。请问可以使用在线代码编辑工具吗
  • 我提到了我收到的信息。我正在使用什么代码,以及通过 dev 发布的数据。这是我在裁剪图像链接中的真实代码先生
猜你喜欢
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多