学习PHP所有知识点

=============html====================
1、 标签 以<>包裹起来的特定字符
双边、单边标签
属性 修饰标签
元素 一个完整的标签叫元素(标签名 属性名 属性值)

标签特性 容错性强、已预定义、不区分大小写、注意格式、成对出现


全局架构标签 <body>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>

</body>
</body>

2、body的属性
text bgcolor leftmargin topmargin link alink vlink


3、文本标签
<b></b> <strong></strong> <i></i> <em></em> <cite></cite>
<u></u> <s></s> <sub></sub> <sup></sup>
<font></font>
face size color 


4、 <br /> <nobr></nobr> <p></p>
<hr />
width size color
<pre></pre>
<hn></hn>
<marquee></marquee>
loop scrollamount direction
right left


5、 &nbsp; &lt; &gt; &amp; &quot; &cent; &pound; &yen;
&euro; &copy; &reg; &trade &times; &divide;

6、 <ol>
<li></li>
</ol>
type: a A I i 1
start 
reversed

<ul>
<li></li>
</ul>
type: square circle disc

<dl>
<dt></dt>
<dd></dd>
</dl>


7、 <!--注释-->

8、 统一资源定位符
http://www.baidu.com:80?index.html?user=lili&sex=1
协议:http https ftp smtp
地址:www.baidu.com
端口:80
文件:index.html
参数:参数=参数值


9、<a></a>
href 跳转的链接地址
target 链接打开的方式
self
blank
锚点 <a href="#maodian" ></a>
<a name="maodain"></a>
发邮件 <a href="mailto:youxinag@123.com"></a>
打电话 <a href="tel:电话号码"></a>

10、图片
img 
width 
height
src 相对路径 . .. /
绝对路径 磁盘绝对 c:
站点绝对 /
网络绝对

11、audio
src
controls
loop
autoplay
video
src
controls
loop
autoplay
width
height


12、图像地图
<img src="" usemap="shishi">
<map name="shishi">
<area shape="rect" coords="对角的坐标" href=""></area>
<area shape="circle" coords="圆心,半径" href=""></area>
</map>

13、<table></table>
width height border bordercolor bgcolor cellspacing cellpadding
align
left center right
<caption></caption>
<tr></tr>
bgcolor
align 
valign
top middle bottom
<th></th>
<td></td>
colspan
rowspan
width
height
align
valign


14、通过target name进行联动
<frameset>
<frame></frame>
scrolling
yes  auto
src
</frameset>
rows
cols
border
frameborder
noresize

<iframe>
<frame></frame>
</iframe>

15、表单
<form action="" method="" target="" enctype="multipart/form-data"></form>
<input type="" name="" value="" placeholder="" readonly disabled required autofocus maxlength size>

16、样式
行内 <div style=""></div>
内联 <style></style>
外联 <link rel="stylesheet" type="text/css" href=""></link>

17、通用选择器*
标签选择器 标签名
class选择器
id选择器
组合选择器
层级选择器
伪类选择器
属性选择器input [type="类型"]

18、px % em rem vw vh

19、font
font-size
font=style
font-weight
font-family
20、text
text-indent 文本缩进
text-align
text-decoration
underline
overline
line-through
none
text-shadow x y 阴影模糊度 阴影部分颜色
text-overflow 文本超出的显示方式
clip
ellipsis【条件】 overflow:hidden white-space:nowrap width
line-height
vertical-align
top
middle
bottom

21、background-color
background-image
background-attachment
fixed 
scroll
background-repeat
background-position
left right top bottom

22、列表
list-style
list-style-type
none circle square
list-style-image
list-style-position
inside
outside

23、定位
position
relative absolute fixed top left right bottom z-index


24、布局
float left right
clear both left right
display
none 隐藏元素
inline-block 使块元素变成行内元素
visibility hidden
overflow hidden scroll auto

