Php 如果发生错误,如何保持在同一页上?

Php 如果发生错误,如何保持在同一页上?,php,Php,下面的代码经过简化以说明我的问题。这是一个用于捕获数据的页面,它将发布捕获的信息并传递到另一个php页面进行处理。我正在尝试确保输入所需的字段,但无论是否有错误,它都会转到调用页面。 有人能帮忙吗 <?php if (empty($_POST) === false) { $required_field = array('first_name','last_name'); foreach ($_POST as $key=>$value) { if (empt

下面的代码经过简化以说明我的问题。这是一个用于捕获数据的页面,它将发布捕获的信息并传递到另一个php页面进行处理。我正在尝试确保输入所需的字段,但无论是否有错误,它都会转到调用页面。 有人能帮忙吗

<?php
  if (empty($_POST) === false) {
    $required_field = array('first_name','last_name');
    foreach ($_POST as $key=>$value) {
    if (empty($value) && in_array($key, $required_field) === true) {
      $errors[] = 'Fields marked with asterisk are required';
      break 1;
      }
    }
  }
?>
<h1>Input Form</h1>

<?php
  if (empty($errors) === false) {
    echo output_errors($errors);
  }
?>

<form method="POST" action="UpdateDB.php" name="UpdateForm">
   <input type=text size="19" maxlength="19" name="firstname">
   <input type=text size="19" maxlength="19" name="lastname">   
   <input type="submit" value="Submit" >
</form>

输入表格

将表单提交到当前页面,方法是保留一个空的
action
属性(并在此处进行处理),或者使用当前页面URL添加一个隐藏字段:

<input type="hidden" name="sourceUrl" value="<?= $_SERVER['REQUEST_URI']; ?>" />

下面的代码将检查页面是否使用POST方法调用,如果没有,它将打印输入表单

php脚本必须存储在UpdateDB.php中

<?php

    if(!isset($_POST)){

    echo "<h1>Input Form</h1>";
    echo "<form method="POST" action="UpdateDB.php" name="UpdateForm"> <br/>" .
       "<input type=text size="19" maxlength="19" name="firstname"> <br/>" .
       "<input type=text size="19" maxlength="19" name="lastname">   <br/>" .
       "<input type="submit" value="Submit" >" .
    "</form>";
    }

    else{
         /*Form Action code goes here*/
          }
        }
    }


    ?>

好的,我找到了一个很好的例子来说明如何做到这一点

if(empty($errors)==false)
if(!empty($errors))
与为什么第一个相同?此脚本是否
updatedb.php
?如果没有,那么您将提交到其他脚本,错误处理代码将永远不会被调用。这是
UpdateDB.php
还是您的其他脚本?如果它是另一个,那么绝对是的,表格将始终张贴到那里。抱歉混淆。这是另一个脚本。原始示例是一个用于捕获数据并发布到另一个页面进行处理的页面。但是,数据捕获页面的示例无法验证。我是php新手。我做了一个类似的操作,但是表单返回到自身进行数据库更新(没有action=“xxx”)。我不知道该怎么做,但我肯定需要将数据发布到另一个表单,因为很难将逻辑传输回调用页面。希望有人能帮忙。所以第一部分是(1)清空action属性和(2)添加隐藏的url。我在哪里检查错误?源和目标页面?不,你误解了。有两种方法可以做到这一点:通过在同一页面上执行空操作并检查错误(这样表单将始终提交到当前页面),或者,通过将处理留在另一个脚本中,并使用隐藏字段重定向back,我尝试使用隐藏字段存储url,并在调用的页面中检查_POST变量。它现在可以返回到调用页面,但是如何在调用页面中返回错误呢。我是否使用echo发回有关错误的隐藏字段?您可以将错误消息存储在会话中。或者将错误作为代码传递到Url,如
?error=5
,然后在其他脚本中显示基于
$\u GET['error']
代码的消息
<?php

    if(!isset($_POST)){

    echo "<h1>Input Form</h1>";
    echo "<form method="POST" action="UpdateDB.php" name="UpdateForm"> <br/>" .
       "<input type=text size="19" maxlength="19" name="firstname"> <br/>" .
       "<input type=text size="19" maxlength="19" name="lastname">   <br/>" .
       "<input type="submit" value="Submit" >" .
    "</form>";
    }

    else{
         /*Form Action code goes here*/
          }
        }
    }


    ?>