演示: http://www.8talk.net/wap/
作者:凡人·八度空间论坛 (friends@8talk.net)
安装需求:Discuz 2.5F/2.5FSP1
安装程度:简单
修改文件:
/include
- common.php
插件功能:仿D4RC4使用流动WAP登录论坛完全正式版本。
暂时只发布GB2312简体和Big5繁体版,unicode转义版本需要php4.3.x以上只支持GB2312编码论坛。
开发心路:
今天,无所事事的我突然间心血来潮,决定研究倍受关注的手机游览论坛WML(Wireless Markup Language)界面。参考并采用了Discuz! Archiver的编码,在极短的时间(一个多小时)内开发了个简单的wap版本。这个版本暂时不能支持用户登录,也不能游览有权限设置的论坛,是以Discuz Archiver为蓝本开发的,现在公开让大家先睹为快,顺便测试,手机游览方面还有一些问题待解决,尤其是字数很多的帖子。如时间允许,我会持续开发,希望开发能支持登录论坛和发布帖子的版本。
在这里要先注明,我开发的WAP插件,将如我一贯的作风,绝对是免费版本。
安装:
1.打开include/common.php
查找:
- if($sid) {
- if($discuz_uid) {
- $query = $db->query("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, $userinfo FROM $table_sessions s, $table_members m WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid' AND m.password='$discuz_pw' AND m.secques='$discuz_secques'");
- } else {
- $query = $db->query("SELECT sid, uid AS sessionuid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- }
- if($_DSESSION = $db->fetch_array($query)) {
- $sessionexists = 1;
- if(!empty($_DSESSION['sessionuid'])) {
- $query = $db->query("SELECT $userinfo FROM $table_members m WHERE uid='$_DSESSION[sessionuid]'");
- $_DSESSION = array_merge($_DSESSION, $db->fetch_array($query));
- $is_sessionuser = 1;
- }
- } else {
- $query = $db->query("SELECT sid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- if($_DSESSION = $db->fetch_array($query)) {
- clearcookies();
- $sessionexists = 1;
- }
- }
- }
- if(!$sessionexists) {
- if($discuz_uid) {
- $query = $db->query("SELECT $userinfo ,m.styleid FROM $table_members m WHERE uid='$discuz_uid' AND password='$discuz_pw' AND secques='$discuz_secques'");
- if(!($_DSESSION = $db->fetch_array($query))) {
- clearcookies();
- }
- }
- if(ipbanned($onlineip)) {
- $_DSESSION['ipbanned'] = 1;
- }
- $sid = random(6);
- }
复制代码
替换为:
- if($sid) {
- if(!defined('IN_WAP')) {
- if($discuz_uid) {
- $query = $db->query("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, $userinfo FROM $table_sessions s, $table_members m WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid' AND m.password='$discuz_pw' AND m.secques='$discuz_secques'");
- } else {
- $query = $db->query("SELECT sid, uid AS sessionuid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- }
- if($_DSESSION = $db->fetch_array($query)) {
- $sessionexists = 1;
- if(!empty($_DSESSION['sessionuid'])) {
- $query = $db->query("SELECT $userinfo FROM $table_members m WHERE uid='$_DSESSION[sessionuid]'");
- $_DSESSION = array_merge($_DSESSION, $db->fetch_array($query));
- $is_sessionuser = 1;
- }
- } else {
- $query = $db->query("SELECT sid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- if($_DSESSION = $db->fetch_array($query)) {
- clearcookies();
- $sessionexists = 1;
- }
- }
- }
- else{
- if($discuz_uid) {
- $query = $db->query("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, $userinfo FROM $table_sessions s, $table_members m WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid' AND m.password='$discuz_pw'");
- } else {
- $query = $db->query("SELECT sid, uid AS sessionuid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- }
- if($_DSESSION = $db->fetch_array($query)) {
- $sessionexists = 1;
- if(!empty($_DSESSION['sessionuid'])) {
- $query = $db->query("SELECT $userinfo FROM $table_members m WHERE uid='$_DSESSION[sessionuid]'");
- $_DSESSION = array_merge($_DSESSION, $db->fetch_array($query));
- $is_sessionuser = 1;
- }
- } else {
- $query = $db->query("SELECT sid, groupid, groupid='6' AS ipbanned, styleid FROM $table_sessions WHERE sid='$sid' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'");
- if($_DSESSION = $db->fetch_array($query)) {
- clearcookies();
- $sessionexists = 1;
- }
- }
- }
- }
- if(!$sessionexists) {
- if(!defined('IN_WAP')) {
- if($discuz_uid) {
- $query = $db->query("SELECT $userinfo ,m.styleid FROM $table_members m WHERE uid='$discuz_uid' AND password='$discuz_pw' AND secques='$discuz_secques'");
- if(!($_DSESSION = $db->fetch_array($query))) {
- clearcookies();
- }
- }
- if(ipbanned($onlineip)) {
- $_DSESSION['ipbanned'] = 1;
- }
- $sid = random(6);
- } else {
- if($discuz_uid) {
- $query = $db->query("SELECT $userinfo ,m.styleid FROM $table_members m WHERE uid='$discuz_uid' AND password='$discuz_pw'");
- if(!($_DSESSION = $db->fetch_array($query))) {
- clearcookies();
- }
- }
- if(ipbanned($onlineip)) {
- $_DSESSION['ipbanned'] = 1;
- }
- $sid = random(6);
- }
- }
复制代码
2.设置附件中wap/include目录内的config.inc.php($wapcharset函数除外)。
3.把文件包含目录上载到论坛根目录就行了。需要配合主机使用。
开发进度:
2005-06-20 凌晨12:00
- 第一版本0.5beta公开发布测试。
2005-06-21 凌晨1:00
- 支持通过主机php直接转换GB2312码论坛为据更佳兼容性的Unicode UTF-8码WAP负页(需要主机设定和php版本支持)。(D4官方的WAP负页亦采用Unicode码)
- 允许用户登录的版本开发顺利进行中,已经完成了会员登录游览论坛,解决了第一版本会员无法游览设置权限的论坛。手机登录支持用户名与UID,不须使用安全提问,但不开放手机用户更该账户资料,确保更佳的安全性。接下来将开发通过手机发帖/回帖和发布接收短消息,对过长的帖子进行分页处理。
- 夜了,今晚到此为止,明晚继续。。。
2005-06-23 凌晨3:00
- 休息了一天,开工了,完成会员投票,成功对过长的帖子进行分页处理。
2005-06-25 凌晨0:00
- Discuz! 2.5手机WAP登录版本正式完成,公开测试网址:http://www.8talk.net/wap/,由于即时Unicode转义版对本论坛数据里的某些字符出现乱码,所以只开放GB2312码版本。
- 完整版功能:会员登录,发表新主题/回帖,短消息功能,对投票帖子进行投票。
2005-07-09 晚间9:30
- 正式公开发布Discuz! WAP 1.0RC1 For Discuz! 2.5F/2.5SP1
有关论坛主机的WAP设置与技术请查阅:http://myalice.51.net
[ 本帖最后由 8度空间 于 2005-7-10 14:02 编辑 ] |