25、border
border-top
border-left
border-right
border-bottom
border-width
border-color
border-style
solid 
dashed
border-radius
box-shadow

26、header content/container footer sidebar nav column
wrapper left right center loginbar logo
raffle banner main main hot news
download subnav menu submenu search friendlink
footer copyright scroll content tab list
tips title joinus guild service register
status vote partner

master.css module.css base.css layout.css themes.css
columns.css font.css forms.css mend.css print.css

===================PHP========================
访问:通过输入localhost来访问本地服务器 同样的页可以输入127.0.0.1来访问
localhost 主机名
127.0.0.1 本地ip
配置:
1、www/index.php 修改如下:
$projectContents .= '<li><a href="';
if($suppress_localhost)
$projectContents .= 'http://localhost/'.$file.$UrlPort.'/"';
else
$projectContents .= 'http://localhost'.$UrlPort.'/'.$file.'/"';
$projectContents .= '>'.$file.'</a></li>';
2、看一下apache_moudles
点击小绿->Apache->apache_moudles->autoindex_moudlies 这个要带上√
局域网访问:
防火墙一定要关掉,他太危险了
修改配置文件修改httpd-vhosts.conf
加上 require all granted


1、 标准 <?php  ?>
短标记 <? ?>
<?=$a ?>


2、变量的定义
1、以$开头,不能以数字开头,字母数字下划线组成
2、不能使用特殊字符,不能使用中文
3、变量名 = 变量值
4、变量名区分大小写
5、采用驼峰命名法
6、命名时最好见名知义

3、注释 // # /**/


4、 数据类型
integer
float
boolean
string
单引号
双引号
定义符
heredoc等价于双引号
$str = <<<STR
填写字符串中的内容
STR;
nowdoc等价于单引号
$str = <<<'STR'
填写字符串中的内容
STR;
混合 array object
特殊 resource null

5、单双引号的区别
1、双引号可以解析变量,单引号不行
2、双引号可以解析转义字符,单引号不可以,但单引号可以解析\',\\
3、单双引号不能自己套自己,需要嵌套使用
4、单引号效率高,能使用单引号就是用单引号
5、双引号中插入单引号,单引号中插入这个变量,这个变量会被解析

6、echo print print_r var_dump的区别
echo 用户输出变量或者是字符串
print 同echo
print_r 除了变量变量、字符串还可以输出数组
var_dump 任何类型都可以,还可以得到详细信息,跟print_r输出数组的形式不一样

7、强制类型转换
1、采用函数 intval floatval boolval strval
2、直接在值前面加上括号,括号里面写上要强转的类型
$a = (int)23.22
3、settype(变量,'要强转的类型,注意带上单引号')
settype($a,'int')
[*] settype($a,null) 等价于撤销某个变量
【注】前面两种,都不会改变变量本身,第三种直接改变变量本身

8、其他类型转换布尔型的注意事项
1、整型的0为假,其他整型值全为真
2、浮点的0.0为假,小数点后只要有一个非0的数就为真
3、空字符串为假,只要里面有一个空格都为真
4、字符串的0也为假,其他值都为真
5、空字符串也为假,只要里面有一个值就为真
6、空也为假
7、未声明成功的资源也为假

9、 常量:在运行过程中值不能被改变的叫做常量
定义常量 define('常量名,注意单引号,如果常量值是需要单引号的类型也要带上单引号',常量值)
【*】1、常量值只能为标量(integer float boolean string)
2、常量名大写(小写也可以,不推荐)
3、常量名需要加上引号
4、调用常量时,常量必须在引号外面
5、常量名只用字母和下划线
6、常量全局都有效

10、三元运算符 表达式?真:假


11、顺序结构 (当型、直到型)
分支结构 一定会走其中一种,而且只要满足其中一种就会跳出,不会去判断后面的条件是否会成立
单项分支 if()
{
}

双项分支 if()
{
}
else
{
}

多向项分支 if()
{
}
else if()
{
}
else
{
}

