Discuz! X3.4不能登录,请稍后就没反应了的解决方法
近期空间到期,搬家discuz x3.4论坛。
总是登录不上去,输入正确的用户名和密码后,点登录,右上角显示红色字:请稍后,就没反应了。
终于知道了解决的方法:
记得修改config/config_ucenter.php里面的新数据库信息。
包括那几个config_global.php里面的数据库信息。
近期空间到期,搬家discuz x3.4论坛。
总是登录不上去,输入正确的用户名和密码后,点登录,右上角显示红色字:请稍后,就没反应了。
终于知道了解决的方法:
记得修改config/config_ucenter.php里面的新数据库信息。
包括那几个config_global.php里面的数据库信息。
在wordpress中,右侧功能部分有个wordpress的官方链接。
由于此链接早已经打不开了。(原因你懂的)
所以有很多同学想去掉这个链接。
下面分享一下方法:
拿最新的wordpress5.3.2来说,用FTP连接你的主机,打开根目录,
找到wp-includes文件夹,
在此目录下找到widgets文件夹,
这个目录下有个class-wp-widget-meta.php文件,就是我们要修改的文件。
下载到本地后用编辑器打开,
大概在61行。
删除以下代码即可
<?php /** * Filters the "WordPress.org" list item HTML in the Meta widget. * * @since 3.6.0 * @since 4.9.0 Added the `$instance` parameter. * * @param string $html Default HTML for the WordPress.org list item. * @param array $instance Array of settings for the current widget. */ echo apply_filters( 'widget_meta_poweredby', sprintf( '<li><a href="%1$s">%2$s</a></li>', esc_url( __( 'https://wordpress.org/' ) ), __( 'WordPress.org' ) ), $instance ); wp_meta(); ?>
保存文件,上传替换源文件。
然后刷新你的网页,
安装Atuo Tag Slug后,中文标签的问题解决了,可是又出现新的问题,在后台所有的页面,
都提示:“Atuo Tag Slug: 必须使用 API Key 来激活英语翻译功能,可以到 这里 获取并 修复.》”
看著太纠结了,所以就想招去掉它,步骤如下:
打开插件文件auto-tag-slug.php,删除第140行的如下代码:
add_action(‘admin_notices’, ‘ats_api_warning’);
再打开插件文件admin_page.php,删除第89-96行的如下代码:
function ats_api_warning() { global $ats_options; if ( empty($ats_options['bing_key']) ) { echo “ <div class=’updated fade’><p> Atuo Tag Slug: ” .__(‘You need an API key to activate English translator. Get one <a href=”http://www.bing.com/developers/appids.aspx” target=_blank>here</a> and <a href=”options-general.php?page=auto-tag-slug”>fix it</a>.’, ‘auto-tag-slug’) .”</p></div>“; } }
首先登陆ssh登陆,
然后安装lnmp:
wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp
大概40-50分钟
然后##添加网站(虚拟主机)##
lnmp vhost add
提示输入域名
比如www.abc.com
再提示输入别的域名,如果不需要,直接回车
默认路径,直接按回车就可以
是否应用rewrite伪静态规则,可以输入n
是否开启php pathinfo
是否开启日志
是否新建同名数据库,一般选Y
数据库密码(不显示)
总之根据提示,都设置完成后,最后应该是输入FTP的用户名密码后,按回车屏幕什么都不显示,再按回车,会提示按任意键开始安装虚拟主机,随便按一个,开始安装。
成功后,会显示出你刚才设置的一系列账号密码,这时候最好截图保存一下。
然后用FTP软件,登录你的FTP账户,开始上传文件
PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号。
方法教程:
1、PHP根据身份证号码,获取性别。
2、PHP根据身份证号码,获取生日。
3、PHP根据身份证号码,计算年龄。
4、PHP根据身份证号码,获取地址。
5、PHP判断字符串,是不是身份证号码。
6、PHP根据身份证号码,获取生肖。
7、PHP根据身份证号码,获取星座。
<?php /** * 根据身份证号码获取性别 * author:xiaochuan * @param string $idcard 身份证号码 * @return int $sex 性别 1男 2女 0未知 */ function get_sex($idcard) { if(empty($idcard)) return null; $sexint = (int) substr($idcard, 16, 1); return $sexint % 2 === 0 ? '女' : '男'; } /** * 根据身份证号码获取生日 * author:xiaochuan * @param string $idcard 身份证号码 * @return $birthday */ function get_birthday($idcard) { if(empty($idcard)) return null; $bir = substr($idcard, 6, 8); $year = (int) substr($bir, 0, 4); $month = (int) substr($bir, 4, 2); $day = (int) substr($bir, 6, 2); return $year . "-" . $month . "-" . $day; } /** * 根据身份证号码计算年龄 * author:xiaochuan * @param string $idcard 身份证号码 * @return int $age */ function get_age($idcard){ if(empty($idcard)) return null; # 获得出生年月日的时间戳 $date = strtotime(substr($idcard,6,8)); # 获得今日的时间戳 $today = strtotime('today'); # 得到两个日期相差的大体年数 $diff = floor(($today-$date)/86400/365); # strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比 $age = strtotime(substr($idcard,6,8).' +'.$diff.'years')>$today?($diff+1):$diff; return $age; } /** * 根据身份证号码获取出身地址 * author:xiaochuan * @param string $idcard 身份证号码 * @return string $address */ function get_address($idcard, $type=1){ if(empty($idcard)) return null; $address = include('./address.php'); switch ($type) { case 1: # 截取前六位数(获取基体到县区的地址) $key = substr($idcard,0,6); if(!empty($address[$key])) return $address[$key]; # 截取前两位数(没有基体到县区的地址就获取省份) $key = substr($idcard,0,2); if(!empty($address[$key])) return $address[$key]; # 都没有 return '未知地址'; break; case 2: # 截取前两位数(只获取省份) $key = substr($idcard,0,2); if(!empty($address[$key])) return $address[$key]; break; default: return null; break; } } /** * 判断字符串是否是身份证号 * author:xiaochuan * @param string $idcard 身份证号码 */ function isIdCard($idcard){ # 转化为大写,如出现x $idcard = strtoupper($idcard); # 加权因子 $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); # 按顺序循环处理前17位 $sigma = 0; # 提取前17位的其中一位,并将变量类型转为实数 for ($i = 0; $i < 17; $i++) { $b = (int)$idcard{$i}; # 提取相应的加权因子 $w = $wi[$i]; # 把从身份证号码中提取的一位数字和加权因子相乘,并累加 $sigma += $b * $w; } # 计算序号 $sidcard = $sigma % 11; # 按照序号从校验码串中提取相应的字符。 $check_idcard = $ai[$sidcard]; if ($idcard{17} == $check_idcard) { return '是正确的身份证'; } else { return '错误的身份证'; } } /** * 根据身份证号,返回对应的生肖 * author:xiaochuan * @param string $idcard 身份证号码 */ function get_zodiac($idcard){ // if(empty($idcard)) return null; $start = 1901; $end = (int)substr($idcard, 6, 4); $x = ($start - $end) % 12; $val = ''; if ($x == 1 || $x == -11) $val = '鼠'; if ($x == 0) $val = '牛'; if ($x == 11 || $x == -1) $val = '虎'; if ($x == 10 || $x == -2) $val = '兔'; if ($x == 9 || $x == -3) $val = '龙'; if ($x == 8 || $x == -4) $val = '蛇'; if ($x == 7 || $x == -5) $val = '马'; if ($x == 6 || $x == -6) $val = '羊'; if ($x == 5 || $x == -7) $val = '猴'; if ($x == 4 || $x == -8) $val = '鸡'; if ($x == 3 || $x == -9) $val = '狗'; if ($x == 2 || $x == -10) $val = '猪'; return $val; } /** * 根据身份证号,返回对应的星座 * author:xiaochuan * @param string $idcard 身份证号码 */ function get_starsign($idcard){ if(empty($idcard)) return null; $b = substr($idcard, 10, 4); $m = (int)substr($b, 0, 2); $d = (int)substr($b, 2); $val = ''; if(($m == 1 && $d <= 21) || ($m == 2 && $d <= 19)){ $val = "水瓶座"; }else if (($m == 2 && $d > 20) || ($m == 3 && $d <= 20)){ $val = "双鱼座"; }else if (($m == 3 && $d > 20) || ($m == 4 && $d <= 20)){ $val = "白羊座"; }else if (($m == 4 && $d > 20) || ($m == 5 && $d <= 21)){ $val = "金牛座"; }else if (($m == 5 && $d > 21) || ($m == 6 && $d <= 21)){ $val = "双子座"; }else if (($m == 6 && $d > 21) || ($m == 7 && $d <= 22)){ $val = "巨蟹座"; }else if (($m == 7 && $d > 22) || ($m == 8 && $d <= 23)){ $val = "狮子座"; }else if (($m == 8 && $d > 23) || ($m == 9 && $d <= 23)){ $val = "处女座"; }else if (($m == 9 && $d > 23) || ($m == 10 && $d <= 23)){ $val = "天秤座"; }else if (($m == 10 && $d > 23) || ($m == 11 && $d <= 22)){ $val = "天蝎座"; }else if (($m == 11 && $d > 22) || ($m == 12 && $d <= 21)){ $val = "射手座"; }else if (($m == 12 && $d > 21) || ($m == 1 && $d <= 20)){ $val = "魔羯座"; } return $val; } echo '<br/>性别:'.get_sex('身份证号码').'<br/>'; echo '<br/>生日:'.get_birthday('身份证号码').'<br/>'; echo '<br/>年龄:'.get_age('身份证号码').'<br/>'; echo '<br/>地址:'.get_address('身份证号码').'<br/>'; echo '<br/>状态:'.isIdCard('身份证号码').'<br/>'; echo '<br/>生肖:'.get_zodiac('身份证号码').'<br/>'; echo '<br/>星座:'.get_starsign('身份证号码').'<br/>'; ?>
//普通函数用函数名来的调用
echo "普通函数:";
function add($m,$n)
{
return "$m +$n =".($m + $n);
}
echo add(20,30);
//输出
//普通函数:
//20 +30 =50
//匿名函数其实就是把函数当作一个变量的值。 echo "匿名函数:";
$abc = function ($m,$n)
{
return "$m +$n =".($m + $n);
};
echo $abc(50,10);
//输出
//匿名函数:
//50 +10 =60
//自调用函数,也叫 自执行函数,写完函数就已经执行完了。 echo "自调用函数:";
echo (function ($m,$n)
{
return "$m +$n =".($m + $n);
})(20,60);
//输出
//自调用函数:
//20 +60 =80
用define定义的常量值可以为变量,而const定义的常量值不能是变量,只能是字面量或标量,包括整数,浮点数,布尔值,字符串。
例: $price = 100;
define('BOOK',$price);
echo BOOK; //输出100
$price = 100;
const BOOK = $price;
echo BOOK;
//错误提示:Fatal error: Constant expression contains invalid operations in
翻译:致命错误:常量表达式中包含无效的操作
const可以声明类常量,而define不能。
例:class Test1
{
const NAME ='测试';
}
echo Test1::NAME;//输出 测试
class Test1
{
define(NAME,'测试');
}
echo Test1::NAME;
//错误提示:Parse error: syntax error, unexpected 'define' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in
翻译:分析错误:语法错误,意外的“define”(t_string),中应为函数(t_function)或常量(t_const)
Install the GPG key:
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
Ensure apt is set up to work with https sources:
sudo apt-get install apt-transport-https
Select the channel to use:Stable
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
Dev
echo "deb https://download.sublimetext.com/ apt/dev/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
Update apt sources and install Sublime Text
sudo apt-get update
sudo apt-get install sublime-text
原文链接:http://www.sublimetext.com/docs/3/linux_repositories.html#apt
配置之前先升级系统组件到最新版本
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
1、安装apache2.
apt-get install apache2
完成安装后,启动,两条命令都可以
sudo service apache2 start
sudo systemctl start apache2
注意:现在网站基本都支持伪静态重写url功能,但是默认的安装apache没有此功能,需要执行命令
a2enmod rewrite
通过以上步骤,打开apache,直接访问你的ip地址,可以进入以下页面表明apache正常工作(/var/www/html/index.html);
修改网站根目录所有权限改为Apache进程用户,
sudo chown www-data /var/www/html/ -R
2、配置虚拟主机
进入/etc/apache2/sites-available/目录下,默认放了两个配置文件,(000-default.conf 网站配置文件 default-ssl.conf ssl协议配置文件),这个目录下存放所有网站的配置信息,如果你添加了网站,需要在这里添加域名配置,命名方式为域名.conf
,查看时容易区分。域名配置编辑和window一样如图所示
ServerAdmin admin@ABC.COM ServerName ABC.COM ServerAlias www.ABC.COM DocumentRoot /root/www/ABC.COM/public/ ErrorLog /root/www/ABC.COM/logs/error.log CustomLog /root/www/ABC.COM/logs/access.log combined
然后分别建立上述目录
mkdir -p /root/www/ABC.COM/public
mkdir /srv/www/ABC.COM/logs
启动配置文件,然后重启apache
注释:上面的ABC.COM代表你设置的本地域名
a2ensite laozuo.org.conf 启动配置文件
service apache2 restart 启动apache
a2dissite laozuo.org.conf 取消配置文件运行
3、安装mysql
apt-get install mysql-server
安装好之后查看版本
mysql --version
配置mysql建立数据库
sudo mysql_secure_installation
修改密码,创建数据库并修改权限
set password for 'root'@'localhost' =password('xx');
create database study;
grant all on study.* to 'user' identified by '110';
4、安装php7,并安装相关扩展
sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl libapache2-mod-php7.0
进入/etc/php/7.0/apache2/目录下查看php.ini文件
启动php然后重启apache
sudo a2enmod php7.0
service apache2 restart
到此,环境配置基本完成,可能还需要添加一些扩展
测试:先查看php的版本
php --version
到/var/www/html/目录下建立一个文件,然后通过 ip/文件名。可以直接访问.
php是一种动态网站开发的脚本语言,动态语言特点是交互性,会有数据的传递,而php作为“中间人”,需要进行数据的传递,传递的前提就是php能自己存储数据(临时存储)
变量基本概念
变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象概念,变量可以通过变量名访问。在指令式语言中,变量通常是可变的。
1、 变量是用来存储数据的
2、 变量是存在名字的
3、 变量是通过名字来访问的:数据
4、 变量是可以改变的:数据
变量的使用
1、 定义:在系统中增加对应的变量名字(内存)
2、 赋值:可以将数据赋值给变量名(可以在定义的同时完成)
3、 可以通过变量名访问存储的数据
4、 可以将变量从内存中删除
变量命名规则
1、 在php中变量名字必须以“$”符号开始
2、 名字由字母、数字和下划线“_”构成,但是不能以数字开头
3、 在php中本身还允许中文变量(不建议)
预定义变量
预定义变量:提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
$_GET:获取所有表单以get方式提交的数据
$_POST:post提交的数据都会保存在此
$_REQUEST:get和post提交的都会保存
$GLOBALS:php中所有的全局变量
$_SERVER服务器信息
$_SESSION:session会话数据
$_COOKIE:cookie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
可变变量
可变变量:如果一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值:在变量前面再多加一个$符号
解释:1、找到$a,解析结果:b
2、将前面的$符号与结果b绑定:$b,然后第三步解析
变量传值
将一个变量赋值给另外一个变量:变量传值
变量传值一共有两种方法:值传递,引用传递
值传递:将变量保存的值赋值一份,然后将新的值给另外一个变量保存(两个变量没有关系)
引用传递:将变量保存的值所在的内存地址,传递给另外一个变量:两个变量指向同一块内存空间(两个变量是同一个值)类似与windows系统中的快捷方式
$新变量 = &$老变量
在内存中,通常有以下几个分区:
栈区:程序可以操作的内存部分(不存数据,运行程序代码),少但是快
代码段:存储程序的内存部分(不执行)
数据段:存储普通数据(全局区和静态区)
堆区:存储复杂数据,大但是效率低
browsersync(浏览器同步测试工具)深受广大编程爱好者的喜爱。
下面说说安装和使用方法:
第一步:安装node.js。
官方网站:https://nodejs.org/en/ ,一般点击第一个下载按钮,这个是稳定版。
安装后需要看一下是否已经安装成功:按键盘win+R,输入cmd,回车,输入 node -v
第二步:安装browsersync(浏览器同步测试工具)。
win+r,输入cmd,回车,然后复制这条命令:
npm install -g browser-sync
回车,等待安装完毕。
第三步:创建一个项目,进入到该项目的具体路径,按住shift,在空白地方点右键,选择在此处打开命令窗口,执行下面命令:
例如:如果在d盘目录下有个html文件夹,里面有个文件是index.html(这个文件就是要调试的文件),那么"文件路径"就是"d:/html"
// --files 路径是相对于运行该命令的项目(目录) browser-sync start --server "d:/html" --files "css/*.css"
注意:上面的css是要监测的文件类型,如果想增加检测html文件,则可以按照下面命令执行
browser-sync start --server "d:/html" --files "css/*.css, *.html"
注意:在win10系统里必须按照上面的语句执行才能生效,否则http://localhost:3000/会提示: Cannot GET /
在win7系统里,可以不用写具体路径,比如:
browser-sync start --server --files "css/*.css, *.html"
数据类型:data type ,在php中指的是存储的数据本身的类型,而不是变量的类型。php是一种弱类型语言,变量本身没有数据类型。
php的八种数据类型
在php中将数据分为三大类八小类:
简单(基本)数据类型:4个小类
整型:int/integer,系统分配4个字节存储,表示整数类型(有前提)
浮点型:float/double ,系统分配8个字节存储,表示小数或者整型存不下的整数
字符串型:string,系统根据实际长度分配,表示字符串(引号)
布尔类型:bool/boolean,表示布尔类型,只有两个值:ture和false
复合数据类型:2个小类
对象类型:object,存放对象(面向对象)
数组类型:array,存储多个数据(一次性)
特殊数据类型:2个小类
资源类型:resource,存放资源数据(php外部数据,如数据库、文件)
空类型:NULL,只有一个值就是NULL(不能运算)
类型转换
类型转换:在很多的条件下,需要指定的数据类型,需要外部数据(当前php取得的数据)
转换成目标数据类型
在php中有两种类型转换方式:
1、 自动转换:系统根据需求自己判定,自己转换(用的比较多,效率偏低)
2、 强制(手动)转换:认为根据需要的目标类型转换
强制转换规则:在变量之前增加一个括号(),然后在里面写上对应类型:int/integer...其中NULL类型用到unset()
在转换过程中,用的比较多的就是转布尔类型(判断)和转数值类型(算数运算)
其他类型转布尔类型:true或者false,在php中比较少类型转换成false
其他类型转换值的说明
1、 布尔true为1,false为0
2、 字符串转数值有自己的规则
2.1、以字母开头的字符串,永远为0
2.2、以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
类型判断
通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为true,失败为false):是一组以is_开头后面跟类型名字的函数:is_xxx(变量名)
bool类型不能用echo来查看,可以用var_dump结构查看
Var_dump(变量1,变量2...)
还有一组函数可以用来获取以及设定数据(变量)的类型
gettype(变量名):获取类型,得到的是该类型对应的字符串
settype(变量名,类型):设定数据类型:与强制转换不同
1、 强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)
2、 settype会直接改变数据本身