什么叫session和cookie-及其设置
http的无状态?
保持状态, 是指当程序关闭后重启, 上一次操作的历史还能继续, 保持的. 如word中的 "选项"设置. 如windows系统的设置等等. http的设计目的, 只是为了简单的 让客户端请求文件 服务器响应分发文件 而已. 彼此之间都不需要记住以往的历史. 就像 散客/游客 在 自动售货机/自由卖场 购买东西一样. 这一次和每一次的 购买/访问 行为都是独立的,互不相关的. 所以当 b访问s后, 下一次再访问s; 甚至在同一次访问中 的不同页面间跳转也是独立的, 彼此间的状态都不共享,不互知
为什么需要状态保持?
而web程序或有些应用中,需要在 下一次访问S ,或不同页面间 跳转时, (保持状态的概念:)知道以往的访问历史 或程序状态, 和交互信息. 这就需要 在B /S 间保持状态. 如统计访问次数, 判断用户是否登录等.
保持状态的理解例子?
如同 在咖啡店喝咖啡的会员制, 喝上5杯咖啡送一杯咖啡. 就要记录这一次和以往喝咖啡的记录.就需要保持状态. 三种方式: 店员记住每个顾客的消费记录,这是http协议自身实现; 顾客一张消费卡,卡上记有各次消费的情况, 这个是客户端 cookie 保持状态; 给顾客一张会员卡,上面只有一个记录号, 然后咖啡店的服务器上保存顾客消费情况, 当顾客进店消费时, 出示会员卡,根据卡号查询记录,决定消费情况. 这是服务器端 session 保持状态. 由于客户端消费卡, 可能被修改/仿造, 为了保证顾客信息/资金的安全, 通常采用服务器端保持状态. 也就是说, 重要信息的状态保持, 要采用session, 不要采用cookie.
session的设置set, 不叫设置, 叫做 "装逼的 注册".
session的存在形式? 是以服务器内存变量的形式存在的, 不是以文件的形式保存的. 保存在服务器的内存中,所以服务器进程一旦终止 或 机器重启,那么, server上的session 就不存在了.
session的创建和终止消亡?
不是客户端一连接服务器,就创建session, 而是要显式的调用 Session::set('username', $Think.post.name).
session的消亡也不是 "会话" 一结束就消亡, 而是: 显式的调用 Session::clear/destroy(); 或者session的静默 超过设置的session过期时间; 或者如上的进程终止或机器重启.
那么session的默认过期时间
是空格, 也可以用 &#方式来表示,   注意要写上#, 否则会按原样输出 &12288;
cookie的最大尺寸, 大小限制: 3K?
cookie的保存?
cookie的设置包括名称, 过期时间, 域,路径. 域是整体 的范围, 如 .baidu.com , 路径是作用的具体范围,通常是一个子目录. 域和路径组合 表示cookie的作用范围. 过期时间, 如果没有设置,表示会话一结束cookie就失效, 称为"会话cookie".
cookie的使用方式?
cookie不需要用户 显式的去调用, 去引用. 它是放在 浏览器的目录中, 在访问服务器时, 浏览器会自动的 扫描检查 每一个 cookie, 然后将cookie 添加到 http请求头中, 一并发送给服务器. 然后由服务器去检查? if(Session::is_set('username')....
session的使用也需要cookie吗?
是的, session的使用,如同上面的咖啡厅会员卡一样, 顾客是持有 会员卡 卡号, 店里面根据会员卡号查询记录. 同样的, 服务器上有session 记录, 而session的标识, 即session id是保存在客户端, 的cookie中的. 浏览器访问服务器时, 会自动的将cookie中的 session id发给服务器, 然后检测.
对于多用户并发的session,难道不会重叠,覆盖吗?
正是因为上面的那个session id的原因.
盗用用户名发帖?
就是将你的机器上的cookie盗用,拷贝到它机器上的浏览器目录下, 因为浏览器会自动地发送cookie, 所以它上网时就是盗用你的身份了.
git tag 的操作包括: 创建/列表/删除/推送 标签
-a 创建, -l list, -d 删除标签. -m 加上创建标签时的备注信息
git show : 可以显示查看 任何类型的 对象. show various types of objects. git show Release-0.1
git tag是放在 .git/refs/tags/目录中的, 比如Release-0.1, 其实是一个 中的.
git tag -a 'Release-0.1' -m 'first tagger tagged'
git tag; git tag -l; git show Release-0.1(git show是直接查看各种git对象)