【问题标题】:PHP error handling while remaining on form page [duplicate]保留在表单页面上时的PHP错误处理[重复]
【发布时间】:2025-12-23 19:40:11
【问题描述】:

我有一个需要特定格式整数的条纹银行帐户验证表。没有小数,没有字母等。当用户输入错误并提交时,页面变成这样:

致命错误:未捕获的 Stripe\Error\InvalidRequest:期待整数...然后是一堆有用但看起来很垃圾的信息

或者,如果银行帐户已经过验证,则如下所示:

致命错误:未捕获的 Stripe\Error\InvalidRequest:此银行帐户已经过验证.....然后是一堆有用但看起来很垃圾的信息

它用这个错误替换了我的页面和我的徽标等,因此用户必须单击后退按钮才能重试。

我意识到我可以为这些事情添加自己的错误检查,比如整数会很容易,已经验证的会更具挑战性。然而,由于条纹已经通过检测错误并以这种格式返回它们的努力,我不想自己做并重新发明*。

那么,说了这么多,我怎样才能让用户在同一页面上保持表单仍然可见,并且只在顶部显示错误,以便他们知道要修复什么?

如果输入格式不正确或存在其他问题,以下代码会引发错误:

if ( !empty($_POST["valueOne"]) and !empty( $_POST["valueTwo"]))
        {

            https://dashboard.stripe.com/account/apikeys
            \Stripe\Stripe::setApiKey("secret key");

            // get the existing bank account
            $customer = \Stripe\Customer::retrieve($customerHash);
            $bank_account = $customer->sources->retrieve($bankHash);

            // verify the account
            $bank_account->verify(array('amounts' => array($_POST['valueOne'], $_POST['valueTwo'])));
        }

【问题讨论】:

  • 您考虑过使用客户端验证吗?这将在提交表单之前捕获可能的错误。您仍然希望保留服务器端验证。但是客户端验证通常用于您描述的场景中。
  • 在您的 PHP 代码中添加错误处理以处理任何错误 (try ... catch) 并确保它始终以理想的方式产生输出。您还可以考虑使用 Ajax 调用来调用服务器验证。
  • .....then a bunch of useful but garbage-looking information 如果你能理解它可能是有用的信息。
  • @Martin 哦,另一个是这个吗? *.com/questions/162159/… 哈哈!
  • @Martin 马上就来........等等。

标签: php error-handling


【解决方案1】:

这是使用 JavaScript / jQuery 进行客户端验证的经典案例。客户端验证的目的是防止表单在值不符合要求(或缺失)时被提交。

您仍然希望保留服务器端验证,因为客户端验证可能会被破坏。

但客户端验证是确保提交的值“正确”的第一步。

进一步阅读:JavaScript: client-side vs. server-side validation

【讨论】:

  • 你在抄袭一个可能的重复项
  • @Fred-ii-:什么?这些是我自己的想法,用我自己的话来说。问题是询问 PHP 验证,我的回答是这是客户端验证的情况。在我写完我的答案之前,我什至没有去寻找“进一步阅读”。
  • 你在开玩笑吧?
  • @Fred-ii- :绝对不是在开玩笑。看我的简介。我不回答重复的问题。我将它们标记为重复项。如果 OP 询问客户端验证,我会标记这个。
  • “用我自己的话来说” - 哦?我认为你在这里也用了你的话对吗? *.com/questions/162159/… 来吧...您写的内容太长,无法发表评论,如果有的话,应该是社区维基。