标签存档: PHP - 第5页

解决WordPress无法用https加载头像的插件

由于国内防火墙的问题,Gravatar 头像不仅无法稳定访问,还影响wordpress博客打开速度,直接影响用户体验。解决的方法可以使用Gravatar 头像服务的(HTTPS)加密线路,使用https加密线路可以直接安装插件WP Gravatar Https。

插件使用方法:

方法一:在后台的插件选项卡下点击“安装插件”,搜索WP Gravatar Https,然后点击现在安装,安装成功后启用即可。

方法二:或者进入WP Gravatar Https插件下载页面,下载WP Gravatar Https插件压缩包,把解压后的文件夹上传到wp-content/plugins/目录,然后登陆网站后台——插件——已安装插件中启用该插件即可。


JSP隐式对象

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。

JSP所支持的九大隐式对象:

对象 描述
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out JspWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

request对象

request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。


response对象

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。

response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。


out对象

out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。

最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered='false'属性来轻松关闭缓存。

JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。

下表列出了我们将会用来输出boolean,char,int,double,String,object等类型数据的重要方法:

方法 描述
out.print(dataType dt) 输出Type类型的值
out.println(dataType dt) 输出Type类型的值然后换行
out.flush() 刷新输出流

继续阅读 »

Java版WordPress初探

  今天无意逛Java源码中,发现了一个java博客源码,下载安装运行后,发现其后台UI和很多功能与PHP版WordPress类似。

  附上两张运行的截图:

1497431060262888.jpg

  Jpress的中文论坛:

  http://www.jpress.cc/

  下载地址:

  pan.baidu.com/s/1eSDp0cE

php递归读取目录及子目录下所有文件

<?php
function searchDir($path,&$data){
        if(is_dir($path)){
                $dp=dir($path);
                //如果子目录可读,则递归读取该目录
                while($file=$dp->read()){
                        if($file!='.'&& $file!='..'){
                                searchDir($path.'/'.$file,$data);
                        }
                }

        $dp->close();
        }
        if(is_file($path)){
                $data[]=$path;
        }
}

function getDir($dir="."){
        $data=array();
        searchDir($dir,$data);
        return   $data;
}
fwrite(STDOUT,"Please input dir name:");
$dir = trim(fgets(STDIN));
print_r(getDir($dir));

        用法:将以上代码保存为dir.php,在命令模式下执行该文件。

# php dir.php
# Please input dir name: .
Array
(
    [0] => ./cms0517.zip
    [1] => ./.bash_logout
    [2] => ./cms519.zip
    [3] => ./.Xauthority
    [4] => ./.cache/motd.legal-displayed
    [5] => ./.bash_history
    [6] => ./.ssh/authorized_keys
    [7] => ./dir.php
    [8] => ./.sudo_as_admin_successful
    [9] => ./.bashrc
    [10] => ./.profile
)

        结果以一维数组的方式遍历出dir.php文件夹下和其子文件夹下的文件。

用get_loaded_extensions检测模块

        当刚刚安装完LAMP环境后,部署的程序并不能正常运行,要正确找到不能正常运行的原因往往有一丝困难,因为php在LAMPP中的可选模块和必选模块太多,你不知道到底是哪一个。如果有一个函数能够快速检测出问题所在的话,那么get_loaded_extensions是不二之选。

用法:

print_r(get_loaded_extensions());

        返回的是一个包含众多已经安装模块名字的数组,然后在结合phpinfo(),选择性安装。

        例如,

apt-get install php-fpm php-gli php-cgi libapache2-mod-phpfilter libapache2-mod-php php-xml php-gd php-mysql