在网上看了很多,还是不能具体明白。session是只能在做登录是时候用吗?看了那么多还是有点懵逼,还有女的是不是真的不适合做程序员,很简单的问题就得反应半天。

解决方案 »

  1.   

    session 是在页面间传递用户隐私的机制
      

  2.   


    session在WEB技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。因此我们必须 通过session记录用户的有关信息,以供用户再次以此身份对web服务器提供要求时作确认,例如,我们在某些网站中常常要求用户登录, 但我们怎么知道用户已经登录了呢,如果没有session的话,登录信息是无法保留的,那岂不要让用户在每一页网页中都要提供 用户名和密码。 
      

  3.   

    session用于存储有关用户(理解成客户端/浏览器也可以)会话的信息。
    Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
    大概流程就是:用户打开浏览器访问一起网站,浏览器的COOKIE中会生成sessionID,在每次请求时都会自动带上sessionID,然后服务器端根据sessionID找到对应的session值。
    sessionID就相当于是一个钥匙,服务器上存session的地方相当于一个柜子,只能拿自己的钥匙开自己的柜子取自己的东西。
    session一般存储用户相关的的信息,如用户登录状态、权限控制等,其他的信息也可存。另外就是无论你站点上的用户是否登录都会生成sessionID。
      

  4.   

    PHP中的session  的生成;
     网上有人分析源码大意是   通过时间搓 + 微秒数  + 随机数  经过哈希算法等等 得到一串  32位字符串(其中sess_是固定不变的 )    一定量的高并发情况下是有几率产生重复的;拿着这个字符串,它有什么用呢;  
    第一步:它把字符串丢给client( 你的浏览器),   自己呢就在本地创建了一个文件,以这个字符串命名这个文件; (于是文件中就可以存东西了;)
    第二步:client(你的浏览器)拿到这个字符串后,就可以去读取服务器上的这个文件了;
    第二个问题 :   
    苗彩霞 也是女的   华为软件云平台资深架构师 
      

  5.   

    早期的web应用或者说早期的网站都是一种处理静态资源的网站,功能主要是查看文档,看看图片,而现在的web应用和早期的差别已经很大,互联网的网站更准确的定义应该是互联网软件即网站就是软件,网站所代表的软件和早期软件的定义是不一样的,早期的软件都是在单机环境下运行,而互联网的普及让软件和网络技术融合在一起,这就要求网站所代表的软件应该要有一个对事务处理的记忆功能,事务处理的记忆功能就是我们常说的要有状态。而实现web应用技术的核心http协议是一个无状态的协议,http这种设计也许是历史遗留问题,也许无状态的http是最简单也是最有效的通讯方式,但是当网站成为软件后,状态的保持就是一个很重要的功能。因此在web应用开发里就出现了保持http链接状态的技术:一个是cookie技术,另一种是session技术。 cookie技术是客户端的解决方案(当然随着html5的出现,比cookie更为强劲和安全的技术出现了,但是鉴于html5的普及度不够,就不做本文讨论的内容了),Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。 session技术则是服务端的解决方案,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下 Session的含义。首先,我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正式这样一个过程,用户的状态也就得以保持了。
      

  6.   

    简单的说,session 本质是一个文件,$_SESSION 变量会在 session 开启之后被填充为 sess 文件的内容(反序列化之后)当 session 关闭之后(手动关闭或者自动关闭),PHP 又会将 $_SESSION 变量的内容序列化并写到 sess 文件中,等待下一次取出
      

  7.   

    看来session和cookie一个是存信息在服务端,一个是存信息在客户端的意思啊,储存记忆的地点不同 
      

  8.   

    Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。
      

  9.   

    一个概念吧,比如你网站qq登录一次,再打开qq其他网站一般都不用再次登录,这就是会话。维持客户登录一段时间
    understand?
      

  10.   

    session可以理解为一个通行证。如果涉及到用户登录的功能,可以借助session进行权限设置。另外,女生是适合做程序员的。
    https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=5uqvqirt&productCode=vm&utm_source=5uqvqirt
      

  11.   

    就当做是你登录之后一直有的记录,当你退出(或者是到了session的设置时间)后,这个页面就删掉这个记录了
      

  12.   

    session简单来说就是会话控制,保存信息在服务器端。
      

  13.   

    1,Session实质是啥? ==存贮在服务器端硬盘中的session文件,一个session一个文件。
    文件名:32位随机编码字符串如服务器/tmp目录下【/tmp /sess_01aab840166fd1dc253e3b4a3f0b8381】
    格式:变量名 | 类型 | 长度 | 值
    注:当然你也可以数据库建个Session表存session,(站点访问量很大的情况下)
    2,Session的产生?
    针对http局限性(无状态无记忆)-提出的保持(客户端<--->服务器)保持连接状态的机制。
    当你访问一个网站时,服务器会获取客户端的一些信息,比如电脑配置啊用的啥浏览器啊等等,然后发送一个sessionID给你,存在你浏览器里的一个文件夹下。下次访问这个网站时都会带着这个id,服务器就会根据这个ID识别你。 这样就建立起了唯一的你和服务器之间的关系。当然这种连接,你这边必须有存贮我给你ID的地方,如果禁用了COOKIE,那么我无法识别你是刚才的你,每次访问这个网站都是全新的用户。比如用户登录,你的session('user')当然要保存在你在服务器某个文件下,如果禁用cookie,它是判断不出,茫茫访问者你是谁,你存啥数据就无从谈起了。
    那么问题来了,cookie禁用了咋办? 有办法!服务器可以生成个sesiionID通过其他途径传过去,你获得这个ID,次次访问它时带着就可以了。
    3,Session常用使用场景?
    (1)网站不同页面传递变量: 打开Session_start()需在程序最开始执行,如保存一个变量,Session('name',$name).,那么在其他PHP文件,可以取出$name = Session('name');
    (2)用户身份验证。项目中,经常登陆后把用户信息贮存在Session里,Session('userinfo',$user).那么用户访问网站任何一个网页时,判断Session中是否存在该用户,isset(Session('userinfo')),如果存在,则不需要次次登陆。
    (3)程序状态记录。项目中,如果访问一个用户必须登陆才能访问的页面,如支付页面,没有登陆自然跳转到登陆页面,登陆完需要返回到支付页面,如何做到呢?就是在跳转到登陆页面前记录下,当前所在页面的url,用户在登陆页面登陆成功后,取出Session中的支付页面的url,直接跳转到支付页面。
    注:三者原理相同。
    越说越多,暂时先这些!
      

  14.   


    不对吧, 还是没搞懂, 决定用户是否符合登录认证, 不是根据他浏览器kookie中的密码字段然后去和数据库中的密码字段比较相等吗?比如 $_COOKIE['pass'] 是一个32位的MD5, 然后用这个MD5字符串去查询数据库中 $_COOKIE['uid'] 的pass字段,如果两者相同就表示认证成功, 全程根本就没session啥事, 根本就用不着session参与啊???? 到底session作用和意义是什么啊, 怎么利用到它???
      

  15.   

    看完这篇你就明白了,代码是我模拟会话机制,你可以测试。
    原理:Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……。也就是说,session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。 按照上面的思想,我只要把session_id存在在cookie中就可以正常使用session了。
    代码补充:
    /**
     * 客户端
     * 关闭浏览器的cookie
     */
    $sname = session_name();//session名 何处打印都是一样的
    //如果服务器给我传递了ID
    if( isset($_GET[$sname]) ){
    $sid = $_GET[$sname];
    echo "<a href=sever.php?id=".$sid.">我已接收id,再次发送请求</a>";
    }else{
    //初次访问
    echo "<a href=sever.php>初次访问</a>";
    }
    /**
     * 服务器端
     * 关闭浏览器的cookie
     */
    ini_set('session.gc_maxlifetime', 3600);
    if(!isset($_GET['id'])){
    session_start();//执行此句 开辟一个新的用户区域
    $a = session_name();
    $b = session_id();//q8k57hmtu6eci6jlaj75kidt21
    $_SESSION['user'] ='myinfo';//给这个用户存入标识信息
    echo "<a href=client.php?$a=".$b.">给你发送Session_id</a>";
    }
    if(isset( $_GET['id'] ) ){
    session_id($_GET['id']);//先指定哪个用户的session
    session_start();//打开这个用户的session
    if($_SESSION['user'] == 'myinfo'){
    echo "我认得你!"; //取出来了
    }}
      

  16.   


    不对吧, 还是没搞懂, 决定用户是否符合登录认证, 不是根据他浏览器kookie中的密码字段然后去和数据库中的密码字段比较相等吗?比如 $_COOKIE['pass'] 是一个32位的MD5, 然后用这个MD5字符串去查询数据库中 $_COOKIE['uid'] 的pass字段,如果两者相同就表示认证成功, 全程根本就没session啥事, 根本就用不着session参与啊???? 到底session作用和意义是什么啊, 怎么利用到它???不对吧, 还是没搞懂, 决定用户是否符合登录认证, 不是根据他浏览器kookie中的密码字段然后去和数据库中的密码字段比较相等吗?====你的疑问我都写了,你没细看我写的。sessionID 是识别用户的,这个用户的意思不是你登陆网站的用户名,这个要搞清楚!这个ID是你的电脑配置、浏览器版本等等组成的信息,它是唯一的.你在你家打开360浏览器访问了一个网址,这个网址就会传给你一个ID,保存在你浏览器的COOKIE里,ID就是唯一的你的身份,同时网址服务器给你开辟了一块数据区域叫SESSION,下次带着这个ID就找到属于你的数据区域,存取数据了。
      

  17.   

    这个问题和你解释太多没有实际操作其实也不能真正掌握,如果想要学习PHP,其实买本入门书认真看完自然就全部搞懂了。另外,谁说女的不能当程序员的,会写代码的女生不要太吃香哦
      

  18.   

    * Session保存在服务端,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中* Cookie保存在客户端,用来记录用户的一些信息