如何从PHP发布cookie?

时间:2011-08-16 16:45:01

标签: php cookies post

如何使用来自php的Cookie发布帖子请求。

我的PHP代码:

<?php
$time_start = microtime(true);
$id=$_GET[id];

$data = http_build_query( array ('act' => 'load_friends_silent', 'al' => '1', 'gid'=>'0' ,'id'=>$id) );


$opts = array(
  'http'=>array(
    'header'=>"Cookie:     something=asdaefefe",
'method'=>"POST",
'content' => $data
  )
);

$context = stream_context_create($opts);
print $context;
$contents = file_get_contents('http://vkontakte.ru/al_friends.php', false, $context);

$fil=fopen("./".$id."ne.txt","w");
echo '<br><br>'.$contents;

fputs($fil,$contents);    

fclose($fil);
chmod("./".$id."ne.txt", 0777);

$time_end = microtime(true);
$time = $time_end - $time_start;
echo "<br><br>execute time $time seconds\n";
?>

但是这段代码不能在服务器上运行; cookie未发送。

2 个答案:

答案 0 :(得分:1)

[编辑] 要使用PHP发布到用户不会导航到的页面,您可以使用CURL:

http://davidwalsh.name/execute-http-post-php-curl

在示例中,您将$ fields设置为Cookie值:

$fields = array(
    'lname' => urlencode($_COOKIE['last_name'] ),
    'fname' => urlencode($_COOKIE['first_name'] ),
    ...
);

[再次编辑] 通过新发布的代码,您似乎正在尝试在要发布到的页面上创建cookie。首先,为其他网站创建cookie似乎是一个很大的安全风险,所以我99.9%肯定这是从来没有过,也永远不可能。其次,PHP不是浏览器,不能存储其他网站的cookie ...所以即使你的帖子创建了一个cookie,用户的浏览器也不会有这个cookie。你所能做的只是发布'something'=&gt; urlencode('value'),然后您要发布的页面必须在其末尾创建cookie。但是,由于PHP不能保存cookie,因为它不是浏览器,因此这将毫无意义。

如果您希望用户的浏览器拥有cookie,那么您需要使用类似jQuery的$ .post。使用jQuery的post()方法将使用用户的浏览器转到页面并发布数据。然后,获取发布数据的页面可以在用户的​​浏览器上创建cookie。

[阅读这些]它们可能包含一些信息。这是你想要做的吗?

Simulating a cookie-enabled browser in PHP

Simulating a POST with PHP & cURL

听起来像CURL应该能够模仿浏览器的cookie功能......所以你可能能够发送cookie数据,但正如我所说,你无法将用户设置为那些cookie或者任何事情......因为我不确定你的目的,这使答案更难:

http://php.net/manual/en/function.curl-setopt.php

答案 1 :(得分:0)

阅读本文,也许会有所帮助。 http://www.w3schools.com/PHP/php_cookies.asp