开发者

How to post from php with cookies?

开发者 https://www.devze.com 2023-03-28 06:30 出处:网络
How can I make a post request using cookies from php. My php code: <?php $time_start = microtime(true);

How can I make a post request using cookies from php.

My php code:

<?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_开发者_StackOverflow社区end - $time_start;
echo "<br><br>execute time $time seconds\n";
?>

But this code won't work on the server; cookie not sent.


[EDIT] To use PHP to post to a page that the user will NOT navigate to, you can use CURL:

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

Where in the example, you set $fields to your cookie values:

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

[EDIT AGAIN] By your newly posted code it looks like you are trying to create a cookie on the page that you are posting to. First of all, creating cookies for other websites would seem to be a big security risk, so I'm 99.9% certain that this has never been nor ever will be possible. Secondly, PHP is not a browser and can't store cookies for other sites...so even if your post created a cookie, the user's browser would not have that cookie. All you can do is post 'something'=> urlencode('value'), and then the page you are posting to will have to create the cookie on their end. However, since PHP can't hold cookies since it's not a browser, this would be pointless.

If you want the user's browser to have a cookie, then you need to use something like jQuery's $.post. Using jQuery's post() method will use the user's browser to go to the page and post data. The page that gets the posted data can then create a cookie on the user's browser.

[Read These] they may contain some info for you. Is this what you're trying to do?

Simulating a cookie-enabled browser in PHP

Simulating a POST with PHP & cURL

It does sound like CURL should be able to mimic a browser's cookie capabilities...so you might be able to send cookie data, though, as I said, you woudln't be able to set the user to those cookies or anything...since I'm not sure of your purpose, that makes an answer harder:

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


Read this, maybe it will help. http://www.w3schools.com/PHP/php_cookies.asp

0

精彩评论

暂无评论...
验证码 换一张
取 消