无表格发送POST数据

时间:2010-09-23 17:21:12

标签: php post data-transfer

我是否可以将一个字符串或另一条信息发送到另一个.php文件而不使用它[因此不是通过GET而是通过POST符合我所知道的]而不使用表单?

6 个答案:

答案 0 :(得分:21)

如果您不希望用户看到您的数据,请使用PHP会话。

用户仍然可以访问(并可操作)发布请求中的数据。

在PHP会话上结帐this tutorial

答案 1 :(得分:17)

如果您不想要表单,可以使用AJAX发送POST请求。

使用jquery $.post方法非常简单:

$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
    alert('successfully posted key1=value1&key2=value2 to foo.php');
});

答案 2 :(得分:9)

使用SESSION发送您的数据而不是发布。

session_start();
$_SESSION['foo'] = "bar";

在收到请求的页面上,如果你绝对需要POST数据(一些奇怪的逻辑),你可以在开头做这个:

$_POST['foo'] = $_SESSION['foo'];

发布数据的有效性与发送POST时相同。

然后销毁会话(如果您出于其他目的需要会话,则只需取消设置字段)。

重要的是销毁会话或取消设置字段,因为与POST不同,SESSION将保持有效,直到您明确销毁它或直到浏览器会话结束。如果你不这样做,你可以观察到一些奇怪的结果。例如:您使用sesson过滤某些数据。用户打开过滤器并获取过滤数据。过了一会儿,他返回页面并希望重置过滤器,但不是:他仍然看到过滤后的数据。

答案 3 :(得分:5)

看一下你可以使用它们发送回来的函数的php文档。

fsockopen()
fputs()

或者只是使用像 Zend_Http_Client 这样的类,它也基于套接字连接。

还使用google找到了neat example

答案 4 :(得分:4)

只需使用:file_get_contents()

// building array of variables
$content = http_build_query(array(
            'username' => 'value',
            'password' => 'value'
            ));
// creating the context change POST to GET if that is relevant 
$context = stream_context_create(array(
            'http' => array(
                'method' => 'POST',
                'content' => $content, )));

$result = file_get_contents('http://www.example.com/page.php', null, $context);
//dumping the reuslt
var_dump($result);

Reference:我对类似问题的回答:

答案 5 :(得分:0)

function redir(data) {
  document.getElementById('redirect').innerHTML = '<form style="display:none;" position="absolute" method="post" action="location.php"><input id="redirbtn" type="submit" name="value" value=' + data + '></form>';
  document.getElementById('redirbtn').click();
}
<button onclick="redir('dataToBeSent');">Next Page</button>
<div id="redirect"></div>

您可以使用此方法创建一个新的隐藏表单,当单击按钮[下一页]时,该表单的“数据”由“发布”发送到“ location.php”。