Warning:Cannot modify header information-headers already sent by..通常什么情况下php会报该警告信息
一般是在header、set_cookie以及session_start函数前面有输出(包括空格)的情况下,会报该警告信息
描述如下URL重写规则的用意
RewriteEngine on
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteBase/
RewriteRule./index.php[L]
分析:
如果REQUEST_FILENAME文件存在,就直接访问文件,不进行下面的rewrite规则,
如果REQUEST_FILENAME目录存在,就直接访问目录,不进行下面的rewrite规则,
RewriteRule./index.php[L]的意思是把所有的请求都给index.php处理
php系统函数库
mysql,gd,pdo,XML,zip,filesystem,mail 等
哪个函数能返回脚本里的任意行中调用的函数的名称。该函数同时还经常被用在调试中,用来判断错误是如何发生的
debug_print_backtrace()
php中WEB上传文件的原理是什么,如何限制上传文件的大小?
上传文件的表单使用post方式,并且要在form中添加 enctype='multipart/form-data'。
一般可以加上隐藏域:,位置在file域前面。
value的值是上传文件的客户端字节限制。可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦。
使用file文件域来选择要上传的文件,当点击提交按钮之后,文件会被上传到服务器中的临时目录,在脚本运行结束时会被销毁,所以应该在脚本结束之前,将其移动到服务器上的某个目录下,可以通过函数move_uploaded_file()来移动临时文件,要获取临时文件的信息,使用$_FILES。
限制上传文件大小的因素有:
客户端的隐藏域MAX_FILE_SIZE的数值(可以被绕开)。
服务器端的upload_max_filesize,post_max_size和memory_limit(php.ini文件设置)
自定义文件大小限制逻辑。即使服务器的限制是能自己决定,也会有需要个别考虑的情况。所以这个限制方式经常是必要的
如果需要原样输出用户输入的内容,在数据入库前,要用哪个函数处理?
htmlspecialchars
htmlentities
对变量加密的函数
md5(str);
sha1(str);
编写函数取得上一月的最后一天
date_default_timezone_set('PRC');
/**
* 获取给定月份的上一月最后一天
*@param$date string 给定日期
*@returnstring 上一月最后一天
*/
functionget_last_month_last_day($date =''){
if ($date != '') {
$time = strtotime($date);
} else {
$time = time();
}
$day = date('j',$time);//获取该日期是当前月的第几天 return date('Y-m-d',strtotime("-{$day} days",$time));
}
// 测试
echo get_last_month_last_day();
echo "
";
echo get_last_month_last_day("2013-3-21");
PHP中判断一个字符串是否合法? (日期模式:2007-03-13 13:13:13)
functioncheckDateTime($data){
if (date('Y-m-d H:i:s',strtotime($data)) == $data) {
return true;
} else {
return false;
}
}
$data = '2015-06-20 13:35:42';
var_dump(checkDateTime($data));//bool(true)
PHP如何实现页面跳转
header("Content-type: text/html; charset=utf-8");//编码
header("refresh:3;url=https://m.yueloo.com.cn/");//跳转1
header("Location:https://m.yueloo.com.cn/");//跳转2
echo "";//跳转3
mysql_fetch_row()、mysql_fetch_array()、mysql_fetch_assoc的分别
mysql_fetch_row()把数据库的一列储存在一个以零为基数的数组中,第一栏在数组的索引0,第二栏在索引1,依此类推
mysql_fetch_assoc()把数据库的一列储存在一个关联数组中,数组的索引就是字段名称,例如我的数据库查询送回“first_name”、“last_name”、“email”三个字段,数组的索引便是“first_name”、“last_name”和“email”
mysql_fetch_array()可以同时送回mysql_fetch_row()和mysql_fetch_assoc()的值
写一个函数,算出两个文件的相对路径
论坛中无限分类的实现原理
1. 创建类别表
CREATE TABLE category(
cat_id smallint unsigned not null auto_increment primary key comment'类别ID',
cat_name VARCHAR(30)NOT NULL DEFAULT''COMMENT'类别名称',
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT'类别父ID')engine=MyISAM charset=utf8;
2. 递归遍历,实现无限分类
function tree($arr,$pid=0,$level=0){
static $list = array();
foreach ($arr as $v) {
//如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点 if ($v['parent_id'] == $pid) {
$v['level'] = $level;
$list[] = $v;
tree($arr,$v['cat_id'],$level+1);
}
}
return $list;
}
写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
function my_scandir($dir){
$files = array();
if(is_dir($dir)){
if ($handle = opendir($dir)) {
while (($file = readdir($handle))!== false) {
if ($file!="." && $file!="..") {
if (is_dir($dir."/".$file)) {
$files[$file] = my_scandir($dir."/".$file);
} else {
$files[] = $dir."/".$file;
}
}
}
closedir($handle);
}
}
return $files;
}
$data = my_scandir('/www/qian/4-2');
var_dump($data);