无表格发送POST数据

Sam*_*uel 29 php post data-transfer

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

Ste*_*day 22

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

用户仍然可以访问(和可操作)后期请求中的数据.

在PHP Sessions上查看本教程.

  • 为什么这是一个糟糕的解决方案?也许塞缪尔的流程使得劫持会话不是问题。真正解决会话劫持(以不引人注目的方式)的唯一方法是对所有与会话相关的请求使用 SSL。如果 Samuel 担心数据被泄露,他应该使用 SSL。 (2认同)
  • @zolex,拦截帖子数据有什么困难?坐在咖啡馆里运行WireShark就是劫持POST数据所需要的一切.用cookie重新创建请求并发布数据,你很高兴.如果您认为会话是一个糟糕的解决方案,那么SSL是唯一的好解决方案. (2认同)

Dar*_*rov 17

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

使用jquery $ .post方法很简单:

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


Gre*_*gor 9

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

session_start();
$_SESSION['foo'] = "bar";
Run Code Online (Sandbox Code Playgroud)

在您收到请求的页面上,如果您绝对需要POST数据(一些奇怪的逻辑),您可以在开头执行此操作:

$_POST['foo'] = $_SESSION['foo'];
Run Code Online (Sandbox Code Playgroud)

帖子数据的有效性与POST发送时的数据相同.

然后销毁会话(或者如果您需要会话用于其他目的,则取消设置字段).

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


And*_*den 5

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

fsockopen()
fputs()
Run Code Online (Sandbox Code Playgroud)

或者只是使用类似Zend_Http_Client的类,它也基于套接字连接.

还找到了一个使用谷歌的简洁例子 ...


wpc*_*der 5

只需使用: 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);
Run Code Online (Sandbox Code Playgroud)

参考:我对类似问题的回答: