cookie和session:
cookie和session区别:cookie数据是存在本地的,而session数据是存在服务端的,session比cookie更安全。
cookie:用于http做会话时记住客户端所做的事,这里可以解决首次登陆页面广告等问题。 服务端与客户端在做开发的时候是无状态:意思是服务端与客户端交互后两个互不认识。其使用如:
//在php中设置cookie和session:
//1.设置响应头中的Set-Cookie可以发标识给客户端,header('Set-Cookie: 键=值'),设置相同的键时会覆盖,例如:
header('Set-Cookie: notice = password');
header('Set-Cookie: notice1 = password1');
//2.在php中有专门设置cookie的函数,可传入多个参数:第三个参数是过期时间戳,不传第三个参数默认是会话级别session(关闭浏览器就会自动删除)。
setcookie('键');--------只传一个参数是删除
setcookie('key','value',time()+1*24*60*60);-------这里的时间不能是当前时间,因为时间一直是在更新,所以时间要给长一点,否则cookie立刻会被删除。
第四个参数path是设置作用路径范围:
setcookie('key','value',time()+1*24*60*60,'/demo');-----www.happy.com/images/1.jpg www.happy.com/demo/index.html,表示在这样的域名下,访问/demo下的地址有cookie,访问/demo上一级及同级别路径没有cookie。
第五个参数domain设置cookie的作用域名范围:------如果设置domain为:day-01.io,day-01.io那么在www.day-01.io这个域名下是可以访问,在www.day-02.io这个域名下是不可以被访问。
setcookie('key','value',time()+1*24*60*60,'/demo','day-01.io');
第六个参数secure是设置只有https才可以使用,值为布尔值:
setcookie('key','value',time()+1*24*60*60,'/demo','day-01.io',false);
第七个参数httponly是设置只有服务端才可以操作cookie,JS不可以操作cookie 值为布尔值:
setcookie('key','value',time()+1*24*60*60,'/demo','day-01.io',false true);
3.在php中取cookie:$_COOKIE,得到的是一个关联数据
var_dump($_COOKIE);
4.JavaScript操作cookie:
获取:document.cookie
设置:document.coolie='js=fuck',不是覆盖性复制,这里是增量设置。
JS操作cookie这里有专门的扩展插件将js-cookie:https://github.com/js-cookie
5.cookie有安全隐患,这里一般使用session['key']='value';在php中操作session有性能损耗,所以需要开启session:配置文件开启或者代码开启:session_start();
设置session:
$_SESSION['key']='value';
获取session:
$_SESSION;
//关闭广告原理:在设置和获取session或cookie完成的情况下,利用判断某session或cookie的值是否存在来控制页面某部分显示或隐藏,如:
//广告页面:
if(empty($_COOKIE['hide_adv'])||$_COOKIE['hide_adv']!=='1'): ?>
<div class='adv'>
<a href="index.php?action=close_adv" class='aa'>不再显示</a>
</div>
endif ?>
//关闭广告处理:
if(isset($_GET['action'])&&$_GET['action']==='close_adv'){
setcookie('hide_adv','1');
$_COOKIE['hide_adv']==='1';
};
?>
动态网页的产生:
至此,我们可以把静态网页放到服务器上,客户端通过域名请求这个网站,但是对于我们来说,Apache完成的事情过于简单,无外乎就是请求对应的文件—读取文件----将文件内容响应给客户端浏览器(文件原封不动的给用户,无法满足让网页的内容动起来,随着数据的动态变化的需求)。于是有人提出了 服务端动态网页的概念 ,能够实现这种概念的技术有好多种: JSP ASP.NET PHP Node等等。这些技术的原理就是,不在将html固定写死,每次用户请求时,动态执行一次代码,临时生成一个客户端想要的HTML页面。
web服务器工作流程:
1.根据请求的URL对应的文件类型判断是否为静态文件
2.如果请求的是一个静态文件,直接读取这个文件的内容,将文件内容返回给客户端
3.如果请求的不是一个静态文件,读取文件代码,执行这段代码(交给其他程序执行,如php),将执行结果得到的字符串返回给客户端。
给Apache配置php扩展:
由于Apache不能处理动态网页,因此需要借助php来完成动态网页的开发,那么怎么将php和Apache联系到一起呢?具体流程如下:
1.首先需要在Apache的配置文件httpd.conf文件中自定义写入php在Apache中的模块配置指令:loadModule 自定义名字_module C:/php安装的路径/php7apache2_4.dall,如:LoadModule php7_module C:/F/php/php7apache2_4.dll
2.继续在Apache中添加此指令:AddType application/x-httpd-php .php 来指定php的媒体类型,这个模块不是根据后缀判断是否该php工作,而是根据MIME Type判断是否为php工作
3.配置好上面Apache配置文件后,到php官方网站:https://www.php.net/downloads下载php压缩包后,将php压缩包解压到某个目录即可,注意和上面httpd.conf配置中路径保持一致;注意:某些服务端是支持php的,无需下载php安装包,直接使用即可。
提示:对于初学者或不想配置环境的开发者,可以使用集成环境傻瓜式安装即可,其详情阅读官方文档。
Apache与php:
对于很多初学者来说,很容易把Apache和php混在一起,其实他们两者各自有自己的负责领域,各自的职责,但是我们在使用php做动态网页时两者都会发生关系:
客户端请求—Apache判断是否为静态网页,若是,自己处理,读取文件,将结果响应给客户端;否则交给php读取php文件中的代码并执行代码,将执行的代码返回给Apache,Apache执行后呈现给客户端。
php介绍:
经过上面简单的介绍,对php有了初步的认识,如果想要学好php,那么还得继续参考官方文档学习相关API,详细参考文档:http://php.net/manual/zh/index.php
php的价值:通过执行php代码获取某些指定的数据,填充到html的指定的位置
php(PHP:Hyper Preprocessor)是一种广泛应用的脚本语言,他可以被嵌入到html中,尤其适合做动态网站开发,php中的特点和其他脚本语音类似,都有:变量,函数,循环,等等。语法不同,但是在概念上是基本一致的。我们使用php的主要作用就是能写出动态网页,动态的核心就是让HTML不再写死,而是通过在html中嵌入一段可以在服务端执行的代码,从而达到动态的目的。
php中常用于测试结果的输出指令:echo可以打印多个参数、print只能打印一个参数、var_dump()输出数据类型及数据;
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:[email protected]联系笔者删除。
笔者:苦海