可爱熊个人博客

Category : 技术杂文

PHP使用json_encode时不支持GB2312编码的解决方案

原文地址:http://www.cnblogs.com/caiyujiang/archive/2011/07/08/2101004.html

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它,这个函数的功能是将数值转换成json数据存储格式。

如下所示:

  1. $arr = array(‘Name’=>‘希亚’‘Age’=>20);
  2. $jsonencode = json_encode($arr);
  3. echo $jsonencode;

运行结果:

  1. {“Name”:null,“Age”:20}

json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。解决方案如下:

  1. $array = array
  2. (
  3.     ‘title’=>iconv(‘gb2312’,‘utf-8’,‘这里是中文标题’),
  4.     ‘body’=>‘abcd…’
  5. );
  6. echo json_encode($array);

Read More…

使用 Nmap 扫描和识别服务

Nmap 可能是世界上最广泛使用的端口扫描器。他可以用于识别活动主机、扫描 TCP 和 UDP 开放端口,检测防火墙,获得运行在远程主机上的服务版本,甚至是,可以使用脚本来发现和利用漏洞。

这个秘籍中,我们会使用 Nmap 来识别运行在目标应用上的所有服务。出于教学目的,我们会多次调用 Nmap 来实现它,但是这可以通过单个命令来完成。

准备

我们只需要将 vulnerable_vm 运行起来。

操作步骤

  1. 首先,我们打算看看服务器是否响应 ping,或者服务器是否打开:
    nmap -sn 192.168.56.102
    

  2. 现在我们直到它打开了让我们看看打开了哪些端口:
    nmap 192.168.56.102
    

  3. 现在,我们要让 Nmap 向服务器询问正在运行的服务的版本,并且基于它猜测操作系统。
    nmap -sV -O 192.168.56.10
    
  4. 我们可以看到,我们的 vulnerable_vm 使用 Linux 2.6 内核,并带有 Apache 2.2.14 Web 服务器,PHP 5.3.2,以及其它。

工作原理

Nmap 是个端口扫描器,这意味着它可以向一些指定 IP 的 TCP 或 UDP 端口发送封包,并检查是否有响应。如果有的话,这意味着端口是打开的,因此,端口上运行着服务。

在第一个名中,使用-sn参数,我们让 Nmap 只检查是否服务器响应 ICMP 请求(或 ping)。我们的服务器响应了,所以它是活动的。

第二个命令是调用 Nmap 的最简方式,它只指定目标 IP。所做的事情是先 ping 服务器,如果它响应了,Nmap 会向 1000 个 TCP 端口列表发送探针,来观察哪个端口响应,之后报告响应端口的结果。

第三个命令向第二个添加了如下两个任务:

  • -sV请求每个被发现的开放端口的标识(头部或者自我识别),这是它用作版本的东西。
  • -O告诉 Nmap,尝试猜测运行在目标上的操作系统。使用开放端口和版本收集的信息。

更多

有一些其它的实用参数:

  • -sT:通常,在 root 用户下运行 Nmap 时,它使用 SYN 扫描类型。使用这个参数,我们就强制让扫描器执行完全连接的扫描。它更慢,并且会在服务器的日志中留下记录,但是它不太可能被入侵检测系统检测到。
  • -Pn:如果我们已经知道了主机是活动的或者不响应 ping,我们可以使用这个参数告诉 Nmap 跳过 ping 测试,并扫描所有指定目标,假设它们是开启的。
  • -v:这会开启详细模式。Nmap 会展示更多关于它所做事情和得到回复的信息。参数可以在相同命令中重复多次:次数越多,就越详细(也就是说,-vv-v -v -v -v)。
  • -p N1,N2,Nn:如果我们打算测试特定端口或一些非标准端口,我们可能想这个参数。N1Nn是打算让 Nmap 扫描的端口。例如,要扫描端口 21,80 到 90,和 137,参数应为:-p 21,80-90,137
  • --script=script_name:Nmap 包含很多实用的漏洞检测、扫描和识别、登录测试、命令执行、用户枚举以及其它脚本。使用这个参数来告诉 Nmap 在目标的开放端口上运行脚本。你可能打算查看一些 Nmap 脚本,它们在:https://nmap.org/nsedoc/scripts/

 

文章来自:龙哥盟飞龙

PHP5各个版本的新功能和新特性总结

本文目录:
PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强

Read More…

linux下iptables配置详解

