java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

php 利用cookie_jar 解决Session模拟登陆

php模拟了session以后,其实对验证码也一样有效。其中的核心原理就是利用登陆,来读取cookie或者Session

session_login.php 源码,一个简单的需要登陆,记录session的页面


登陆以后和不登陆session_index.php

test_session.php这个文件来请求一个登陆页面,POST账户和密码给session_login.php来获取cookie_jar 然后session传递给下一个页面 session_index.php


test_session.php源代码

$v){
    $postfields.=urlencode($k).'='.urlencode($v).'&';

}

$params[CURLOPT_POST]=true;

$params[CURLOPT_POSTFIELDS]=$postfields;

if(isset($_COOKIE['cookie_jar']) && ($_COOKIE['cookie_jar'] || is_file($_COOKIE['cookie_jar']))){

    $params[CURLOPT_COOKIEFILE]=$_COOKIE['cookie_jar'];

}else{

    $cookie_jar=tempnam($cookie_path,'cookie');//产生一个cookie文件

    $params[CURLOPT_COOKIEJAR]=$cookie_jar;//写入cookie信息

    setcookie('cookie_jar',$cookie_jar);//保存cookie路径

}

curl_setopt_array($ch,$params);

$content=curl_exec($ch);

var_dump(strip_tags($content));

//第二步, 利用读取的cookie来请求需要Session登陆的页面

$params[CURLOPT_FOLLOWLOCATION]=true;

$nexturl='http://localhost/DEMO/SessionTest/session_index.php';

$params[CURLOPT_URL]=$nexturl;

$params[CURLOPT_POSTFIELDS]='';

curl_setopt_array($ch,$params);

$content=curl_exec($ch);

echo strip_tags($content);

curl_close($ch);

?>

本地进行php执行

/bin/php test_session.php
string(33) "Session Login Success!



"
Session! Welcome, java-er.com

我们看到成功的读取了登陆后的结果
本地文件夹出现一个文件 cookiehY0cBE

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

localhost	FALSE	/	FALSE	0	PHPSESSID	r19bjc4ek0s1qt1o76p32b3il2

这个文件记录了session的PHPSESSID.

备注1:这个方法改用php header 读取到的PHPSESSID传送给session_index.php 一样有效。


备注2:这个方法对于不用session记录客户登陆,用Cookie的办法也一样有效


This entry was posted in PHP and tagged , , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/php-cookie-jar-session-login/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply