这是我在这个论坛上的第一个问题,但它帮助我之前找到答案。所以我想用PHP和CURL自动登录到我的账户。Php CURL自动登录
我是PHP的新手,但直到现在,无论何时我需要连接到网页,请发布帖子或获取或关注所有工作的重定向。
问题是,我正在尝试登录的帐户有一个用户名/密码页面,后面跟着一个令人难忘的单词页面,其中我必须从我难忘的单词中输入一些字符。
现在我设法通过第一页,并获得第二页,我必须输入令人难忘的单词字符,但是当我试图做到这一点(所以第二篇文章)不工作 - 我被重定向到登录再次。
现在我试图调查,看看有什么问题,但我仍然不知道为什么不工作。我观察到JSESSIONID是通过服务器在正常登录时传递的,而当我运行我的脚本时,JSESSIONID发生更改。我正在使用:
curl_setopt($this->curl, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($this->curl, CURLOPT_COOKIEJAR, 'cookie.txt');
但是,当我检查文件它是空的,它并没有被修改,因为它被创建。是的,该文件可以被写入(它有777个权限)。
我不知道这是问题还是别的,但我寻找答案,我尝试了不同的东西,没有任何工作。所以任何想法将不胜感激。
谢谢
你绝对100%确认你的脚本是从你认为它的工作目录运行吗?仔细检查['getcwd()'](http://php.net/manual/en/function.getcwd.php),并确保该文件真的可以通过PHP写入'var_dump(is_writable('cookie.txt “));'。您还应该执行'curl_setopt($ this-> curl,CURLOPT_HEADER,TRUE);'获取响应头并确认您确实收到了一些cookie。 – DaveRandom 2011-12-18 20:54:53
我已经运行您的命令进行测试,如果它是可写的,它是。它返回true。关于头文件,我确信当我向服务器发送请求时,会使用一些cookie,因为我使用的是Firefox中的Live Http Headers插件。文件大小仍为0 B,并且创建它时修改的最后日期。如果我打印标题,当我做secons发布时,我得到:Array([0] => HTTP/1.1 302 Found [1] => Set-Cookie:iApply-PROD-COOKIE = R1294003214 – user1104866 2011-12-18 21:35:47
所以@DaveRandom如何当我正常登录时,JSESSIONID在这里保持不变,当我做第二次POST时,就像没有找到它,它会生成一个新的(比如正在创建另一个新请求)。 – user1104866 2011-12-18 21:58:51