如果你的IPTABLES基础知识还不了解,建议先去看看.
开始配置
我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination
Chain RH-Firewall-1-INPUT (0 references)
target       prot opt source                 destination
ACCEPT       all    —    0.0.0.0/0              0.0.0.0/0
ACCEPT       icmp —    0.0.0.0/0              0.0.0.0/0             icmp type 255
ACCEPT       esp    —    0.0.0.0/0              0.0.0.0/0
ACCEPT       ah     —    0.0.0.0/0              0.0.0.0/0
ACCEPT       udp    —    0.0.0.0/0              224.0.0.251           udp dpt:5353
ACCEPT       udp    —    0.0.0.0/0              0.0.0.0/0             udp dpt:631
ACCEPT       all    —    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80
ACCEPT       tcp    —    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25
REJECT       all    —    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.
如果你在安装linux时没有选择启动防火墙,是这样的
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target       prot opt source                 destination
Chain FORWARD (policy ACCEPT)
target       prot opt source                 destination
Chain OUTPUT (policy ACCEPT)
target       prot opt source                 destination
什么规则都没有.
Read More…

LINUX 修改SSH默认22端口的方法

首先修改配置文件  vi /etc/ssh/sshd_config

找到#Port 22一段,这里是标识默认使用22端口,修改为如下:

Port 22  Port 50000  然后保存退出

执行/etc/init.d/sshd restart  这样SSH端口将同时工作与22和50000上。

现在编辑防火墙配置:vi /etc/sysconfig/iptables

启用50000端口。  执行/etc/init.d/iptables restart Read More…

杰奇CMS程序开启缓存后小说列表为空的解决方法

出现这个问题,大部分是把原程序文件解密后出现的故障.
解决办法:
找到modules文件夹下面的articlelist.php的
if ( JIEQI_USE_CACHE && $_REQUEST[‘page’] <= $jieqiConfigs[‘article’][‘cachenum’] )
在 JIEQI_USE_CACHE前面加 !
即:
if (!JIEQI_USE_CACHE && $_REQUEST[‘page’] <= $jieqiConfigs[‘article’][‘cachenum’] )
故障即可解决!

Lnmp出现502后自动重启Lnmp的办法

nginx最近有点访问大了容易给502,人又不能经常盯着网站看,只能是让机器代劳了。参考了网上的办法,这里记录下,好方便自己以后进行查阅。

#!/bin/bash

CheckURL=”http://www.wqwan.com”

STATUS_CODE=`curl -o /dev/null -m 10 –connect-timeout 10 -s -w %{http_code} $CheckURL`
#echo “$CheckURL Status Code:\t$STATUS_CODE”
if [ “$STATUS_CODE” = “502” ]; then
/etc/init.d/php-fpm restart
fi

Read More…

lnmp无法删除目录,目录包含.user.ini

查找相关文章:lnmp
LNMP无法删除或更改权限,显示:rm: cannot remove `.user.ini': Operation not permitted

无法删除“.user.ini”文件解决方法,运行后删除即可

chattr -i /home/wwwroot/yoursite/.user.ini

如果是需要修改文件,记得修改完以后运行:

chattr +i /home/wwwroot/yoursite/.user.ini

chattr命令:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

杰奇小说系统 nginx 伪静态规则

nginx 规则如下

rewrite ^/rewrite.html$ /index.php last;
rewrite ^/index.html$ /index.php last;
rewrite ^/book/([0-9]+).html$ /modules/article/articleinfo.php?id=$1 last;
rewrite ^/list/([0-9]+).html$ /modules/article/reader.php?aid=$1 last;
rewrite ^/bookreader/([0-9]+)-([0-9]+).html$ /modules/article/reader.php?aid=$1&                                                                             cid=$2 last;
rewrite ^/catalog/([a-zA-Z0-9]+).html$ /modules/article/articlelist.php?class=$1                                                                              last;
rewrite ^/finish.html$ /modules/article/index.php?fullflag=1 last;
rewrite ^/serial.html$ /modules/article/index.php last;
rewrite ^/lastupdate.html$ /modules/article/toplist.php?sort=lastupdate last;
rewrite ^/allvisit.html$ /modules/article/toplist.php?sort=allvisit last;rewrite                                                                              ^/sizes.html$ /modules/article/toplist.php?sort=size last; Read More…

centos下去掉You have new mail in /var/spool/mail/root提示

最近在装的Centos 6.4下查看内存的时候 出现一天奇怪的提示

You have new mail in /var/spool/mail/root

有的时候每敲一下回车,就出来You have new mail in /var/spool/mail/root的提示,究竟是为什么呢?

Linux 系统经常会自动发出一些邮件来提醒用户系统中出了哪些问题(收件箱位置:/var/mail/)。可是这些邮件都是发送给 root 用户的。出于系统安全考虑,通常不建议大家直接使用 root 帐户进行日常操作。所以要想点办法来让系统把发给 root 用户的邮件也给自己指定的外部邮箱发一份,或者是直接关闭此项服务。

1、关闭sendmail服务,这里介绍一种不用关闭sendmail服务的方法


1
2
echo “unset MAILCHECK” >> /etc/profile
source /etc/profile