分类“php”下的文章

dvbbs等md5-16位加密的论坛导入Discuz! X1.5出现的密码错误解决办法

公司的博客和论坛  oblog和dvbbs需要导入到discuz ! x1.5中

采用discuz官方提供的转换工具 现将blog和论坛分别导入到uchome和discuz 7.2中

在由uchome discuz 7.2导入到discuz x1.5中

数据完美导入没有错误,但是在最后的discuz x.15出现了登陆密码错误

只有在discuz7.2中登陆的用户才可以在discuz x1.5中登陆,到处找插件或者程序都没解决,于是自己写吧。

在.\source\module\member\member_login.php行
$result = userlogin($_G['gp_username'], $_G['gp_password'], $_G['gp_questionid'], $_G['gp_answer'], $_G['setting']['autoidselect'] ? 'auto' : $_G['gp_loginfield']);
的上面添加一下代码

===================================================================================================

    //密码更新开始
    $oldpassword=substr(md5($_G['gp_password']),8,16);
    $selectuser="SELECT * FROM ".DB::table('common_member')." WHERE username='$_POST[username]'";
    $member = DB::fetch_first($selectuser);
    if($member['salt']!=""){
        $salts=$member['salt'];
        $password=$member['password'];
        if($password==md5($oldpassword.$salts)){
            uc_user_edit($_POST[username],'',$_G['gp_password'],null,1);
        }
    }
    //密码更新结束

===================================================================================================

忘了补充了,你需要将ucenter中的关于member中的salt值复制到discuz中新建的salt ,并且要求保持用户一直。

OK!!!!2个小时从看discuz的源码,写出以上简单的10行代码,唉真不值钱。share!

ucenter二次开发接口

最近帮朋友做一个大型的门户网站
涉及到用户的统一管理,需要用到论坛,文章,还有一个其他的应用,在经过反复的技术论证以后选择了康盛的产品

ucenter为核心扩展应用程序
ucenter的APP开发的开发接口手册:http://www.discuz.net/thread-879237-1-1.html

客户端:client/UCenter 应用程序必备的目录,如果您的应用程序基于 UCenter,那么您的应用程序目录中必须包含此目录,目录名可自定义(所有 Comsenz 的产品对应的目录名为“uc_client/”)。 control/ 应用程序 control 部分目录
data/ 缓存数据目录,此目录及其子目录需要有可写权限
lib/ 应用程序函数库目录
module/ 应用程序 module 部分目录
client.php 接口函数库

UCenter 的接口函数
UCenter 分为 MySQL 和远程两种接口连接方式,MySQL 方式是直接连接数据库因此速度较快,但当 UCenter 的服务端和客户端不在同一主机中且没有远程 MySQL 帐号的情况下,则只能使用远程连接方式。使用 UCenter 接口函数前请根据应用程序的需求定义以下相关常量: UC_CONNECT 连接 UCenter 的方式
mysql:MySQL 方式
空:远程方式

UC_DBHOST UCenter 数据库主机
UC_DBUSER UCenter 数据库用户名
UC_DBPW UCenter 数据库密码
UC_DBNAME UCenter 数据库名称
UC_DBCHARSET UCenter 数据库字符集
UC_DBTABLEPRE UCenter 数据库表前缀
UC_DBCONNECT UCenter 数据库持久连接 0=关闭, 1=打开
UC_KEY 与 UCenter 的通信密钥, 要与 UCenter 保持一致
UC_API UCenter 服务端的 URL 地址
UC_IP UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
UC_CHARSET UCenter 的字符集
UC_APPID 当前应用的 ID
使用 UCenter 接口函数库必须包含 uc_client/client.php 接口函数库文件,例如下面检查新短消息的代码:
include ‘./uc_client/client.php’;
$newpm = uc_pm_checknew($Example_uid);
详细的接口函数说明,请看“接口函数”章节。

UCenter与其他语言的整合经验归纳

1、UCenter建议使用GBK版本,原因是PHP4/5对UNICODE(UTF-8)的支持不足,分解出来的数字与其他支持UNICODE的语言不 同,以至于authcode的时候将出现偏差,非拉丁文本将不匹配,即导致中文用户名无法正常同步。但其他语言的API可以使用UTF-8,再在 authcode之前将文本转换成GBK即可。

2、Java下有一个UCenter的API,可以较方便的在Java环境下调用UCenter接口,地址是 http://code.google.com/p/discuz-ucenter-api-for-java/,创始人是ping.china。 Snow_Young也有重新开发一个API的想法,以更符合Java的开发习惯,同时希望可以找到途径以解决UTF-8的问题。

