mirror of
https://gitee.com/tawords/tawords-docs
synced 2025-01-11 11:58:14 +08:00
553 lines
18 KiB
Markdown
553 lines
18 KiB
Markdown
|
`$a ?? 0` 等同于 `isset($a) ? $a : 0`。
|
|||
|
`$a ?: 0` 等同于 `$a ? $a : 0`。
|
|||
|
`empty`:判断一个变量是否为空(`null` `false` `00` `0` `'0'`这类,都会返回`true`)。
|
|||
|
`isset`:判断一个变量是否设置(值为`false` `00` `0` `'0'`这类,也会返回`true`)。
|
|||
|
|
|||
|
```php
|
|||
|
// session_status()
|
|||
|
// https://www.php.net/manual/zh/function.session-status.php
|
|||
|
// 返回值
|
|||
|
// PHP_SESSION_DISABLED 会话是被禁用的。
|
|||
|
// PHP_SESSION_NONE 会话是启用的,但不存在当前会话。
|
|||
|
// PHP_SESSION_ACTIVE 会话是启用的,而且存在当前会话。
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
mysql.php参考
|
|||
|
```php
|
|||
|
// 参考文章:https://www.cnblogs.com/liujunhang/p/10926632.html
|
|||
|
// PHP 官网 关于MySQL的介绍:https://www.php.net/manual/zh/set.mysqlinfo.php
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
mysql
|
|||
|
```
|
|||
|
// 常用sql语句总结
|
|||
|
// 在上面的代码中,我们尝试了通过mysqli对mysql数据进行的增删改查操作,其中较为核心的是,sql语句的使用。
|
|||
|
// 下面我们来说一下常用的sql语句语法:
|
|||
|
|
|||
|
// 创建数据库
|
|||
|
// create database 数据库名 default character set = 'utf8';
|
|||
|
// 创建数据表
|
|||
|
// create table 数据表名 (
|
|||
|
// -- 下面是表中的一些字段
|
|||
|
// id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|||
|
// firstname VARCHAR(30) NOT NULL,
|
|||
|
// lastname VARCHAR(30) NOT NULL,
|
|||
|
// email VARCHAR(50),
|
|||
|
// reg_date TIMESTAMP
|
|||
|
// )
|
|||
|
// 插入数据
|
|||
|
// insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)
|
|||
|
// 读取数据
|
|||
|
// select column_name(s) from table_name
|
|||
|
// 如果传入一个*,则表示搜索所有的数据:
|
|||
|
|
|||
|
// select * from table_name
|
|||
|
// 也可以在后面加入指定条件
|
|||
|
|
|||
|
// select * from table_name where 条件
|
|||
|
// 修改
|
|||
|
// update table_name
|
|||
|
// set column1=value, column2=value2,...
|
|||
|
// where some_column=some_value
|
|||
|
|
|||
|
// 删除数据
|
|||
|
// delete from table_name
|
|||
|
// where some_column = some_value
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
会话相关
|
|||
|
```php
|
|||
|
// // 初始化会话。
|
|||
|
// // 如果要使用会话,别忘了现在就调用:
|
|||
|
// session_start();
|
|||
|
|
|||
|
// // 重置会话中的所有变量
|
|||
|
// $_SESSION = array();
|
|||
|
|
|||
|
// // 如果要清理的更彻底,那么同时删除会话 cookie
|
|||
|
// // 注意:这样不但销毁了会话中的数据,还同时销毁了会话本身
|
|||
|
// if (ini_get("session.use_cookies")) {
|
|||
|
// $params = session_get_cookie_params();
|
|||
|
// setcookie(session_name(),"", -1,
|
|||
|
// $params["path"], $params["domain"],
|
|||
|
// $params["secure"], $params["httponly"]
|
|||
|
// );
|
|||
|
// }
|
|||
|
|
|||
|
// // 最后,销毁会话
|
|||
|
// session_destroy();
|
|||
|
|
|||
|
------------------------------------------------------
|
|||
|
|
|||
|
// //开启 Session
|
|||
|
// session_start();
|
|||
|
// // 删除所有 Session 变量
|
|||
|
// $_SESSION = array();
|
|||
|
// //判断 cookie 中是否保存 Session ID
|
|||
|
// if(isset($_COOKIE[session_name()])){
|
|||
|
// setcookie(session_name(),'',time()-3600, '/');
|
|||
|
// }
|
|||
|
// //彻底销毁 Session
|
|||
|
// session_destroy();
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```
|
|||
|
//SQL join 用于把来自两个或多个表的行结合起来。
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
https://zhidao.baidu.com/question/1835987585872639700.html
|
|||
|
SQL语句中AS的意思是:别名。
|
|||
|
|
|||
|
AS用处:
|
|||
|
query时
|
|||
|
|
|||
|
用来重新指定返回的column名字。
|
|||
|
|
|||
|
示例
|
|||
|
|
|||
|
一个table有个column叫 id,query是select id from table1
|
|||
|
|
|||
|
如果不想叫id,就可重新命名。
|
|||
|
|
|||
|
如叫 systemID,可这样写:select id as systemId from table1。
|
|||
|
|
|||
|
create table 或 procedure 时
|
|||
|
|
|||
|
as 是个关键字。
|
|||
|
|
|||
|
示例
|
|||
|
|
|||
|
create table test as select * from table1
|
|||
|
|
|||
|
这时会create 一个table test,完全copy table table1里的全部数据。
|
|||
|
|
|||
|
create procdure name as (is)
|
|||
|
|
|||
|
begin
|
|||
|
|
|||
|
end;这时as和is可以互换。
|
|||
|
*/
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
mysql-connect(full).php.bak
|
|||
|
```php
|
|||
|
<?php
|
|||
|
// 参考文章:https://www.cnblogs.com/liujunhang/p/10926632.html
|
|||
|
// PHP 官网 关于MySQL的介绍:https://www.php.net/manual/zh/set.mysqlinfo.php
|
|||
|
|
|||
|
// 当前页:https://only4.work/recite-words/component/mysql-connect.php
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 连接数据库 ***************************************************
|
|||
|
|
|||
|
// php 连接Mysql
|
|||
|
// 通过mysqli
|
|||
|
|
|||
|
// 采用面向对象的写法来完成数据库的连接
|
|||
|
// 设置基础数据库信息
|
|||
|
require_once "../config.php";
|
|||
|
|
|||
|
// 创建连接
|
|||
|
$conn = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database);
|
|||
|
|
|||
|
// 如果存储数据的时候出现乱码,那么可以使用下面的代码来解决:
|
|||
|
mysqli_set_charset($conn,'utf8'); // 解决乱码问题
|
|||
|
|
|||
|
// 检测连接是否成功
|
|||
|
if($conn->connect_error){
|
|||
|
die("连接失败,错误:" . $conn->connect_error ."<br />");
|
|||
|
}
|
|||
|
|
|||
|
// 否则连接成功
|
|||
|
echo "数据库连接成功!<br />";
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 创建数据库 ***************************************************
|
|||
|
|
|||
|
// /*
|
|||
|
// * 通过mysqli 创建数据库 创建连接语句:$conn = new mysqli($mysql_server_name, $mysql_username, $mysql_password);
|
|||
|
// */
|
|||
|
// // 设置sql语句
|
|||
|
// $sql = "create database stu_01 default character set = 'utf8' ";
|
|||
|
// // 发送sql语句 并且验证是否创建成功
|
|||
|
// if($conn->query($sql) === TRUE){
|
|||
|
// echo "数据库创建成功.";
|
|||
|
// }else {
|
|||
|
// echo "数据库创建失败 ,错误信息为:" . $conn->error; // 如果失败输出错误信息
|
|||
|
// }
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 创建数据表 ***************************************************
|
|||
|
|
|||
|
// // 使用sql 创建数据表
|
|||
|
// $sql = "create table stu_info(
|
|||
|
// id int(6) UNSIGNED auto_increment primary key,
|
|||
|
// firstname varchar(30) not null,
|
|||
|
// lastname varchar(30) not null,
|
|||
|
// email varchar(50),
|
|||
|
// reg_date timestamp
|
|||
|
// )";
|
|||
|
|
|||
|
// if($conn->query($sql) === TRUE){
|
|||
|
// echo "数据表创建成功。" ."<br />";
|
|||
|
// }else {
|
|||
|
// echo "数据表创建失败,错误信息:" . $conn->error ."<br />";
|
|||
|
// }
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 向数据表中插入信息 ***************************************************
|
|||
|
|
|||
|
// // 设置插入数据的sql语句
|
|||
|
// $sql = "insert into stu_info(firstname,lastname,email) values('张三','张小三','zhangsan@qq.com')";
|
|||
|
|
|||
|
// // 发送sql 语句
|
|||
|
// if($conn->query($sql) === TRUE){
|
|||
|
// echo "新记录添加成功!"."<br />";
|
|||
|
// }else {
|
|||
|
// echo "新记录添加失败,错误信息:" . $conn->error ."<br />";
|
|||
|
// }
|
|||
|
|
|||
|
|
|||
|
// // 下面开始插入多条数据
|
|||
|
|
|||
|
// $sql = "insert into stu_info(firstname,lastname,email) values('张三丰','张君宝','sanfeng@qq.com');";
|
|||
|
// // 使用.= 的形式进行sql语句连接
|
|||
|
// $sql .= "insert into stu_info(firstname,lastname,email) values('东方不败','东方拜拜','dongfang@qq.com');";
|
|||
|
|
|||
|
// // 发送sql
|
|||
|
// if($conn->multi_query($sql) === TRUE) {
|
|||
|
// echo "数据添加成功!" . '<br>';
|
|||
|
// }else{
|
|||
|
// echo "数据添加失败,错误信息如下: " . $conn->connect_error . '<br>';
|
|||
|
// }
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 读取数据据库中的信息 ***************************************************
|
|||
|
|
|||
|
// // 设置sql 语句,查询全部数据
|
|||
|
// $sql = "select * from stu_info";
|
|||
|
// // $sql = "select id ,firstname,lastname from stu_info;";
|
|||
|
// // $sql = "select * from stu_info where id > 3;";
|
|||
|
|
|||
|
// // 发送sql语句,获得查询结果
|
|||
|
// $result = $conn->query($sql);
|
|||
|
|
|||
|
// // 如果查询的结果>0表示查询成功,那么就可以将数据输出
|
|||
|
// // 函数 num_rows() 判断返回的数据。
|
|||
|
|
|||
|
// // 如果返回的是多条数据,函数 fetch_assoc() 将结合集放入到关联数组并循环输出。
|
|||
|
// if(isset($result->num_rows) && $result->num_rows > 0) {
|
|||
|
// // 输出数据
|
|||
|
// while($row = $result->fetch_assoc()){
|
|||
|
// echo "id" . $row['id'] . '- Name:' . $row['firstname'] . " " . $row['lastname'] . '<br>';
|
|||
|
// }
|
|||
|
// }else {
|
|||
|
// echo "暂无数据" . '<br>';
|
|||
|
// }
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 删除数据 ***************************************************
|
|||
|
|
|||
|
// // 设置sql
|
|||
|
// $sql = "delete from stu_info where lastname = '东方拜拜';";
|
|||
|
|
|||
|
// // 发送sql
|
|||
|
// if($conn->query($sql) === TRUE) {
|
|||
|
// echo "删除成功" . '<br>';
|
|||
|
// }else {
|
|||
|
// echo "删除失败,错误信息为:" . $conn->connect_error . '<br>';
|
|||
|
// }
|
|||
|
|
|||
|
// *************************************************** 通过mysqli 删除数据 ***************************************************
|
|||
|
|
|||
|
// // 设置sql语句
|
|||
|
// $sql = "update stu_info set firstname='张小三小三小三小三小三' where id = 4";
|
|||
|
|
|||
|
// // 发送sql语句
|
|||
|
// if($conn->query($sql) === TRUE) {
|
|||
|
// echo "修改成功" . '<br>';
|
|||
|
// }else {
|
|||
|
// echo "修改失败,错误信息:" . $conn->connect_error . '<br>';
|
|||
|
// }
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// *************************************************** 清空数据表 ***************************************************
|
|||
|
|
|||
|
// $sql = "TRUNCATE `$mysql_database`.`stu_info`";
|
|||
|
|
|||
|
// // 发送sql语句,获得查询结果
|
|||
|
// $result = $conn->query($sql);
|
|||
|
|
|||
|
// *************************************************** 关闭数据库连接 ***************************************************
|
|||
|
|
|||
|
// 连接之后,还需要将连接关闭
|
|||
|
$conn->close();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// 常用sql语句总结
|
|||
|
// 在上面的代码中,我们尝试了通过mysqli对mysql数据进行的增删改查操作,其中较为核心的是,sql语句的使用。
|
|||
|
// 下面我们来说一下常用的sql语句语法:
|
|||
|
|
|||
|
// 创建数据库
|
|||
|
// create database 数据库名 default character set = 'utf8';
|
|||
|
// 创建数据表
|
|||
|
// create table 数据表名 (
|
|||
|
// -- 下面是表中的一些字段
|
|||
|
// id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|||
|
// firstname VARCHAR(30) NOT NULL,
|
|||
|
// lastname VARCHAR(30) NOT NULL,
|
|||
|
// email VARCHAR(50),
|
|||
|
// reg_date TIMESTAMP
|
|||
|
// )
|
|||
|
// 插入数据
|
|||
|
// insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)
|
|||
|
// 读取数据
|
|||
|
// select column_name(s) from table_name
|
|||
|
// 如果传入一个*,则表示搜索所有的数据:
|
|||
|
|
|||
|
// select * from table_name
|
|||
|
// 也可以在后面加入指定条件
|
|||
|
|
|||
|
// select * from table_name where 条件
|
|||
|
// 修改
|
|||
|
// update table_name
|
|||
|
// set column1=value, column2=value2,...
|
|||
|
// where some_column=some_value
|
|||
|
|
|||
|
// 删除数据
|
|||
|
// delete from table_name
|
|||
|
// where some_column = some_value
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
csrf document.txt
|
|||
|
```
|
|||
|
[https://www.zhihu.com/question/60102253]
|
|||
|
|
|||
|
PHP加了Token验证表单防止CSRF后还有必要做其它的防范吗?比如判断REFERER,再加个验证码之类的?有没有这个必要,目前再写一个模板做练习,已经加上了Token验证,准备再加上判断REFERER时突然觉得这样会不会有点多此一举?或则有什么其它更好的方法吗?
|
|||
|
|
|||
|
|
|||
|
目前的代码是这样的,先判断来源,再判断Token
|
|||
|
|
|||
|
//判断请求-登陆
|
|||
|
if($_GET['login']=='action'){
|
|||
|
//判断REFERER
|
|||
|
$referer = $_SERVER["HTTP_REFERER"]; //获取前一页面的 URL 地址
|
|||
|
$url = $_SERVER["HTTP_HOST"]; //获取本页面的主机 URL 地址
|
|||
|
//echo "来源页面:$referer </br> 本地页面:$url </br>"; //输出结果(测试用)
|
|||
|
if(preg_match("|$url|", $referer)){
|
|||
|
//来源通过,判断Token令牌
|
|||
|
session_start();
|
|||
|
if($_POST['token'] == $_SESSION['token']){
|
|||
|
unset($_SESSION['token']);
|
|||
|
echo "这是一个正常的提交请求";
|
|||
|
}else{
|
|||
|
echo "这是一个非法的提交请求";
|
|||
|
}
|
|||
|
}else{
|
|||
|
echo '非法来源的请求';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
[https://blog.csdn.net/qq_31752115/article/details/103775475]
|
|||
|
php如何防止csrf攻击
|
|||
|
|
|||
|
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
|
|||
|
|
|||
|
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。(推荐学习:PHP编程从入门到精通)
|
|||
|
|
|||
|
如:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
|
|||
|
|
|||
|
防御CSRF攻击:
|
|||
|
|
|||
|
目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
|
|||
|
|
|||
|
(1)验证 HTTP Referer 字段
|
|||
|
|
|||
|
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如需要访问 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory,用户必须先登陆 bank.example,然后通过点击页面上的按钮来触发转账事件。
|
|||
|
|
|||
|
这时,该转帐请求的 Referer 值就会是转账按钮所在的页面的 URL,通常是以 bank.example 域名开头的地址。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。
|
|||
|
|
|||
|
因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
|
|||
|
|
|||
|
(2)在请求地址中添加 token 并验证
|
|||
|
|
|||
|
CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。
|
|||
|
|
|||
|
要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。
|
|||
|
|
|||
|
可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
|
|||
|
|
|||
|
(3)在 HTTP 头中自定义属性并验证
|
|||
|
|
|||
|
这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
note____.txt
|
|||
|
```php
|
|||
|
<!-- 涟漪动画效果:mdui-ripple -->
|
|||
|
<!--按钮稍微小一点:mdui-btn-dense-->
|
|||
|
<!-- font-size: 3.5em; font-size: 3rem; font-size: 36pt; font-size: 48px;-->
|
|||
|
|
|||
|
|
|||
|
查询IP(有道)API
|
|||
|
https://foundation.youdao.com/ip/ipinfo
|
|||
|
|
|||
|
如果有标DJ的是英式音标,标KK的是美式音标。bai
|
|||
|
比如你查一个词coat,DJ:du[kəut],KK:[kot]。
|
|||
|
|
|||
|
|
|||
|
若页面需默认用 极速 速核,增加标签:<meta name="renderer" content="webkit">
|
|||
|
若页面需默认用ie兼容内核,增加标签:<meta name="renderer" content="ie-comp">
|
|||
|
若页面需默认用ie标准内核,增加标签:<meta name="renderer" content="ie-stand">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
HTML5 Boilerplate 使用相对协议请求 Google CDN 中的 jQuery ,使用方式为:
|
|||
|
|
|||
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
|
|||
|
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
|
|||
|
上面的例子中除了引用 Google CDN 中的文件外,还添加了一个本地 jQuery 链接,以便连接 Google CDN 失败后,使用本地副本。
|
|||
|
|
|||
|
|
|||
|
|
|||
|
分享到QQ的缩略图显示设置:未确认是否有效?
|
|||
|
<meta itemprop="name" content="0047ol"/>
|
|||
|
<meta name="shareimage" itemprop="image" content="logo.png" />
|
|||
|
<meta name="keywords" content="0047ol" />
|
|||
|
<meta name="description" itemprop="description" content="0047ol" />
|
|||
|
|
|||
|
H5手Q分享通用接口代码片段(https://blog.csdn.net/qq_35432904/article/details/81704321)
|
|||
|
<meta itemprop="name" content="网页标题">
|
|||
|
<meta itemprop="description" content="网页描述">
|
|||
|
<meta itemprop="image" content="缩略图">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
error_reporting(0);//禁用错误报告
|
|||
|
error_reporting(E_ALL ^ E_NOTICE);//显示除去 E_NOTICE 之外的所有错误信息
|
|||
|
error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息
|
|||
|
error_reporting(E_ERROR | E_WARNING | E_PARSE);//显示运行时错误,与error_reporting(E_ALL ^ E_NOTICE);效果相同。
|
|||
|
error_reporting(E_ALL);//显示所有错误
|
|||
|
|
|||
|
js:
|
|||
|
// var flags = [
|
|||
|
// {flag:'1',info:'清香1'},
|
|||
|
// {flag:'2',info:'清香2'},
|
|||
|
// {flag:'3',info:'清香3'},
|
|||
|
// {flag:'4',info:'清香4'},
|
|||
|
// {flag:'5',info:'清香5'}];
|
|||
|
// var arr = '4';
|
|||
|
// flags.map(e=>{ if(arr == e.flag){ console.log(e.info); alert(e.info);} })
|
|||
|
|
|||
|
|
|||
|
|
|||
|
HTMl中Meta标签 参考:https://www.cnblogs.com/cxzhome/p/8448463.html
|
|||
|
|
|||
|
|
|||
|
详解HTML5中rel属性的prefetch预加载功能使用:https://www.cnblogs.com/suyuwen1/p/5506397.html
|
|||
|
|
|||
|
|
|||
|
header('Content-Type: text/html; charset=utf-8'); //网页编码
|
|||
|
|
|||
|
header('Content-Type: text/plain'); //纯文本格式
|
|||
|
|
|||
|
header('Content-Type: image/jpeg'); //JPG、JPEG
|
|||
|
|
|||
|
header('Content-Type: application/zip'); // ZIP文件
|
|||
|
|
|||
|
header('Content-Type: application/pdf'); // PDF文件
|
|||
|
|
|||
|
header('Content-Type: audio/mpeg'); // 音频文件
|
|||
|
|
|||
|
header('Content-type: text/css'); //css文件
|
|||
|
|
|||
|
header('Content-type: text/javascript'); //js文件
|
|||
|
|
|||
|
header('Content-type: application/json'); //json
|
|||
|
|
|||
|
header('Content-type: application/pdf'); //pdf
|
|||
|
|
|||
|
header('Content-type: text/xml'); //xml
|
|||
|
|
|||
|
header('Content-Type: application/x-shockw**e-flash'); //Flash动画
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
------------
|
|||
|
|
|||
|
```php
|
|||
|
|
|||
|
```
|