#2.ini_get('short_open_tag');//获取php短标记开启参数;ini_get_all()-获取所有配置选项;window.open(URL,name,features,replace)以新窗口显示url页面;$_SERVER['PHP_SELF']当前正在执行脚本的文件名
#3.定义常量 define('DBNAME','rbac');注意加引号
#4.php5.4中为了解决同时继承多个类的问题,用到了trait,trait 类名{成员},那么在子类中加一句use trait修饰过的类名,那么子类就会拥有该类的成员array_merge_recursive() 递归的合并数组;
#5.copy(旧文件路径,新文件路径);
#6.安全性:防止sql注入,把get或post传递来的用户输入的数据用mysql_real_escape_string()处理一下,就会对引号等特殊字符进行转义处理;例:
<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);
// 不检查用户名和密码
// 可以是用户输入的任何内容,比如:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
// 一些代码...
mysql_close($con);
?>
那么 SQL 查询会成为这样:SELECT * FROM users WHERE user='john' AND password='' OR ''='',这意味着任何用户无需输入合法的密码即可登陆;php配置中禁用register_globals;不要相信用户输入,必须是数字的地方用is_numeric()来判断一下,这样还有些弱点(16进制数据,科学计数法,有小数位等),最好用正则来处理;strip_tags()[清楚html标签,xml标签和php标签]和htmlspecialchars()[能将特殊字符转成html实体如‘<’,'>'等会转换成html实体(只有在源代码中可以看到,页面显示不变)]的使用;使用唯一的令牌防止用户想服务器远程提交表单
function preinject($sql_str) { //防止注入
$check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/', $sql_str);
if ($check) {
echo('非法字符串');
exit ();
} else {
return $sql_str;
}
}
#7.date('t',日期) 统计该月总天数
#8.ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0); // 通过set_time_limit(0)可以让程序运行没有最大时间限制
#9.在php框架里如果无法显示错误信息,可以用try{} catch(Exception $e){var_dump($e->getMessage());exit;}来得到报错信息
#10.匹配数字字母下滑线和横杠和汉字(utf8下) $regex = "/^[A-Za-z0-9_\-\x{4e00}-\x{9fa5}]{1,16}$/u";
#11.thinkphp框架由windows下迁到linux下,发现无法M()和D(),应该是数据库配置的问题。
#12.thinkphp调成重写模式后,出现无法加载模块,发现是在配置中的APP_GROUP_LIST没有包括该模块
#13.php上传文件报错信息:
其值为 0,没有错误发生,文件上传成功。
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
其值为 3,文件只有部分被上传。
其值为 4,没有文件被上传。
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
其值为 7,文件写入失败。PHP 5.1.0 引进。
#14.bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )
此函数将打开输出缓冲。当输出缓冲是活跃的时候,没有输出能从脚本送出(除http标头外),相反输出的内容被存储在内部缓冲区中。内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用ob_end_clean() 函数会静默丢弃掉缓冲区的内容
#15.thinkphp中rewrite模式:(a)httpd.conf中加载mod_rewrite.so模块;(b)allowoverride all;(c)url_module=>2;(d).htaccess文件
#16.用php进行http认证可以用 header() 函数来向客户端浏览器发送“Authentication Required”信息,使其弹出一个用户名/密码输入窗口。当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会加上预定义变量PHP_AUTH_USER,PHP_AUTH_PW 和 AUTH_TYPE 被再次调用,这三个变量分别被设定为用户名,密码和认证类型。
#17.用正则'/<img.*>/U'匹配不到img标签,查看源代码发现是html实体,用$str = html_entity_decode($str);处理后就可以了