热搜:NVER node 开发 php

精通php的curl的进,有点难

2024-09-19 15:05:02
精通php的curl的进,有点难

模拟登陆织梦,版本5.7,已经去掉后台验证码,不知道为啥一直登陆不上(提示登陆成功却又跳回登陆地址)

<?php$cookie_file    =    tempnam('./temp','cookie');$login_url        =    'http://localhost/dedecms/dede/login.php';$post_fields    =    'gotopage=%2Fdedecms%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=123456&sm1=';$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);curl_exec($ch);curl_close($ch);$url='http://localhost/dedecms/dede/article_add.php?channelid=1';$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);$contents = curl_exec($ch);curl_close($ch);?>


登陆成功后要跳转到 http://localhost/dedecms/dede/article_add.php?channelid=1


回复讨论(解决方案)

表示没看懂,坐等高人,进来学习

推荐使用框架 snoopy
google一下即可。

要跳转?你就跟着跳转就是了
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

应该是织梦那边有什么cookie没有统一吧?

看了楼主的代码,我倒想起了之前弄的一个东西原来是错在这个地方了
之前,我是一起写的。
[code]
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
[/code]

要跳转?你就跟着跳转就是了
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

加上这行也不行啊,你那边测试过了吗,测试过的话请贴下代码

看了楼主的代码,我倒想起了之前弄的一个东西原来是错在这个地方了
之前,我是一起写的。
[code]
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
[/code]

那应该怎么写 请贴下完整的代码

试试这个看行不行

function getHtml($url,$tmpFile,$postData)  {      $ch = curl_init($url);      curl_setopt($ch,CURLOPT_HEADER,0);      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpFile);      curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpFile);       if($postData!=NULL)      {          curl_setopt($ch, CURLOPT_POST, 1);            curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);       }      $content=curl_exec($ch);        curl_close($ch);       return $content;  }     ?> 

试试这个看行不行
PHP code?1234567891011121314151617function getHtml($url,$tmpFile,$postData) { $ch = curl_init($url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_……
不行用不了

Snoopy这个还真是简单易用

要跳转?你就跟着跳转就是了
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 没人会么

推荐使用框架 snoopy

推荐使用框架 snoopy

这个框架不管用,不信你试试

帮你跟了下代码,会在织梦/dede/config.php 文件 里面

if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
这里调处来,登入成功应该要给你个uid,你看看 在哪了搞下

帮你跟了下代码,会在织梦/dede/config.php 文件 里面

if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
这里调处来,登入成功应该要给你个uid,你看看 在哪了…… 这个应该是有的,因为都提示登陆成功了

引用 14 楼 jsbba 的回复:帮你跟了下代码,会在织梦/dede/config.php 文件 里面

if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
这里调处来,登入成……
呵呵 有但是-1 你吧这段去掉 就可以登入进去了

引用 15 楼 dz215136304 的回复:引用 14 楼 jsbba 的回复:帮你跟了下代码,会在织梦/dede/config.php 文件 里面

if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
……

同样不行,提示

DedeCMS 提示信息!对不起,你没有权限执行此操作!点击此返回上一页>>

你login时抓包一下。然后把里面header所有的信息全部保存下来,包括referer啊,useragent啊。。然后再用curl发这样一个大杂烩的包,看看能不能成功

你login时抓包一下。然后把里面header所有的信息全部保存下来,包括referer啊,useragent啊。。然后再用curl发这样一个大杂烩的包,看看能不能成功 不行的

哦 楼主的代码我证实了一下 是没有问题的 一般的 无验证网站是都能模拟登录的  或许是你这个网站有什么特殊的配置或者 加密验证  你再深入查一下  登录文件的代码

哦 楼主的代码我证实了一下 是没有问题的 一般的 无验证网站是都能模拟登录的  或许是你这个网站有什么特殊的配置或者 加密验证  你再深入查一下  登录文件的代码
thankyou

header("location:login.php?gotopage=".urlencode($dedeNowurl));

dede的登陆类做了限制