• 关于http协议的理解


    一.状态码

    1.200:请求成功。

    2.302:浏览器进行重定向。

    3.304:资源已使用,即有缓存。

    4.404:请求失败,请求的资源未在服务器上发现。

    5.500:服务器端发生错误。

    二.php获取http内容

    $_SERVER中比较重要的属性

    $_SERVER['REMOTE_ADDR']:当前浏览器的IP地址

    $_SERVER['DOCUMENT_ROOT']:获得Apach的主目录

    $_SERVER['REQUEST_URL']:可以获得请求的资源名

    $_SERVER['HTTP_REFERER']:页面的来源

    三.防盗链

    test.php
    <?php
    	
    	if(isset($_SERVER['HTTP_REFERER'])) {//是否存在
    		if(strpos($_SERVER['HTTP_REFERER'], 'http://localhost/test') == 0) {//是否已http://localhost/test开头
    			echo "aaa";
    		}else {
    			header("Location: http://baidu.com/");//重定向
    		}
    	}else {
    		header("Location: http://baidu.com/");//重定向
    	}
    ?>
    

    如果要访问test.php这个页面,来源需要以http://localhost/test开头。

    四.重定向

    一般重定向:header("Location: b.php");

    控制一定时间去跳转 header("Reflash: 3;url=http://baidu.com");

    五.控制缓存

    header("Expire: -1");
    header("Cache-Control: no-cache");
    header("Pragma: no-cache");//三个均代表禁用缓存,兼容不同的浏览器

    六.文件下载

    <?php
    
    function downFile($filename, $root) {
    	$file_name = $filename;
    
    	//文件为中文名
    	$file_name = iconv("utf-8", "gb2312", $file_name);
    
    	//绝对路径
    	$file_path = $_SERVER['DOCUMENT_ROOT'].$root.$file_name;
    
    	if(!file_exists($file_path)) {
    		echo "文件不存在";
    		return;
    	}
    
    	$fp = fopen($file_path, "r");
    	//计算文件的大小
    	$file_size = filesize($file_path);
    
    	if($file_size > 10*1024*1024) {
    		echo "文件过大不下载";
    		return;
    	} 
    
    	header("Content-type: application/octet-stream");//返回的文件
    	header("Accept-Ranges: bytes");//按照字节大小返回
    	header("Accept-Length: $file_size");//返回文件的大小
    	header("Content-Disposition: attachment; filename=.$file_name");//客户端对应的文件名
    
    	//下载量为1024字节
    	$buffer = 1024;
    
    	while(!feof($fp)) {
    		$file_data = fread($fp, $buffer);
    		echo $file_data;
    	}
    
    	fclose($fp);
    }
    
    downFile("啊啊.jpg", "test/img/");//封装函数
    ?>
    

    源码下载,将其放在www目录下。

    七.乱码解决方案

    <meta http-equiv = "content-type" content="text/html;charset=utf-8"/>
    <?php
    header("Content-Type: text/html; charset=utf-8");
    ?>

  • 相关阅读:
    138.安全退出的异常,要用throw 尽量不用exit(0)
    137.CPP自带异常
    136.异常的多态,父类对象,传递子类的引用或指针(地址)
    135.异常与类继承
    134.异常类的处理
    133.throw机制 抛出类类型
    132.try throw catch介绍
    CF1039D You Are Given a Tree
    CF576E Painting Edges
    【模板】并查集维护生成树
  • 原文地址:https://www.cnblogs.com/pcd12321/p/5272920.html
Copyright © 2020-2023  润新知