Php 表单提交保持在同一页上,使用curl发布

Php 表单提交保持在同一页上,使用curl发布,php,curl,Php,Curl,我有一个表单(form.php)和一个处理表单的页面(record.php)。我希望在提交表单时,用户能够停留在form.php上,因此我一直在使用curl。目前,当我加载页面时,它只是缓冲几个小时,什么也不做,我不知道为什么。这就是我的form.php <?php function post_to_url($url, $data) { $fields = ''; foreach($data as $key => $value) {

我有一个表单(form.php)和一个处理表单的页面(record.php)。我希望在提交表单时,用户能够停留在form.php上,因此我一直在使用curl。目前,当我加载页面时,它只是缓冲几个小时,什么也不做,我不知道为什么。这就是我的form.php

<?php
       function post_to_url($url, $data) {
       $fields = '';
       foreach($data as $key => $value) { 
          $fields .= $key . '=' . $value . '&'; }
       rtrim($fields, '&');        
       $post = curl_init();        
       curl_setopt($post, CURLOPT_URL, $url);
       curl_setopt($post, CURLOPT_POST, count($data));
       curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
       curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
       $result = curl_exec($post);
       curl_close($post);
       }
       if(isset($_POST["ename"])){
       $ename = $_POST["ename"];
       $message = $_POST["message"];
       $etype = $_POST["etype"];
       $date = $_POST["datepicker"];
       $question = $_POST["question"];
       $rtype = $_POST["rtype"];
       $allowed1 = strtolower($_POST["allowed1"]);
       $allowed2 = strtolower($_POST["allowed2"]);
       $allowed3 = strtolower($_POST["allowed3"]);
       $allowed4 = strtolower($_POST["allowed4"]);
       $eforward = strtolower($_POST["eforward"]);
       $data = array(
       "ename" => "$ename",
       "message" => "$message",
       "etype" => "$etype",
       "date" => "$$date",
       "question" => "$question",
       "rtype" => "$rtype",
       "allowed1" => "$allowed1",
       "allowed2" => "$allowed2",
       "allowed3" => "$allowed3",
       "allowed4" => "$allowed4",
       "eforward" => "$`enter code here`eforward"
        );

    post_to_url("URL to Post to", $data);

    }

    ?>

    <form id="form" name="form" method="post" action="form.php">
      <label for="ename">Event Name</label>
      <input name="ename" type="text" id="ename">
      <label for="message">Message</label>
      <textarea name="message" id="message"></textarea>
      <label for="etype">Response Required</label>
      <select name="etype" size="2" id="etype">
        <option value="0" selected="selected">No</option>
        <option value="1">Yes</option>
      </select>
     Event Resender End Date: 
      <input name="datepicker" type="text" id="datepicker" size="10">
    MM/DD/YYYY <select name="eforward" id="eforward">
                    //dynamic select            </select><br>
      <label for="question">Question for responses</label>
    <input type="text" name="question" id="question" maxlength="18"><br>
      <label for="rtype">Response Type</label>
      <select name="rtype" size="3" id="rtype">
        <option value="0" selected="selected">Standard Yes/No Response</option>
        <option value="1">Create Responses</option>
        <option value="2">Get Users Own Response</option>
      </select>
Response Options<br>Only 1 Response option is required.<br></h4>
        <label for="allowed1">Option 1</label>
        <input type="text" name="allowed1" id="allowed1" maxlength="12">Max Length = 12
        <label for="allowed2"><br>
          Option 2</label>
        <input type="text" name="allowed2" id="allowed2" maxlength="12">
        <br>
          <label for="allowed3">Option 3</label>
          <input type="text" name="allowed3" id="allowed3" maxlength="12">
          <label for="allowed4"><br>
            Option 4</label>
          <input type="text" name="allowed4" id="allowed4" maxlength="12">
           </div>
        </div>
         <input name="submit" type="submit" value="Send Event Message">
         </form>

事件名称
消息
需要答复
不
对
事件重新发送结束日期:
年月日
//动态选择
答覆问题
响应类型 标准是/否响应 创建响应 获取用户自己的响应 响应选项
只需要一个响应选项。
选择1 最大长度=12
选择2
选择3
选择4
好吧,这根本不是
curl
的目的

想象一下:

你有你的服务器,这是你的php代码运行的地方,你有你的客户机,这是你发送HTML/CSS/JS的对象-

这个页面永远处于缓冲状态的原因是curl正在运行,但是没有用,因为您不正确地使用了它

当您希望您的服务器与其他服务器对话时,使用Curl

现在-如果您想让表单正常工作,请不要使用CURL,使用AJAX---有很多教程,但这是我最喜欢的,也是我学习如何使用AJAX的方式--

请查看:


这是发布到您服务器上的文件吗?是的,两者都在同一台服务器上,Folder然后我不明白为什么您会使用curl将表单操作设置为“record.php”,然后重定向回form.php,或者集成并提交到同一页面如果我将表单更改为post到record.php,record.php将加载到浏览器中。我在record.php中有很多sleep(),所以如果可能的话,我不希望用户加载该页面,不需要ajax,只需要使用php properlyHA,事实上-!但是,如果您想提交表单而不重新加载页面,就像OP询问的那样,您必须使用Ajax。他只是不想重新加载页面,因为他的表单处理脚本是次优修复,这是首选策略