嵌套分支 if()
{
if()
{
}
else
{
}
}

switch(表达式)
{
case 值1: 语句块1;break;
case 值2: 语句块2;break;
default: 默认语句块;break;
}
【注】 if else 通常用于区间判定
switch case 用于具体的值判定

循环结构
1、while(表达式)
{
循环体;
}
2、do while
do
{
循环体
}while(表达式);
3、for(表达式1;表达式2(判断条件);表达式3(对值进行修改))
{
循环体;
}
【注】 break: 用来结束循环结构或者switch case
continue: 结束此次循环,进入下一次循环

12、函数的定义和说明
function 函数名(参数)
{
函数体;
}
[*] 函数名的命名 以function关键字开头
函数名不区分大小写
其他跟变量名一样

【注】 1、函数名后面紧跟小括号然后回车大括号,大括号里面是函数体
2、函数要调用才会执行,调用方式 函数名();
3、定义函数时,小括号中写的是形参
4、调用函数时,小括号中写的是实参
5、参数可以有多个,也可以没有
6、参数可以给默认值,给默认值的要放在参数的最后
7、函数调用的时候不分先后顺序,可以先调用再定义
8、函数不能重复定义
9、函数可以有返回值,返回值用return,一旦遇到return,后面的代码将不在执行

13、变量的作用域
外部变量 函数外部定义的就叫做外部变量
【*】 函数内部不能直接使用外部变量,如果实在要使用可以通过两种方式
1、在函数内部用global修饰要是用的外部变量
2、使用 GLOBALS
3、可以通过函数的参数传进来
内部变量 函数内部定义的就叫做内部变量
【*】 函数外部也不可以直接使用内部变量,可以用过return返回出去

14、静态变量
1、使用static关键字声明
2、static记录变量的状态
【*】1、程序加载的时候就分配了存储空间,函数调用后也不会释放
2、延长了内部变量的生命周期


15、内部函数:在函数内再定义一个函数
【*】有内部函数的函数只能调用一次,否则函数会被重复定义
解决方法:1、使用static记录状态,保证内部函数值只声明一次
2、使用函数function_exists()判断函数是否存在
3、通过is_callable判断函数是否可被调用
4、调用内部函数时必须在内部函数定义之后调用

16、变量函数 变量可以保存一个变量的名字也可以保存一个函数的名字,通过变量的方式去调用函数


17、回调函数,是变量函数的一种应用
all($a,$b,'add');
function add($a,$b)
{
}
function sub($a,$b)
{
}
function all($a,$b,$op)
{
}

18、匿名函数 没有名字的函数
$a = 100;
$test = function() use($a)
{
echo $a;
};
$test();
1、匿名函数赋值给变量的时候结尾要加分号
2、匿名函数use是绑定外部变量不是传参(不要use也可以)
3、只用一次某种函数时,可以封装成匿名函数


19、引用传参
【*】1、通过引用传承的方式可以通过函数内部改变外部变量的值
2、使用引用传参时调用处必须传变量 &$a写在形参的位置

20、递归函数
21、神奇的...可用来传可变参数


22、include require的区别
当我们包含文件失败不会影响下面的代码执行时用include,报警告错误
当我们包含文件失败会影响下面的代码执行时用require,报致命错误

include_once和require_once的区别
同上

include和include_once的区别
include_once包含文件时会判断是否已经包含过这个文件,如果包含过将不会再包含,保证我们的文件只被包含过一次
require和require_once的区别
同上

23、数组的声明方式
1、使用[] $arr = [1,2,3];如果元素不指定下标,则下标为前面最大非负的下标加1
2、通过array() array(1,2,3)
3、直接赋值,还可以用来添加值 $a[] = 1;
【注】 数组的下标不可以重复,重复的话会把前面的值覆盖掉

24、元素:数组的基本组成单位
键: 索引、下标
值: 存放的有效数据
键值对: 键 =>

