Php 表单提交保持在同一页上,使用curl发布
我有一个表单(form.php)和一个处理表单的页面(record.php)。我希望在提交表单时,用户能够停留在form.php上,因此我一直在使用curl。目前,当我加载页面时,它只是缓冲几个小时,什么也不做,我不知道为什么。这就是我的form.phpPhp 表单提交保持在同一页上,使用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) {
<?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。他只是不想重新加载页面,因为他的表单处理脚本是次优修复,这是首选策略