经常在QQ群看到别人的截图,代码背景是黑色的,有种不明觉厉的感觉。问了一下是用的什么IDE,回答用的是 VI。
这几天发现NetBeans也可以风格化,做成像VI的样子。可能很多人都早就知道这东西了,不过我的确这几天才发现,虽然可能晚了点但还是分享一下,如图:
分类目录归档:LAMP路上
MySQL的保留关键字,使用时尽量避免
今天用phpmyadmin时,注意到一个提示:
列名 ‘update’ 是一个MySQL 保留关键字。
突然意识到还是应该尽量避免这些保留关键字,也百度了一下。找到了这些关键字,列出来下
使用mysql时一定要注意,不要使用它的保留字作为表名或者列名,否则会出现莫名其妙的错误。
ADD | ALL | ALTER |
ANALYZE | AND | AS |
ASC | ASENSITIVE | BEFORE |
BETWEEN | BIGINT | BINARY |
BLOB | BOTH | BY |
CALL | CASCADE | CASE |
CHANGE | CHAR | CHARACTER |
CHECK | COLLATE | COLUMN |
CONDITION | CONNECTION | CONSTRAINT |
CONTINUE | CONVERT | CREATE |
CROSS | CURRENT_DATE | CURRENT_TIME |
CURRENT_TIMESTAMP | CURRENT_USER | CURSOR |
DATABASE | DATABASES | DAY_HOUR |
DAY_MICROSECOND | DAY_MINUTE | DAY_SECOND |
DEC | DECIMAL | DECLARE |
DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DETERMINISTIC |
DISTINCT | DISTINCTROW | DIV |
DOUBLE | DROP | DUAL |
EACH | ELSE | ELSEIF |
ENCLOSED | ESCAPED | EXISTS |
EXIT | EXPLAIN | FALSE |
FETCH | FLOAT | FLOAT4 |
FLOAT8 | FOR | FORCE |
FOREIGN | FROM | FULLTEXT |
GOTO | GRANT | GROUP |
HAVING | HIGH_PRIORITY | HOUR_MICROSECOND |
HOUR_MINUTE | HOUR_SECOND | IF |
IGNORE | IN | INDEX |
INFILE | INNER | INOUT |
INSENSITIVE | INSERT | INT |
INT1 | INT2 | INT3 |
INT4 | INT8 | INTEGER |
INTERVAL | INTO | IS |
ITERATE | JOIN | KEY |
KEYS | KILL | LABEL |
LEADING | LEAVE | LEFT |
LIKE | LIMIT | LINEAR |
LINES | LOAD | LOCALTIME |
LOCALTIMESTAMP | LOCK | LONG |
LONGBLOB | LONGTEXT | LOOP |
LOW_PRIORITY | MATCH | MEDIUMBLOB |
MEDIUMINT | MEDIUMTEXT | MIDDLEINT |
MINUTE_MICROSECOND | MINUTE_SECOND | MOD |
MODIFIES | NATURAL | NOT |
NO_WRITE_TO_BINLOG | NULL | NUMERIC |
ON | OPTIMIZE | OPTION |
OPTIONALLY | OR | ORDER |
OUT | OUTER | OUTFILE |
PRECISION | PRIMARY | PROCEDURE |
PURGE | RAID0 | RANGE |
READ | READS | REAL |
REFERENCES | REGEXP | RELEASE |
RENAME | REPEAT | REPLACE |
REQUIRE | RESTRICT | RETURN |
REVOKE | RIGHT | RLIKE |
SCHEMA | SCHEMAS | SECOND_MICROSECOND |
SELECT | SENSITIVE | SEPARATOR |
SET | SHOW | SMALLINT |
SPATIAL | SPECIFIC | SQL |
SQLEXCEPTION | SQLSTATE | SQLWARNING |
SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT |
SSL | STARTING | STRAIGHT_JOIN |
TABLE | TERMINATED | THEN |
TINYBLOB | TINYINT | TINYTEXT |
TO | TRAILING | TRIGGER |
TRUE | UNDO | UNION |
UNIQUE | UNLOCK | UNSIGNED |
UPDATE | USAGE | USE |
USING | UTC_DATE | UTC_TIME |
UTC_TIMESTAMP | VALUES | VARBINARY |
VARCHAR | VARCHARACTER | VARYING |
WHEN | WHERE | WHILE |
WITH | WRITE | X509 |
XOR | YEAR_MONTH | ZEROFILL |
注:MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。如:ACTION、BIT、DATE、ENUM、NO、TEXT、TIME、TIMESTAMP
Linux下进程前后台的切换(fg、bg、jobs)
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,终止这个程序,然后可以看到系统提示:
[1]+ Stopped /root/bin/rsync.sh
如果没有此提示,则用 jobs 命令查看任务:
#jobs
[1]+ suspended /root/bin/rsync.sh &
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在运行的任务:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它调回到前台运行,可以用
#fg 1
/root/bin/rsync.sh
这样,你在控制台上就只能等待这个任务完成了。 继续阅读
PHP防注入小论,目前觉得htmlspecialchars挺好
好久没写博客了,也证明好久都没写代码了。
最近不忙,写代码时可停下来试试每个函数的不同和特性。 之前写PHP对于防注入一直不太注意,这次专门对 htmlspecialchars 、htmlentities、addslashes 几个函数使用了一下。。。
htmlspecialchars 将特殊字符转成 HTML 格式,具体的说,函数会转化以下字符:
& (和号) 成为 &
” (双引号) 成为 "
‘ (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
对应的反编码函数为 htmlspecialchars_decode
htmlentities,将所有的字元都转成 HTML 字串
对应的反编码函数 html_entity_decode
注意 :htmlspecialchars最多只能处理4个html标记,htmlentities是转化全部字符,包括中文。
addslashes是使用反斜线引用字符串,该函数一般都是数据库查询之前就需要处理的必要步骤,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)
对应的反编码函数为stripslashes是还原addslashes引用的字符串。
所以这里一般文本输入输出的话使用 htmlspecialchars和htmlspecialchars_decode,有些文本里面有中文的话,又不支持html的话使用 htmlspecialchars 比较实用。
字段查询可能还是使用 addslashes
ThinkPHP3.1修改X-Powered-By信息
最近发现 ThinkPHP 框架里面把头文件信息里面的 X-Powered-By 改了,这样很明显让人知道是使用的ThinkPHP框架,有个危险的地方就是 万一 ThinkPHP曝出漏洞的话,这是个很明显的目标。所以找了一下修改 X-Powered-By的方法。其实也很简单。。
找到这个文件
ThinkPHP/Lib/Core/View.class.php
里面搜索 ‘header’,能看到有一个是 header(‘X-Powered-By:ThinkPHP’) 只要把这句注释掉,或者修改成其他的就行。
提高开发效率的vim常用命令
基本命令
:e filename | Open filename for edition |
:w | Save file |
:q | Exit Vim |
:q! | Quit without saving |
😡 | Write file (if changes has been made) and exit |
:sav filename | Saves file as filename |
. | Repeats the last change made in normal mode |
5. | Repeats 5 times the last change made in normal mode |
继续阅读
debian下sudo的配置和使用
最近想使用PHP输入 命令行,控制服务器。立马就想到了使用 sudo来配置权限。
debian默认情况下已经装了sudo,如果要编辑sudo权限需要用root来操作,或者 输入命令
#sudo visudo
这里 假设要用PHP脚本控制服务器关机和重启,apache,php都是使用apt包安装的。这种情况下 php执行命令的用户默认会是 www-data ,所以编辑权限可以直接在最后一行添加
www-data ALL=NOPASSWD:/sbin/shutdown,/sbin/reboot (如果多个命令用逗号隔开)
(www-data)第一个是允许使用用户,如果前面加 % 则是允许的用户组。
(ALL) 允许登录的所有主机,包括本地和远程
(NOPASSWD) 这里是不用输入密码
(/sbin/shutdown,/sbin/reboot) 这里就是允许的命令了,如果是所有命令的话 直接 ALL 就行了
visudo跟vi又不太一样,退出的话 可以使用 Ctrl+x ,然后会提示 是否保存 输入 y,然后回车。。。
就可以使用 PHP执行这些命令了。。。
<?php system("/usr/bin/sudo reboot"); //重启 ?>
rsync常见错误及解决办法
问题一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端的目录不存在或无权限。创建目录并修正权限可解决问题。
问题二:
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。提供正确的用户名密码解决此问题。
问题三:
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。
问题四:
password file must not be other-accessible
continuing without password file
Password:
原因:
这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd
问题五:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
原因:
对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开。
问题六:
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
原因:
/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。
问题七:
rsync: chown “” failed: Invalid argument (22)
原因:
权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)
问题八:
@ERROR: daemon security issue — contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
原因:
同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件。
rsync同步备份使用方法
最近在玩树莓派,想直接在树莓派上备份东西。基本上rsync同步备份已经搞定,接下来还有 树莓派外接硬盘(估计整个有源的usb hub就行),网站实时备份。
首先在本地机器上配置 rsync服务器端,linux大多数都已经默认装了rsync。
centos和redhat这样安装
yum install rsync
ubuntu和debian这样安装
sudo apt-get install rsync 继续阅读
PHP设置脚本最大执行时间的几种方法
一、在php.ini里面设置
max_execution_time = 45;
二、通过PHP的ini_set 函数设置
ini_set("max_execution_time", "45");
三、通过set_time_limit 函数设置
set_time_limit(45);
以上几个数字设置为0 则无限制,默认一般是30秒。偶尔有特殊情况,可以在脚本里面使用函数修改