php怎么模拟post数据,然后保存cookie在客户端,就是说模拟post登陆网站,然后点击跳转到其它页面时处于登陆状态的!

解决方案 »

  1.   

    先帐号密码md5验证,验证通过后,然后创建cookie,然后保存cookie,其他页面设定如果有这个cookie值就转入登录状态。
      

  2.   

    同一个网站的不同页面。如果服务器条件允许,建议使用SESSION。不同网站的可以通过其他方式时间多点同步登录。比如UCENTER。使用COOKIE保存数据时,COOKIE的路径参数建议手写,不要用默认。用默认的话,稍不注意就会出现,路径错误导致COOKIE无法读写的情况。
      

  3.   

    /**
        * 向指定网址发送post请求
        * @parem $url
        * @parem $params
        * @return array
        */
        function _post_request($url, $query_str)
        {
            if ( function_exists('curl_init') && USE_CURL===true )
            {
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $query_str);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla-ylmf-u-api-cli (curl) '.phpversion() );
                $result = curl_exec($ch);
                $errno  = curl_errno($ch);
                curl_close($ch);
                //echo " $url & $query_str <hr /> $errno , $result ";
                return array($errno, $result);
            }
            else
            {
                $context =
                array('http' =>
                        array('method' => 'POST',
                            'header' => 'Content-type: application/x-www-form-urlencoded'."\r\n".
                                        'User-Agent: Mozilla-ylmf-u-api-cli (non-curl) '.phpversion()."\r\n".
                                        'Content-length: ' . strlen($query_str),
                            'content' => $query_str));
                $contextid = stream_context_create($context);
                $sock = fopen($url, 'r', false, $contextid);
                if ($sock)
                {
                    $result = '';
                    while (!feof($sock))
                    {
                        $result .= fgets($sock, 4096);
                    }
                    fclose($sock);
                }
            }
            return array(0, $result);
        }至于增加cookie的header,我这里就不多说了
      

  4.   

    你是想在当前网站用php模拟让客户登录去另一个网站吧,可以明白告诉你:这是不可能的
      

  5.   

    curl
    file_get_content()
    scoket都可以模拟!!谢谢!