$conf, $time;
$_uid = user_token_get_do();
empty($_uid) and user_token_clear(); // 退出登录
return $_uid;
}
// 用户
function user_token_get_do()
{
global $conf, $time, $ip, $useragent;
$token = param($conf['cookie_pre'] . 'token');
if (empty($token)) return FALSE;
$tokenkey = md5(xn_key());
$s = xn_decrypt($token, $tokenkey);
if (empty($s)) return FALSE;
$arr = explode("\t", $s);
if (count($arr) != 5) return FALSE;
list($_ip, $_time, $_uid, $_pwd, $ua_md5) = $arr;
if (array_value($conf, 'login_ip') && $ip != $_ip) return FALSE;
if (array_value($conf, 'login_ua') && md5($useragent) != $ua_md5) return FALSE;
$_user = user_read($_uid);
if (empty($_user)) return FALSE;
if (array_value($conf, 'login_only') && $_user['login_date'] != $_time) return FALSE;
// 密码是否被修改
if (md5($_user['password']) != $_pwd) return FALSE;
return $_uid;
}
// 设置 token,防止 sid 过期后被删除
function user_token_set($uid)
{
global $conf, $time;
if (empty($uid)) return '';
$token = user_token_gen($uid);
setcookie($conf['cookie_pre'] . 'token', $token, $time + 86400000, $conf['cookie_path'], $conf['cookie_domain'], '', TRUE);
return $token;
}
function user_token_clear()
{
global $conf, $time;
setcookie($conf['cookie_pre'] . 'token', '', $time - 8640000, $conf['cookie_path'], $conf['cookie_domain'], '', TRUE);
}
function user_token_gen($uid)
{
global $conf, $time, $ip, $useragent;
$key = 'user_token' . $uid;
static $cache = array();
if (isset($cache[$key])) return $cache[$key];
$user = user_read($uid);
$pwd = md5($user['password']);
$ua_md5 = md5($useragent);
$tokenkey = md5(xn_key());
$cache[$key] = xn_encrypt("$ip $time $uid $pwd $ua_md5", $tokenkey);
return $cache[$key];
}
// 前台登录验证
function user_login_check()
{
global $user;
empty($user) and http_location(url('user-login'));
}
// 获取用户来路
function user_http_referer()
{
global $conf;
$referer = param('referer'); // 优先从参数获取 | GET is priority
empty($referer) and $referer = array_value($_SERVER, 'HTTP_REFERER', '');
$referer = str_replace(array('\"', '"', '<', '>', ' ', '*', "\t", "\r", "\n"), '', $referer); // 干掉特殊字符 strip special chars
if (
!preg_match('#^(http|https)://[\w\-=/\.]+/[\w\-=.%\#?]*$#is', $referer)
|| FALSE !== strpos($referer, url('user-login'))
|| FALSE !== strpos($referer, url('user-logout'))
|| FALSE !== strpos($referer, url('user-create'))
|| FALSE !== strpos($referer, url('user-setpw'))
|| FALSE !== strpos($referer, url('user-resetpw_complete'))
) {
$referer = $conf['path'];
}
return $referer;
}
function user_auth_check($token)
{
global $time, $ip;
$auth = param(2);
$s = xn_decrypt($auth);
empty($s) and message(-1, lang('decrypt_failed'));
$arr = explode('-', $s);
count($arr) != 4 and message(-1, lang('encrypt_failed'));
list($_ip, $_time, $_uid, $_pwd) = $arr;
$_user = user_read($_uid);
empty($_user) and message(-1, lang('user_not_exists'));
$time - $_time > 3600 and message(-1, lang('link_has_expired'));
return $_user;
}
?>权限没有,则隐藏
function forum_list_access_filter($forumlist, $gid, $allow = 'allowread')
{
global $grouplist;
if (empty($forumlist)) return array();
if (1 == $gid) return $forumlist;
$forumlist_filter = $forumlist;
$group = $grouplist[$gid];
foreach ($forumlist_filter as $fid => $forum) {
if (empty($forum['accesson']) && empty($group[$allow]) || !empty($forum['accesson']) && empty($forum['accesslist'][$gid][$allow])) {
unset($forumlist_filter[$fid]);
}
unset($forumlist_filter[$fid]['accesslist']);
}
return $forumlist_filter;
}
function forum_filter_moduid($moduids)
{
$moduids = trim($moduids);
if (empty($moduids)) return '';
$arr = explode(',', $moduids);
$r = array();
foreach ($arr as $_uid) {
$_uid = intval($_uid);
$_user = user_read($_uid);
if (empty($_user)) continue;
if ($_user['gid'] > 4) continue;
$r[] = $_uid;
}
return implode(',', $r);
}
function forum_safe_info($forum)
{
//unset($forum['moduids']);
return $forum;
}
function forum_filter($forumlist)
{
foreach ($forumlist as &$val) {
unset($val['brief'], $val['announcement'], $val['seo_title'], $val['seo_keywords'], $val['create_date_fmt'], $val['icon_url'], $val['modlist']);
}
return $forumlist;
}
function forum_format_url($forum)
{
global $conf;
if (0 == $forum['category']) {
// 列表URL
$url = url('list-' . $forum['fid'], '', FALSE);
} elseif (1 == $forum['category']) {
// 频道
$url = url('category-' . $forum['fid'], '', FALSE);
} elseif (2 == $forum['category']) {
// 单页
$url = url('read-' . trim($forum['brief']), '', FALSE);
}
if ($conf['url_rewrite_on'] > 1 && $forum['well_alias']) {
if (0 == $forum['category'] || 1 == $forum['category']) {
$url = url($forum['well_alias'], '', FALSE);
} elseif (2 == $forum['category']) {
// 单页
$url = ($forum['threads'] && $forum['brief']) ? url($forum['well_alias'] . '-' . trim($forum['brief']), '', FALSE) : url($forum['well_alias'], '', FALSE);
}
}
return $url;
}
function well_forum_alias()
{
$forumlist = forum_list_cache();
if (empty($forumlist)) return '';
$key = 'forum-alias';
static $cache = array();
if (isset($cache[$key])) return $cache[$key];
$cache[$key] = array();
foreach ($forumlist as $val) {
if ($val['well_alias']) $cache[$key][$val['fid']] = $val['well_alias'];
}
return array_flip($cache[$key]);
}
function well_forum_alias_cache()
{
global $conf;
$key = 'forum-alias-cache';
static $cache = array(); // 用静态变量只能在当前 request 生命周期缓存,跨进程需要再加一层缓存:redis/memcached/xcache/apc
if (isset($cache[$key])) return $cache[$key];
if ('mysql' == $conf['cache']['type']) {
$arr = well_forum_alias();
} else {
$arr = cache_get($key);
if (NULL === $arr) {
$arr = well_forum_alias();
!empty($arr) AND cache_set($key, $arr);
}
}
$cache[$key] = empty($arr) ? '' : $arr;
return $cache[$key];
}
?>return FALSE;
$r = well_tag_thread__update(array('id' => $id), $update);
return $r;
}
function well_tag_thread_find($tagid, $page, $pagesize)
{
$arr = well_tag_thread__find(array('tagid' => $tagid), array('id' => -1), $page, $pagesize);
return $arr;
}
function well_tag_thread_find_by_tid($tid, $page, $pagesize)
{
$arr = well_tag_thread__find(array('tid' => $tid), array(), $page, $pagesize);
return $arr;
}
?>
Windows下mysql8.0.30安装教程<<超级详细>>编程频道|福州电脑网
Windows下mysql8.0.30安装教程<<超级详细>>
编程之家390
更新时间:2026-04-09 22:35:45
文章目录
- 1、下载
- 2、目录结构及目录介绍
- 1)bin 目录
- 2)docs 目录
- 3)Data 目录
- 4)include 目录
- 5)lib 目录
- 6)share 目录
- 7)my.ini 文件(需要自己创建)
- 3、安装配置
- 1)管理员身份加入安装目录并初始化
- 2)安装mysql服务
- 3)启动mysql服务
- 4)登录测试
- 5)修改密码&&测试重新登录
- 4、配置环境变量
1、下载
下载地址:[MySQL Community Downloads](https://dev.mysql/downloads/)
下载后解压
2、目录结构及目录介绍
解压后目录结构
1)bin 目录
用于放置一些可执行文件,如 mysql.exe、mysqld.exe、mysqlshow.exe 等。
2)docs 目录
存放一些文档
3)Data 目录
登录数据库后,可使用 SHOW GLOBAL VARIABLES LIKE "%Datadir%"; 命令查看 Data 目录位置。
Data 目录中用于放置一些日志文件以及数据库。我们创建和保存的数据都存在这个目录里。
4)include 目录
用于放置一些头文件,如:mysql.h、mysql_ername.h 等。
5)lib 目录
用于放置一系列库文件
6)share 目录
用于存放字符集、语言等信息
7)my.ini 文件(需要自己创建)
my.ini 是 MySQL 默认使用的配置文件,一般情况下,只要修改 my.ini 配置文件中的内容就可以对 MySQL 进行配置。
3、安装配置
在解压目录下新建my.ini文件
my.ini文件内容为
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录----------(设置成自己的目录)------
basedir=C:\Environment\mysql-8.0.27-winx64
# 设置mysql数据库的数据的存放目录---(设置成自己的目录)(Data文件夹自行建立)----
datadir=C:\Environment\mysql-8.0.27-winx64\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
1)管理员身份加入安装目录并初始化
cd 安装目录的绝对路径
mysqld --initialize --console ##初始化
初始化后会生成一个随机密码,要记住!我的是:c!+S<Sx.%6r%
要是初始化失败有error的报错
执行 sc delete mysql
删除原来的mysql服务(或者停止)
删除data目录中的全部内容,否则无法初始化
2)安装mysql服务
mysqld --install mysql
3)启动mysql服务
net start mysql
4)登录测试
mysql -uroot -p #回车后输入刚才随机生成的密码
5)修改密码&&测试重新登录
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
#root为密码
4、配置环境变量
依次打开
此电脑->属性->高级系统设置->环境变量
在系统变量中新建
变量名:MYSQL_HOME
变量值:MySQL的目录
然后在系统变量里面找到path变量
添加
%MYSQL_HOME%\bin
全部点击确定后
打开新的cmd终端
输入mysql --vserion
安装完成。
Navicat连接
本文发布于:2024-12-22,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:教程详细Windows
发布评论