php

#1.echo phpversion();//获取php版本 同PHP_VERSION;读取文件,可安全用于二进制文件fread();fread(file,filesize(file));//fread两个必填参数,文件和读取文件的最大字节数,其中file为fopen返回的资源;file()函数把整个文件读入一个数组中
#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_USERPHP_AUTH_PW 和 AUTH_TYPE 被再次调用,这三个变量分别被设定为用户名,密码和认证类型。

#17.用正则'/<img.*>/U'匹配不到img标签,查看源代码发现是html实体,用$str = html_entity_decode($str);处理后就可以了

#18.$match[$k] = preg_split('/(<img.*>)/isU',$v['body'],-1,PREG_SPLIT_DELIM_CAPTURE);   将字符串中的图片文字,区分开,组成数组。
#19.php输出生成excel时,长度超过16位的数字后面的几位显示0,在数字前添加引号也不可以,在输出的td标签上添加样式style="vnd.ms-excel.numberformat:@"后,将excel字段全变成文本型,就解决了
#20.获取今日零时的时间戳 strtotime(‘today’)  截取小数点后2位 Sprintf(‘%.2f’,$num);   将手机号部分数字用*替换Substr_replace($phone,’****’,3,4);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值