必度网博客改版需要在首页程序添加discuz的登陆,方便辅导员写博客。这就涉及到外部程序调用discuz登
录框的问题。弄了1天发现了几种方法:
方法1:discuz登陆框是ajax调用的,一开始在firebug下看到了调用了接口:
1
2
|
http://pekdo.com/member.php
?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login
|
这返回的是一个xml的内容,其中就一个结点root,里面会根据本地的cookies判断是否登录了论坛,如果没有登陆
里面的内容就是一段form登陆表单。如果登陆了里面就是一段登陆后的信息。然后将ajax请求中的css保存到本
地。能够实现登陆框调用。登陆框中有一个hidden的input name=‘reffer’ 这里面的value值是来路链接.不过要是
论坛程序里的。比如将这个连接换成http://home.ecjtu.net/home.php?mod=spacecp&ac=blog这样登陆完后会
自动跳转到发博客的页面。可以实现一键发帖功能。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
$login
=
file_get_contents
("http:
//home.ecjtu.net/member.php?
mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login");
require_once
(
'SofeeXmlParser.php'
);
//xml解析类 博客里搜索xml有相关介绍
$xml
=
new
SofeeXmlParser();
$xml
->parseString(
$login
);
$tree
=
$xml
->getTree();
$login = str_replace("member.php","http://pekdo.com/member.php",$tree["root"]["value"]);
$login = str_replace("http://pekdo.com/./","http://pekdo.com/home.php? mod=spacecp&ac=blog",
$login
);
//跳转到发帖页面
$login
= preg_replace(
'/<h3 class="flb">(.*)<\/h3>/i'
,
''
,
$login
);
var_dump(
$login
);
exit
();
$login
= iconv(
'utf-8'
,
'gbk'
,
$login
);
echo
$login
;
?>
|