25、数组分类
按类型:索引数组 关联数组 关联索引数组
按维度 一维数组 二维数组 多维数组

26、遍历数组
1、for循环遍历(只能遍历下标连续的索引数组)
2、foreach (专门用来遍历数组和对象)
3、list each while
list 把数组中的值赋给变量(只能用于索引数组),不需要提前的值可以省略变量名,但是一定要占位
each 返回数组当中的当前键值对,并且将指针向后移动一位
list(变量名,,变量名,变量名) = each(数组) 这样只能取出一组数据,所以配合while使用

错误级别
notice 注意 不会影响下面代码的执行
warning 警告 对下面代码有一定影响
error 错误 会终止代码执行
trigger_error('错误信息', 级别);
手动产生一个错误 要注意必须传E_USER系列的常量
E_USER_NOTICE E_USER_WARNING E_USER_ERROR
display_errors
修改配置文件 php.ini 可以调控是否显示错误
error_reporting
配置文件php.ini:
error_reporting = E_ALL & ~ E_NOTICE
error_reporting = E_ALL ^ E_NOTICE
显示除了notice之外的所有错误
error_reporting = E_NOTICE
只显示notice的错误
函数
error_reporting(0);
关闭所有错误
error_reporting(-1);
报告所有错误
error_reporting(E_NOTICE);
只报告notice错误
set_error_handler()
指定错误处理函数
参数:回调函数
log_errors是否使用错误日志
在php.ini中搜索log_errors 
error_log指定错误日志位置
在php.ini中搜索error_log 
如果开启了error_log = syslog则放到系统日志里
计算机管理事件查看器Windows日志应用程序
 
28、正则
正则的组成:
1、定界符:正则表达式的边界
a、定界符不能使用0-9 A-Z a-z \ 空格
b、通常使用'/'作为正则的定界符
2、原子:是正则表达式的最小单位
\d: 0-9
\D: 除了0-9
\w: 字 包括0-9 a-z A-Z _
\W: 除了0-9 a-z A-Z _
\s: 空白字符 空格 \n \t \r
\S:  除了空白字符
\b: 词边界
\B: 非词边界
[]: 原子列表
[^]: 取反 写在原子列表最前面是取反的意思
.: 除了\n以外的任意字符
3、元字符:是用来修饰原子的,不能单独存在
*:任意次
+:至少一次
?:可有可无 最多一次
{}:指定次数
{10} 指定10次
{3,5} 指定3,5次
{3,} 至少3次
{0,3} 0-3次
^:指定原子开头
\A:同上
$:以指定的原子结束
\Z:同上
|:或
():用来限制优先级,括号里表示一个整体,子模式
4、模式修正符:用来给正则表达式修饰,限制,写在正则表达式之后
i:忽略大小写
m:多行匹配
s:能让.匹配到\n
x:忽略正则表达式当中的空格
A:作用与\A和^一样
U:对正则贪婪模式取反
5、组合拳
.+?:取消贪婪匹配,只匹配一个
.*?:取消贪婪匹配,匹配出来0个字符

【注
匹配的字符是正则里的特殊字符 需要转义\
 2、当需要匹配到\需要前面3-4个\

=================mysql=========================
数据库连接
mysql -hlocalhost -uroot -p密码
提示不是内部或外部命令的解决办法
1、进入到mysql的bin目录在执行连接命令
2、 找到wamp64->bin->mysql->mysql5.7.14->bin然后复制路径
右击我的电脑->属性->高级系统设置->环境变量->系统变量->path->编辑
在最后加上一个英文半角的分号然后将路径粘贴到这 一路确定回来
重启cmd
说明:
1、如果连接的时本地数据库的话 -h可以省略
2、-p后面接密码 建议不直接写在后面因为是明文 输入mysql -uroot -p 后回车然后输入密码
3、如果见到msyql> 就说名进入了mysql数据库了
4、每条语句结尾要加分号
5、如果不小心输入了一个' 造成了心理负担 就再输入一个' 然后结束他

