很多同学都在问为什么时候curl登录之后cookie取不了或存储不了怎么办,下面我来给大家演示两个php curl 登录并读取或存储 cookie值方法。
先准备两?小程式, 做确认程式是否有抓到 COOKIE 值.
login.php (POST 到 login.php, login.php 会确认帐号/密码, 然后写 COOKIE值)
代码如下 | 复制代码 |
if ($_POST['username'] == 'admin' && $_POST['password'] == '1234') { setcookie('u', 'admin'); header('Location: check_login.php'); } else { echo 'failed'; } ?> |
check_login.php (确认是否有 $_COOKIE['u'] 的值, 而且是否是 'admin', 来判断是否已 Login)
代码如下 | 复制代码 |
|
假设上述两个档案分别在 http://localhost/login.php / http://localhost/check_login.php, 所以就来写下述程式, 送 POST 到 login.php, 再经由 check_login.php 做确认是否登入完成, 程式如下:
例
代码如下 | 复制代码 |
// 取得目? Url ?定的 cookie, ??入 cookie.txt (使用 POST) $resource = curl_init(); return $resource; // 取得此 Url 的?热?br />
function getUrlContent($resource, $url) return $content;
// get contents (need cookie check) |
Function List
■resource setUrlCookie($url, $postdata)
■string getUrlContent($resource, $url)
使用方法
■getUrlContent(setUrlCookie($login_url, $postdata), $login_check_url);
setUrlCookie() 是 POST 送到 Login.php, 然后将 COOKIE 写入 cookie.txt(或者可以用 tempnam() 产生一个唯一名字的档案来储存). 再用 getUrlContent() 去通过 COOKIE 验证, 以取得网页的资料.
照理说应该将上述 function 写成一个 Class, 能方便管理 curl_init() 的 resource, 不过, 先暂时写成 function, 应该较容易理解~
再看一个实例
代码如下 | 复制代码 |
$cookie_jar_index = 'cookie.txt'; |