使用POST将表单数据发送到当前页面和另一个PHP页面同时发送

时间:2016-11-29 10:49:03

标签: php forms

我看到另一个人在堆栈溢出中问这个问题,但我没有从'his post'得到任何明确的答案/想法。我想知道是否有办法通过POST将表单数据发送到当前的PHP页面addstudio.php以验证输入的数据&如果输入的数据有效,它将被重定向到下一个PHP页面getstudio.php

要将表单数据发送到当前页面,我使用了以下行: -

<form action = "<?php $_PHP_SELF ?>" method = "post">

这样做只是为了验证表单信息,如果表单留空,则在同一个PHP页面中显示一条消息,其代码如下所示。

<?php
 $valid = true;
 $studioIdError = $studioNameError = $studioAddressError = $studioPCodeError = $studioTelNoError = "";
 if($_SERVER["REQUEST_METHOD"] == "POST"){
     if(empty($_POST["studioId"])){
         $studioIdError = " *This Field Cannot Be Empty";
         $valid = false;
     }
     if(empty($_POST["studioName"])){
         $studioNameError = " *This Field Cannot Be Empty";
         $valid = false;
     }
     if(empty($_POST["studioAddress"])){
         $studioAddressError = " *This Field Cannot Be Empty";
         $valid = false;
     }
     if(empty($_POST["studioPCode"])){
         $studioPCodeError = " *This Field Cannot Be Empty";
         $valid = false;
     }
     if(empty($_POST["studioTelNo"])){
         $studioTelNoError = " *This Field Cannot Be Empty";
         $valid = false;
     }
 }
?>

对于上面的代码,我想知道是否有一种方法可以在getstudio.php时运行$valid = true页面。

我无法使用代码include 'getstudio.php';,因为我希望getstudio.php在单独的页面上运行。

我无法使用代码header("Location:getstudio.php");exit();运行,因为全局数组$_POST[]中的值不会像直接从表单中调用页面那样发送到PHP页面(例如: - <form action = 'getstudio.php' method = 'post'>)。

getstudio.php时将$_POST[]数组中存储的值发送到getstudio.php页面时,有没有办法运行$valid = true页面?

3 个答案:

答案 0 :(得分:2)

您有几个选择。

  1. 使用AJAX验证表单;然后,如果有效,请进行提交。
  2. 将数据存储在客户端或服务器端之间的某个页面(cookie或会话)。
  3. 发送一个特制的html,使浏览器模仿发送表单的用户。 [丑陋,用户看到重绘]
  4. 将验证和处理保持在同一页面中(为什么要分开?)。
  5. 在任何情况下,在对用户数据采取行动之前不要忘记重新验证,除非绝对确定数据不会受到用户的影响(在上面的列表中,仅当在会话中存储数据时) ,仍然不推荐)。然后,如果再次进行验证,为什么还要单独使用页面呢?

答案 1 :(得分:1)

据我了解你想先发送数据Addstudio.php而不是Getstudio.php,但你想要第二个重定向。

将您的HTML设为:

<form action="getstudio.php" method="POST">
    <!-- etc -->
</form>

使你的Javascript像这样(包括jQuery):

$(".your-form-class").on('submit',function(evt){
    evt.preventDefault();
    var instance = $(this);
    var formData = new FormData($(".your-form-class")[0]);
    $.ajax({
        type:"POST",
        data:formData,
        url:"addstudio.php",
        success:function(response){
            instance.submit();
        }
    });
});

答案 2 :(得分:0)

这是您当前的页面

<?php
 $_POST["studioName"] = 'testdata';
 $valid = true;

 if(empty($_POST["studioName"])){
   $studioNameError = " *This Field Cannot Be Empty";
   $valid = false;
 }

// send data to getstudio.php if valid 
if($valid){  ?>
    <form method="post" action="getstudio.php" id="senddata">
      <input type="hidden" name="postdata" value="<?php print_r($_POST); ?>">  
    </form> 
<script>
    document.getElementById("senddata").submit();
</script>
<?php  } ?>

这是您的getstudio.php文件,用于接收经过验证的帖子数据

<?php
  echo '<pre>';

  print_r($_POST['postdata']);

  die;