退出命令:exit quit \q
清除本次输入操作: \c ctrl + c


常用命令:
show databases; 查看当前数据库服务器下所有数据库
create database test; 创建数据库test
create database 
use test; 使用数据库test
show tables; 查看当前数据库下的所有数据表
drop database test; 删除数据库test
create table user(username varchar(20), password char(32));
创建一个user表 字段为 username  password 
desc user; 查看user表结构
drop table user; 删除数据表user
if not exists 用于创建数据库和数据表时判断是否不存在 及时存在也不会报错
create database if not exists test;
if exists 用于删除数据库和数据表时判断是否存在 及时不存在也不会报错
drop database if exists test;
show create database test; 查看建库语句
show create table user; 查看建表语句


engine=innodb default charset=utf8 加在建表语句之后 设置表的存储引擎和字符集
统一设置存储引擎和字符集
修改 my.ini 
1、default-storage-engine=MYISAM
2、在最后添加character_set_server=utf8




添加字段 alter table user add age int(10);
添加字段控制位置 alter table user add age int(10) after name;
添加字段控制位置 alter table user add age int(10) first;
修改字段类型 alter table user modify age char(20);
修改字段名字 alter table user change age height int(10);
【注】修改字段时 也可以控制字段位置 跟添加时写法一样
删除字段 alter table user drop dongce;
修改表名 alter table user rename xiake;


1、整型后面小阔里的数字不是代表的存储空间大小是用来控制显示位数的
2、如果说你添加的位数超过了设置的 也不会被截断
3、基本上我们在设置int的时候都是不加后面小阔号限制
4、浮点型float(4,2) 代表我们浮点总位数是4小数点后不能超过2 小数点前不能超过4-2
5、如果浮点型小数点后超过限定会被咔嚓掉




text 字符存储
set 集合 在插入值的时候可以一次性插入多个指定的值
enum 枚举 在插入值的时候只能一次性插入一个指定的值




当timestamp的默认值设置为current_timestamp时可以自动获取当前时间插入数据表,不可被修改(是指修改没意义)
默认为:timestamp default current_timestamp



unsigned 无符号 (常用于id)
zerofill 前导0填充
auto_increment 自增 (常用于id)
default 默认值
not null 非空
primary key 主键索引(非空并唯一、常用于id)
unique 唯一索引(可以为空但是唯一的)
index 常规索引
fulltext 全文索引




添加索引
1、创建时添加
 mysql> create table teacher(
-> id int primary key,
-> name char(20) unique
-> );
2、建表后添加
alter table 表名 add 索引名(字段)

删除索引(了解)
drop index 索引字段名 on 表名
【注意】 不要用这种方法删除主键索引,如果你想删除的话看下面
alter table 表名 drop primary key (前提是没有auto_increment)
去掉auto_incremnt 用modify修改类型或change修改名称


1、insert into 表名 values(值1,值2,...,值n);
2、insert into 表名(字段1,字段2,...字段n) vlaues(值1,值2,...,值n);
3、insert into 表名(字段1,字段2,.字段n) vlaues(值1,值2..,值n),.,(值1,值2,值n);


delete from 表名 where 条件


update 表名 set 字段1 = 值1, ..... ,字段n = 值n where 条件




> < <= >= !=/<> =
or and
between and
in/not in
like


order by desc:倒序 asc:正序(默认)


limit


sum count max min avg(平均值)


group by
查询star表中的数据 并且按照name分组
select * from star group by name;
having 分组过滤
查询star表中的数据 并且按照name分组 显示出id>3的
select * from star group by name having id > 3;
【注】group by 之后不要用where




