在实现HTTP请求过程中, cookie的使用是至关重要的,这对于PHP HTTP客户端也同样适用。
一个典型的例子是,我们需要通过HTTP客户端模拟一个登录过程,这时就需要把客户端获取的cookie保存到本地,并在随后的请求中把它发送到服务器。
$url = 'http://www.example.com/login.php' $post_data = array('username' =>'admin', 'password' =>'admin123'); $cookie_file = '/var/tmp/cookie.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch);
从上述代码可以看出,我们需要自行维护一个cookie文件,来实现HTTP请求中对于cookie的存储与发送。
如果我们需要从已有的cookie文件中读取cookie进行请求,可以使用以下代码:
$cookie_file = '/var/tmp/cookie.txt'; $url = 'http://www.example.com/profile.php'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);//发送cookie文件 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch);
这里我们只指定了COOKIEFILE,没有指定COOKIEJAR,所以在请求过程中只会发送cookie,而不会保存cookie到本地文件。
我们同样可以手动指定cookie,简单地使用以下代码:
$url = 'http://www.example.com/process.php'; $cookie = 'SomeCookie=12345'; $header = array('Content-Type: application/x-www-form-urlencoded', 'Cookie:' . $cookie); $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $result = curl_exec($ch); curl_close($ch);
如上所述,我们只需要在请求中手动添加Cookie字段即可,这时我们不再需要使用cookie文件来存储和发送cookie了。
无论是哪种方式,对于Cookie的操作都是非常重要的。通过实现对Cookie的维护,我们能够有效地进行HTTP请求处理,并且在一定程度上保证数据的安全性。