是否可以使用PHP编写表单提交文件?

是否可以使用PHP编写表单提交文件?,php,forms,methods,submit,Php,Forms,Methods,Submit,使用PHP可以创建一个伪表单提交而不生成表单吗?只需初始化和声明变量,然后通过POST或GET方法将它们传递到另一个页面?当然。您可以使用cURL来实现这一点,这个链接应该解释一些基本知识:-但是在互联网上有数百个cURL教程可以做类似的事情 一旦你掌握了卷曲的窍门,它就很容易理解和使用 下面是一个代码示例: <? define('POSTURL', 'http://www.test.com/search.php'); define('POSTVARS', 'listID=29&

使用PHP可以创建一个伪表单提交而不生成表单吗?只需初始化和声明变量,然后通过POST或GET方法将它们传递到另一个页面?

当然。您可以使用cURL来实现这一点,这个链接应该解释一些基本知识:-但是在互联网上有数百个cURL教程可以做类似的事情

一旦你掌握了卷曲的窍门,它就很容易理解和使用

下面是一个代码示例:

<?
define('POSTURL', 'http://www.test.com/search.php');
 define('POSTVARS', 'listID=29&request=suba&SubscribeSubmit=Subscribe&EmailAddress=');// POST VARIABLES TO BE SENT

 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    ,POSTVARS);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $data = curl_exec($ch);

?>


这样的办法应该行。

肯定行。您可以使用cURL来实现这一点,这个链接应该解释一些基本知识:-但是在互联网上有数百个cURL教程可以做类似的事情

一旦你掌握了卷曲的窍门,它就很容易理解和使用

下面是一个代码示例:

<?
define('POSTURL', 'http://www.test.com/search.php');
 define('POSTVARS', 'listID=29&request=suba&SubscribeSubmit=Subscribe&EmailAddress=');// POST VARIABLES TO BE SENT

 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    ,POSTVARS);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $data = curl_exec($ch);

?>


类似的东西应该可以使用。

您正在寻找的是一个用于创建此类请求的库。

您正在寻找的是一个用于创建此类请求的库。

理论上,您可以在Apache中生成此表单提交的内部请求;实际上,您必须像其他建议的那样使用PHP的http流包装器或curl。

理论上,您可以在Apache中生成此表单提交的内部请求;实际上,您必须像其他建议的那样使用PHP的http流包装器或curl。

您可以尝试这样做

$_POST = array(
                        'lname'=>urlencode($last_name),
                        'fname'=>urlencode($first_name),
                        'title'=>urlencode($title),
                        'company'=>urlencode($institution),
                        'age'=>urlencode($age),
                        'email'=>urlencode($email),
                        'phone'=>urlencode($phone)
                );

$_GET = array(); // no get
$_SERVER['REQUEST_METHOD'] = "POST";
$_SERVER['REQUEST_URI'] = '/anotherpage.php';
// set REQUEST_PATH, REQUEST_PATHINFO, REQUEST_SCRIPTNAME etc
// now it will be like this anotherpage.php was requested with a form
include("anotherpage.php");

如果你想避免卷曲,但我不推荐,因为它很快就会变得凌乱。

你可以尝试这样做

$_POST = array(
                        'lname'=>urlencode($last_name),
                        'fname'=>urlencode($first_name),
                        'title'=>urlencode($title),
                        'company'=>urlencode($institution),
                        'age'=>urlencode($age),
                        'email'=>urlencode($email),
                        'phone'=>urlencode($phone)
                );

$_GET = array(); // no get
$_SERVER['REQUEST_METHOD'] = "POST";
$_SERVER['REQUEST_URI'] = '/anotherpage.php';
// set REQUEST_PATH, REQUEST_PATHINFO, REQUEST_SCRIPTNAME etc
// now it will be like this anotherpage.php was requested with a form
include("anotherpage.php");

如果你想避免卷曲,但我不推荐它,因为它会很快变得凌乱。

我不确定你是否可以设置POST选项,但只要GET是可以接受的,你就可以很容易地做到这一点(我不是专家,不需要测试就可以解决这个问题,并且保证没有bug,所以你必须测试):


这将使您的帖子变成GET。

我不确定您是否可以设置帖子选项,但只要GET是可接受的,您就可以非常轻松地完成此操作(我不是专家,无法在不进行测试的情况下快速完成此操作,也不能保证没有bug,因此您必须进行测试):



这将使您的帖子变成GET。

是的,但您可能需要自己写出HTTP标题。。。我对这个问题的了解不足以给你们一个实际的答案,但我知道这是可能的。这个问题的目的是什么?这种模拟的目标是什么?这种模拟的目标是在表单的action属性中未定义的页面之间传递数组或类。在页面之间传递的变量将用于另一个页面上的显示。是的,但您可能需要自己写出HTTP头。。。我对这个问题的了解不足以给你们一个实际的答案,但我知道这是可能的。这个问题的目的是什么?这种模拟的目标是什么?这种模拟的目标是在表单的action属性中未定义的页面之间传递数组或类。页面间传递的变量将用于另一个页面上的显示。我认为cURL不用于在服务器内传递数据,而应用于服务器到服务器的提交。只要您通过本地主机点击脚本,它就会正常执行。您要做的是服务器到服务器的传输,碰巧它是同一台服务器。如果您试图在内部传递数据,只需从任何PHP页面调用该函数/代码即可。无需通过HTTP协议与您自己的服务器通信。调用函数或代码不是一个合适的解决方案。页面之间传递的变量将用于另一页面上的显示。它将决定一些HTML是如何构建的。我认为cURL不是用来在服务器内传递数据的,而是应该用于服务器到服务器的提交。只要您通过本地主机点击脚本,它就会正常执行。您要做的是服务器到服务器的传输,恰好是同一台服务器。如果您试图在内部传递数据,只需从任何PHP页面调用该函数/代码即可。无需通过HTTP协议与您自己的服务器通信。调用函数或代码不是一个合适的解决方案。页面之间传递的变量将用于另一页面上的显示。它将决定一些HTML是如何构建的。据我所知,cURL不是用来在服务器内传递数据的,而是用来在服务器之间传递数据的。感谢您的教程。没有理由不能使用它在服务器内传递数据。如果不使用cURL或其他库,您将无法在任何地方发布数据,我不知道还有其他任何库接近cURL。您可以使用PHP的http流包装器。但每个人似乎都喜欢卷发。@事实上,我已经注意到了对卷发的喜爱。应该是更干净的方法来完成这项任务,但从我的一些代码来看,情况并非如此。我的理解是,cURL不是用来在服务器内传递数据,而是用来在服务器之间传递数据。感谢您的教程。没有理由不能使用它在服务器内传递数据。如果不使用cURL或其他库,您将无法在任何地方发布数据,我不知道还有其他任何库接近cURL。您可以使用PHP的http流包装器。但每个人似乎都喜欢卷发。@事实上,我已经注意到了对卷发的喜爱。应该是更干净的方法来完成这项任务,但是从我的一些代码来看,它不是这样的。我想我可以这样做。谢谢你的示例代码。我想我可以这样做。感谢您提供的示例代码。我喜欢您提供的示例代码,但我可以看到哪里会很快变得混乱。我喜欢您提供的示例代码,但我可以看到哪里会很快变得混乱。