多表联合查询
内连接
隐式内连接
select goods.name, user.username from user,goods where goods.gid = user.uid;
显示内连接
select goods.name,user.username from user inner join goods on goods.gid = user.uid;
【注】有join关键字出现 后面接的条件必须是on inner 可以省略
外链接
左连接
select * from user left join goods on goods.gid = user.uid;
右连接
select * from user right join goods on goods.gid = user.uid;
说明
1、左连接 左边的表叫做主表 右边的表叫副表
2、右连接 右边的表叫做主表 左边的表叫副表
3、主表内容会全部显示,副表显示符合条件的 空位用null填充


1、union 比 union all 多进行了一次去重
2、数据联合时左右联合的字段必须要对应


十二、清空表数据
truncate table 表名
清空user表的数据,并且让自增的id从1开始自增
与delete from 表名的区别
delete  是清空数据然后id是从记录的开始自增




创建用户
创建一个叫xiaoming的用户 密码是123123 从本机登录
create user 'xiaoming'@'localhost' identified by '123123';
删除用户
把上面刚给一个叫xiaoming用户干掉
drop user 'xiaoming'@'localhost';
授予权限
给一个叫做xiaoming的用户权限 权限是对 zhatian数据库下的所有表 有全部权限
grant all on zhatian.* to 'xiaoming'@'localhost';
剥夺权限
把上面刚给一个叫xiaoming用户的权限收回来
revoke all on zhatian.* from 'xiaoming'@'localhost';




导入导出数据库
1、通过phpmyadmin
2、命令行
导出
导出数据库
mysqldump -uroot -p 数据库名 > C:\123.sql
导出表
mysqldump -uroot -p 数据库名 表名 > C:\123.sql
导入
mysql -uroot -p sss < C:\123.sql
说明:
1、导入导出都要在非登录咋状态下完成
2、带入的时候要有一个空的数据库


修改密码
1、输入命令mysqladmin -uroot -p password
2、按回车时候输入原密码 如果原密码为空 直接回车
3、输入新密码
4、确认新密码
5、执行 flush privileges;
说明:
修改密码要在非登录状态下完成


1、set autocommit = 0  或者 begin
2、执行sql
3、判断是否同意执行
4、如果同意 执行 commit  不同意执行 rollback(回滚)
说明:
1、使用事务的表存储引擎必须是InnoDB


连接数据库的步骤:
第一步:连接数据库
mysqli_connect('localhost', 'root', '');
参数: 1、主机名  localhost
2、用户名
3、密码
返回值:成功返回连接对象 不成功返回false
第二步:判断连接是否成功
mysqli_connect_error([$link]);
mysqli_connect_errno([$link]);
返回值:连接成功返回 0 连接失败返回相应的错误号和错误信息
第三步:选择数据库 判断是否成功
mysqli_select_db($link, 'zhatian');
参数: 1、数据库连接对象
2、数据库名
返回值:选择成功返回true  失败返回false
第四步:设置字符集
mysqli_set_charset($link, 'utf8');
参数: 1、数据库连接对象
2、字符集名字
第五步:准备sql语句
第六步:执行sql语句
mysqli_query($link, $sql);
参数: 1、数据库连接对象
2、sql语句
返回值:查询的时候唱功返回结果集对象 失败返回 false
增删改时成功返回true 失败返回false
第七步:解析结果集
mysqli_fecth_assoc($res); 将结果集对象解析成关联数组
mysqli_fetch_row($res); 将结果集对象解析成索引数组
mysqli_fetch_array($res, MYSQLI_ASSOC); 将结果集对象解析成关联索引数组
参数: 1、结果集对象
2、解析类型 MYSQLI_ASSOC MYSQLI_NUM MYSQLI_BOTH
mysqli_insert_id($link); 返回插入上一条数据的id
参数: 数据库连接对象
mysqli_affected_rows($link); 返回数据库受影响的行数 可用于增删改查
参数: 数据库连接对象
mysqli_num_rows($res); 返回数据库受影响的行数 只用于用于查询
参数: 结果集对象
第八步:关闭数据库
mysqli_close($link);
参数: 数据库连接对象



