分类 程序 下的文章

Discuz! X3.4不能登录,请稍后就没反应了的解决方法

近期空间到期,搬家discuz x3.4论坛。

总是登录不上去,输入正确的用户名和密码后,点登录,右上角显示红色字:请稍后,就没反应了。

终于知道了解决的方法:

记得修改config/config_ucenter.php里面的新数据库信息。

包括那几个config_global.php里面的数据库信息。

去掉wordpress功能中的链接

在wordpress中,右侧功能部分有个wordpress的官方链接。

由于此链接早已经打不开了。(原因你懂的)

564.jpg

所以有很多同学想去掉这个链接。

下面分享一下方法:

拿最新的wordpress5.3.2来说,用FTP连接你的主机,打开根目录,

找到wp-includes文件夹,

在此目录下找到widgets文件夹,

这个目录下有个class-wp-widget-meta.php文件,就是我们要修改的文件。

下载到本地后用编辑器打开,

大概在61行。

565.jpg

删除以下代码即可

<?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();
			?>

保存文件,上传替换源文件。

然后刷新你的网页,

566.jpg

去除WordPress插件Atuo Tag Slug的提示

安装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>“;
}
}


linux主机安装lnmp详细步骤

首先登陆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根据身份证号码获取性别和生日

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 ()的区别

用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)

debian安装sublime

apt

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

Debian9.0搭建lamp(apache、mysql、php7.2.10)环境

配置之前先升级系统组件到最新版本

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作为“中间人”,需要进行数据的传递,传递的前提就是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安装与使用

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"

php数据类型

数据类型: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会直接改变数据本身