3、登入、登出等操作的同步,使用post方式调用UCenter的API接口,如果成功,将返回一段代码,其代码输出到页面将达到跨域请求各应用,应用获得请求后自行进行cookie或session的操作。

4、注册等非同步操作,将不会自动进行同步操作,其他应用在调用数据前应先检查UCenter时候存在更新信息,并将更新信息同步到自身数据库中。例如注 册操作,如果用户在例如Java端注册,那么Java端将告诉UCenter注册信息,UCenter将信息存入UCenter数据库中,此时将不进行同 步。之后若用户在Discuz!论坛登陆,Discuz!首先将查看自身数据库,若没有,再去请求UCenter获得更新信息,并询问用户是否激活,待用 户确认后,才将用户的资料写入Discuz!论坛数据库中。

5、关于UCenter的接口,请下载或直接在线访问Discuz!论坛UCenter开发区置顶帖的API文档。

6、UCenter API文档中函数的调用方法:

integer uc_user_register(string username , string password , string email [, integer questionid , string answer])

以此为例,将函数名分解为user和register,我们可以调用UCenter的index.php,post内容为:

m : user
a : register
release : 1.5
inajax : 1(此参数若不存在,将出现一个跳转div,仅限PHP,所以在此处随意赋上一个值即可)
appid : 3(此为其他语言应用在UCenter中的id)
input : 将所有附加参数的键值对Map经过authcode之后得到的加密字符串

调用完后,此函数将返回注册信息(是否成功、错误原因)的数字。然后我们这里switch一下后采取各种策略。

7、不知是否是bug,或者是特意设计成这样的,Discuz!新注册用户会自动登陆,但却不会进行同步,即不通知其他应用,我建议还是通知一下比较好,呵呵,至少我的应用是这么做的,用户在我这里注册,然后转到Discuz!后,已经进入待激活状态,非常方便。

maxInteger、暂时总结这么多,日后发现还会继续补充,希望大家可以共同完善。

NPMserv0.4.0发布——快速搭建nginx+PHP环境

NPMserv 是一款图形界面的快速搭建nginx 0.7.62、PHP5.3.0、MySQL 5.1.35、phpMyAdmin 3.2.1,网站服务器平台的绿色软件。无需安装,具有灵活的移动性(如D:/NPMserv),打开NPMserv.exe启动服务即可。*nginx更新到0.7.62
*增加apahce2.2.13,可以在nginx和apache之间无缝切换
*修改nginx开机启动的方式(改为加入程序->开始)
*修正mysql载入服务无法启动
*通过vista(32),server2008sp1(32)测试

1、注意事项:路径不要有中文或特殊字符
2、MySQL默认用户名:root,密码123456
3、MySQL数据库文件存放目录:MySQL5.1data
4、网站根目录www
5、访问本机请用http://127.0.0.1/
6、NPMserv集成了以下软件:

apahce2.2.13
Nginx 0.7.62
PHP 5.3.0
MySQL 5.1.35
phpMyAdmin 3.2.1  
Sendmail

如果不能运行php,请安装Microsoft 2008 C++ Runtime (x86)
下载地址http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF

由于zend不支持php5.3.0所以暂时就不集成zend,如果需要zend的,可以用0.2.2旧版或再等一段时间
感谢群里的同学进行测试和一些建议,感谢scomota的支持

下载:点击下载0.4.0

Run PHP on the Google App Engine

Google launched their Google App Engine (GAE) a year ago. The free hosting in App Engine is allocated 500 MB of persistent storage and enough CPU and bandwidth for about 5 million page views a month. Also, if you really want more you can see pricing plans.

GAE will support Java going forward. Unfortunately PHP support on the App Engine is still left as the top item in the wishlist. So until Google announces their official PHP support we have a workaround to run PHP using Quercus. Quercus is basically a 100% Java implementation of the PHP language (requires JDK 1.5).  Since the App Engine now supports Java this means we can use Quercus to run PHP scripts on the App Engine.

So all you need to use the GAE and run PHP
1) Register a free account.
2) Download this file to your computer.
3) Edit application XML tag in the file war\WEB-INF\appengine-web.xml to the name of the application you have registered.
4) Finally upload your application. I downloaded Google App Engine SDK for Java and use the following command in windows.
appcfg.cmd update C:\projects\phpwithjava\war

To see this in action just visit:
http://phpwithjava.appspot.com/webdigi.php

 

http://phpwithjava.appspot.com/info.php

NOTE: phpwithjava is my app name with GAE.