0

0

onethink跟phpwind共用

php中文网

php中文网

发布时间:2016-06-13 12:16:09

|

1140人浏览过

|

来源于php中文网

原创

onethink和phpwind共用

将onethink和phpwind数据库安装在一起,使用通用的表前缀。

将onethink的member表指向phpwind有user表

以下为onethink安装在根目录下,phpwind安装在bbs目录下的情况

修改onethink中的is_login函数

立即学习PHP免费学习笔记(深入)”;

function is_login(){	$site=include('./bbs/data/cache/config.php');	C('BBS_SITE_SET',$site['data']['site']);			if (!($userCookie = \Org\util\Pw::getCookie('winduser'))) {			return 0;	} else {			list($uid, $password) = explode("\t", \Org\util\Pw::decrypt($userCookie));			$user_session = session('user_auth');			if (empty($user_session)||$user_session['uid']!=$uid) {				//$user = new User\Api\UserApi();				//$info = $user->info($uid);				/* 记录登录SESSION和COOKIES */				$auth = array(					'uid'             => $uid,					'username'        => get_username($uid),					'last_login_time' => NOW_TIME,				);				session('user_auth', $auth);				session('user_auth_sign', data_auth_sign($auth));			}			return $uid;	}/*        $user = session('user_auth');        if (empty($user)) {            return 0;        } else {            return session('user_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;        }*/}

think库中添加Org/util/pw.class.php和Org/WindCookie.class.php

1.WindCookie.class.php

标小兔AI写标书
标小兔AI写标书

一款专业的标书AI代写平台,提供专业AI标书代写服务,安全、稳定、速度快,可满足各类招投标需求,标小兔,写标书,快如兔。

下载

立即学习PHP免费学习笔记(深入)”;

<?phpnamespace Org;/** * cookie操作类 *  * 使用的时候全部采用静态的方式使用该类中的所有方法: * <code> * Wind::import('WIND:http.cookie.WindCookie'); * WindCookie::set('name', 'test'); * </code> *  * @author Qian Su <[email protected]> * @copyright ©2003-2103 phpwind.com * @license http://www.windframework.com * @version $Id: WindCookie.php 3760 2012-10-11 08:02:25Z yishuo $ * @package http * @subpackage cookie */class WindCookie {	/**	 * 设置cookie	 * 	 * @param string $name cookie名称	 * @param string $value cookie值,默认为null	 * @param boolean $encode 是否使用 MIME base64 对数据进行编码,默认是false即不进行编码	 * @param string|int $expires 过期时间,默认为null即会话cookie,随着会话结束将会销毁	 * @param string $path cookie保存的路径,默认为null即采用默认	 * @param string $domain cookie所属域,默认为null即不设置	 * @param boolean $secure 是否安全连接,默认为false即不采用安全链接	 * @param boolean $httponly 是否可通过客户端脚本访问,默认为false即客户端脚本可以访问cookie	 * @return boolean 设置成功返回true,失败返回false	 */	public static function set($name, $value = null, $encode = false, $expires = null, $path = null, $domain = null, $secure = false, $httponly = false) {		if (empty($name)) return false;		$encode && $value && $value = base64_encode($value);		$path = $path ? $path : '/';		setcookie($name, $value, $expires, $path, $domain, $secure, $httponly);		return true;	}	/**	 * 根据cookie的名字删除cookie	 * 	 * @param string $name cookie名称	 * @return boolean 删除成功返回true	 */	public static function delete($name) {		if (self::exist($name)) {			self::set($name, '');			unset($_COOKIE[$name]);		}		return true;	}	/**	 * 取得指定名称的cookie值	 * 	 * @param string $name cookie名称	 * @param boolean $dencode 是否对cookie值进行过解码,默认为false即不用解码	 * @return mixed 获取成功将返回保存的cookie值,获取失败将返回false	 */	public static function get($name, $dencode = false) {		if (self::exist($name)) {			$value = $_COOKIE[$name];			$value && $dencode && $value = base64_decode($value);			return $value ? $value : $value;		}		return false;	}	/**	 * 移除全部cookie	 * 	 * @return boolean 移除成功将返回true	 */	public static function deleteAll() {		$_COOKIE = array();		return true;	}	/**	 * 判断cookie是否存在	 * 	 * @param string $name cookie名称	 * @return boolean 如果不存在则返回false,否则返回true	 */	public static function exist($name) {		return isset($_COOKIE[$name]);	}}

2.pw.class.php

立即学习PHP免费学习笔记(深入)”;

<?phpnamespace Org\util;use Org\WindCookie;/** * 工具类库 * * @author Jianmin Chen <[email protected]> * @copyright ©2003-2103 phpwind.com * @license http://www.phpwind.com * @version $Id: Pw.php 28776 2013-05-23 08:46:10Z jieyin $ * @package library */class Pw {	/**	 * 取得指定名称的cookie值	 *	 * @param string $name cookie名称	 * @param string $pre cookie前缀,默认为null即没有前缀	 * @return boolean	 */	public static function getCookie($name) {		$site = C('BBS_SITE_SET');		$pre = $site['cookie.pre'];		$pre && $name = $pre . '_' . $name;		return WindCookie::get($name);	}	/**	 * 设置cookie	 *	 * @param string $name cookie名称	 * @param string $value cookie值,默认为null	 * @param string|int $expires 过期时间,默认为null即会话cookie,随着会话结束将会销毁	 * @param string $pre cookie前缀,默认为null即没有前缀	 * @param boolean $httponly	 * @return boolean	 */	public static function setCookie($name, $value = null, $expires = null, $httponly = false) {		$path = $domain = null;		$site = C('BBS_SITE_SET');		$pre = $site['cookie.pre'];		$pre && $name = $pre . '_' . $name;		$expires && $expires += time();		return WindCookie::set($name, $value, false, $expires, $path, $domain, false, $httponly);	}	/**	 * 加密方法	 *	 * @param string $str	 * @param string $key	 * @return string	 */	public static function encrypt($str, $key = '') {		$site = C('BBS_SITE_SET');		$key || $key = $site['hash'];		return base64_encode(self::iencrypt($str, $key));	}		/**	 * 解密方法	 *	 * @param string $str	 * @param string $key	 * @return string	 */	public static function decrypt($str, $key = '') {		$site = C('BBS_SITE_SET');		$key || $key = $site['hash'];		return self::idecrypt(base64_decode($str), $key);	}	/**	 * 密码加密存储	 *	 * @param string $pwd	 * @return string	 */	public static function getPwdCode($pwd) {		$site = C('BBS_SITE_SET');		return md5($pwd . $site['hash']);	}	public function iencrypt($str, $key) {		if ($str == '') return '';		if (!$key || !is_string($key)) {			return '';		}		$v = self::str2long($str, true);		$k = self::str2long($key, false);		if (count($k) < 4) {			for ($i = count($k); $i < 4; $i++) {				$k[$i] = 0;			}		}		$n = count($v) - 1;				$z = $v[$n];		$y = $v[0];		$delta = 0x9E3779B9;		$q = floor(6 + 52 / ($n + 1));		$sum = 0;		while (0 < $q--) {			$sum = self::int32($sum + $delta);			$e = $sum >> 2 & 3;			for ($p = 0; $p < $n; $p++) {				$y = $v[$p + 1];				$mx = self::int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self::int32(					($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));				$z = $v[$p] = self::int32($v[$p] + $mx);			}			$y = $v[0];			$mx = self::int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self::int32(				($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));			$z = $v[$n] = self::int32($v[$n] + $mx);		}		return self::long2str($v, false);	}	/* (non-PHPdoc)	 * @see IWindSecurity::decrypt()	 */	public function idecrypt($str, $key) {		if ($str == '') return '';		if (!$key || !is_string($key)) {			return '';		}		$v = self::str2long($str, false);		$k = self::str2long($key, false);		if (count($k) < 4) {			for ($i = count($k); $i < 4; $i++) {				$k[$i] = 0;			}		}		$n = count($v) - 1;				$z = $v[$n];		$y = $v[0];		$delta = 0x9E3779B9;		$q = floor(6 + 52 / ($n + 1));		$sum = self::int32($q * $delta);		while ($sum != 0) {			$e = $sum >> 2 & 3;			for ($p = $n; $p > 0; $p--) {				$z = $v[$p - 1];				$mx = self::int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self::int32(					($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));				$y = $v[$p] = self::int32($v[$p] - $mx);			}			$z = $v[$n];			$mx = self::int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self::int32(				($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));			$y = $v[0] = self::int32($v[0] - $mx);			$sum = self::int32($sum - $delta);		}		return self::long2str($v, true);	}	/**	 * 长整型转换为字符串	 *	 * @param long $v	 * @param boolean $w	 * @return string	 */	private function long2str($v, $w) {		$len = count($v);		$s = array();		for ($i = 0; $i < $len; $i++)			$s[$i] = pack("V", $v[$i]);		return $w ? substr(join('', $s), 0, $v[$len - 1]) : join('', $s);	}	/**	 * 字符串转化为长整型	 *	 * @param string $s	 * @param boolean $w	 * @return Ambigous <multitype:, number>	 */	private function str2long($s, $w) {		$v = unpack("V*", $s . str_repeat("\0", (4 - strlen($s) % 4) & 3));		$v = array_values($v);		if ($w) $v[count($v)] = strlen($s);		return $v;	}	/**	 * @param int $n	 * @return number	 */	private function int32($n) {		while ($n >= 2147483648)			$n -= 4294967296;		while ($n <= -2147483649)			$n += 4294967296;		return (int) $n;	}}

onethink中的user模块作相应修改

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php注册登录系统开发实战
php注册登录系统开发实战

共10课时 | 13.5万人学习

PHP基于Cookie的购物车模块设计
PHP基于Cookie的购物车模块设计

共10课时 | 10.8万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 26.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号