PHP隐藏下载地址

download.php

[php]
<?php
//获取传递的文件名
$filename = $_GET[‘filename’];
$pathname = “$./download/$filename”;
//以只读方式打开文件
$handle = fopen($pathname,”rb”);
//返回数据的内容类型
//’octet-stream’八位二进制流
//’content-desposition:attachment’以附件形式打开
header(“content-type:application/octet-stream”);
header(“content-despositon:attachment;filename=$filename”);
//循环读取指定大小的内容,并输出
while($str=fread($handle,1024))
{
echo $str;
}
//关闭文件
fclose($handle);
?>
[/php]

download.html

[html]
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
</head>
<body>
<a href=”download.php?filename=test.jpg”>下载图片</a>
<br>
<a href=”download,php?filename=test.mp4″>下载视频</a>
</body>
</html>
[/html]

用一条 SQL 语句展示需求用户列表

数据库的如下数据表 scores 记录用户得分历史,uid(int) 表示用户 ID,score(int) 表示分数,date(date) 表示日期,每个用户每天会产生多条数据 (示例:uid 3, date 2017-03-17)

现在需要一份用户列表,这些用户在 2017 年 3 月份的 31 天中,至少要有 16 天, 每天得分总和大于 40 分。用一条 SQL 语句表示。

select uid,count(1) from 
(
select date,uid,sum(score) sum from scores 
where substr(date,1,7)='2017-03' 
group by date,uid 
having sum(score)>40 
) cc 
group by uid 
having count(1) >=16

 

写出5个 PHP 中的魔术方法,并简单描述其作用

__construct();
构造函数:在一个类中定义一个方法作为构造函数。具有构造方法的类在每次创建新对象时先调用此方法,适合在使用对象之前做一些初始化工作
__set();
再给不可访问属性赋值时,__set()会被调用
__get();
读取不可访问属性的值时,__get()会被调用
__isset();
当对不可访问属性调用isset()或empty()时,__isset()会被调用
__unset();
当对不可访问属性调用unset()时,__unset()会被调用

谈谈对MVC的理解

MVC简单在字段上理解是 模型、视图、控制器。模型来操作数据,视图用来显示数据,控制器用来进行逻辑判断,将从模型获取到的数据传递给视图,MVC的工作是方便分工,将前端和后端分开,业务逻辑和数据操作分离。