COOKIE
1、存值
2、销毁
setcookie   发送一个cookie
参数:  1、cookie名字
2、值
3、过期时间
4、作用域    /
setcookie('liuwei', '女', time()+100);
发送一个cookie 名字是liuwei值是女 过期时间为 100s 后
setcookie('liuwei','',time()-1);
清空cookie
特性:  1、保存在本地
2、相对不安全


SESSION
1、开启session
session_start();
2、存值
$_SESSION['liuwei'] = '女';_
3、销毁
单个销毁
unset($_SESSION['zouyu']);
全部销毁
session_destroy();
特性:
1、保存在服务器
2、相对安全
3、在我们存储session的时候回生成一个唯一的SESSID 保存在本地cookie中  以便于下次我们在访问服务器的时候能找到我们的session信息
session_name()  获取session的名字 session.name
session_id()    获取生成的唯一的session.id
【注】以上两个函数是获存到cookie里的session的名字和值


面试题
1、session和cookie的区别
session保存在服务器 cookie保存在本地 session相对于cookie来说安全一点
session对服务器压力大 cookie对服务器压力小一点
session是依赖于cookie的 
2、禁掉cookie session还能用吗
不能用 因为session是依赖于cookie的
如果要想用的话 需要通过地址栏吧PHPSESSID带过去
想用的话就按我说的做
1、手动拼接
修改php.ini   session.use_only_cookies = 0
就可以手动拼接了
2、自动拼接
修改php.ini   session.use_only_cookies = 0
修改php.ini   session.use_trans_sid = 1


图像处理的步骤:
1、第一剑:创建画布
2、第二剑:准备颜色
3、第三剑:画图  用图像处理函数画图
4、第四剑:告知浏览器MIME类型
header("content-type:image/png");
5、第五剑:输出/保存图像
6、第六剑:关闭资源




文件上传下载
上传:
第一拳 准备form表单
第二拳 判断上传文件的错误号
第三拳 判断上传文件是否超过指定的大小
第四拳 判断文件的mime类型和后缀是否符合要求
第五拳 判断是否是上传文件
第六拳 创建保存路径
第七拳 将文件保存至指定目录


文件上传的注意事项
配置文件 php.ini
file_uploads = On   文件上传开关
upload_tmp_dir ="c:/wamp64/tmp"     上传文件临时保存目录
upload_max_filesize = 2M    允许上传的最大size
max_file_uploads = 20       允许同时上传的最大count
表单中
1、提交方式必须是post
2、form中要加上  enctype="multipart/form-data"
3、input类型 是file
4、<input type="hidden" name="MAX_FILE_SIZE" value='500'>
这句话必须放在 input type=file  之前


多文件上传
var_dump($_FILES);
for ($i = 0; $i < count($_FILES['touxiang']['name']); $i++) {
$name = $_FILES['touxiang']['name'][$i];
$suffix = pathinfo($name)['extension'];
$path = './upload/';
$filepath = $path . uniqid() . $i . '.' . $suffix;
echo $filepath . '<br />';
if (move_uploaded_file($_FILES['touxiang']['tmp_name'][$i], $filepath)) {
echo '成了';
}
}


文件下载
1、告知文件类型
png     header('Content-type: image/png');
xls     header('Content-type: application/x-excel');
2、告知附件
header('Content-Disposition: attachment; filename="123.xls"');
3、告知文件大小 (可选)
header('content-length: filesize(123.xls)');
4、输出文件  readfile


mb  系列函数    多字节处理函数
iconv   iconv('GB2312', 'utf', $str);
http 状态码
http://www.runoob.com/http/http-status-codes.html


富文本编辑器使用
<script type="text/javascript" src='ckeditor/ckeditor.js'></script>
<textarea name="content" class="ckeditor" id="textarea"></textarea>


link 引入小图标 <link rel="icon" href="lbb.jpg" >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值