![]() | 1 ahu 2014-11-25 15:43:38 +08:00 CURLOPT_FOLLOWLOCATION ? |
2 momaer 2014-11-25 16:05:47 +08:00 你要使用浏览器引擎来执行js啦。比如这个:phantomjs |
3 momaer 2014-11-25 16:09:15 +08:00 等下,你这个login_post函数执行完了,就已经登录上去了啊。 但是目标页面验证成功后 通过 输出 <script> location.href="home.php";</script> 跳转到了home.php 页,所以造成 login_post 函数之后的语句都没有执行。 这句话我不明白啊。 |
![]() | 4 wingoo 2014-11-25 16:11:11 +08:00 js执行不了的吧 只能再写个curl来跳转,跳转地址如果固定可写死,不固定获取内容后抓取 |
![]() | 5 csensix OP @momaer 就是通过函数模拟登录,curl到登录页面,验证通过,登录页面就通过输出 <script> location.href="home.php";</script> 这句话实现跳转的 |
6 momaer 2014-11-25 16:20:31 +08:00 @csensix 你把这个CURLOPT_RETURNTRANSFER改为true,完了判断response里面有没有 <script> location.href="home.php";</script> 然后把这个href提取出来。然后 你跳转就是了。 |
![]() | 7 aaaa007cn 2014-11-25 21:36:03 +08:00 突然想到该不会是 浏览器访问你的服务器 在你的服务器上模拟登录远程服务器 然后你的 php 把远程服务器的 js 跳转代码发回浏览器 导致浏览器跟着 js 跳转了 没法继续执行之前那个 php 中的 login_post 之后的语句? 所以你的问题其实是如何让 php 不直接输出 curl 远程服务器的结果? 那就是 @momaer 说的 CURLOPT_RETURNTRANSFER 改为 true 之后也不用提取 href 了 |