php中的会话深度很小

php中的会话深度很小,php,database,session,cookies,Php,Database,Session,Cookies,我对PHP会话有一些问题。希望尽快得到答案 如果我只使用会话而不创建任何cookie。会话是否在客户端浏览器上自动创建cookie 如何知道会话id?它是由开发人员创建的,还是创建的每个会话都由id引用 如果我要销毁一个会话,那么在销毁之前,我是否还必须删除我从未在我的站点中为其编写代码的cookie?(因为我只需要像选举一样在5月b日一年创建一次时间登录。所以我不需要在客户端存储用户信息。) 如果我的代码是$\u会话['user']='xxx',当'yyy'登录时,会话数据存储在服务器中时,$

我对PHP会话有一些问题。希望尽快得到答案

  • 如果我只使用会话而不创建任何cookie。会话是否在客户端浏览器上自动创建cookie

  • 如何知道会话id?它是由开发人员创建的,还是创建的每个会话都由id引用

  • 如果我要销毁一个会话,那么在销毁之前,我是否还必须删除我从未在我的站点中为其编写代码的cookie?(因为我只需要像选举一样在5月b日一年创建一次时间登录。所以我不需要在客户端存储用户信息。)

  • 如果我的代码是
    $\u会话['user']='xxx'
    ,当'yyy'登录时,会话数据存储在服务器中时,
    $\u会话['user']
    是否会被'yyy'替换

  • 我如何知道,我的网站可以同时处理多少用户?这与我如何管理会话有关吗?还是服务器流量

  • 我在某个地方读到,会话也可能被劫持。因此建议在数据库中存储会话,而不是在服务器中存储/tmp。如何在数据库中存储会话?是否有任何特定的过程,或者我们必须像经典的方法一样继续,在创建会话时编写一个要插入的查询,在会话被破坏时删除它

  • 提前谢谢

  • PHP默认使用cookies。如果调用
    session\u start()
    时会话cookie不存在,将为您创建一个会话cookie(假设满足各种条件,例如在调用session\u start()之前没有执行任何输出)

  • session\u id()

  • 销毁会话意味着在服务器上擦除会话中存储的数据。您必须手动删除客户端上的会话cookie(通过使其过期)
  • 会话通过其ID绑定到特定用户。两个不同的用户将有两个不同的ID,这意味着他们的$u会话对于每个用户都是唯一的。如果为所有用户的会话变量指定相同的值,则所有用户将具有相同的值,但该值的唯一副本
  • 对此没有答案。涉及太多的变量:服务器内存/cpu速度、网络带宽、磁盘带宽、代码效率等等
  • 会话可能被劫持。数据库中的会话是不必要的,除非您正在进行多服务器PHP安装或与其他人共享服务器。每个站点的会话文件可以是唯一的,因此使用基于文件的会话不一定是安全问题
  • 如果您正在执行自己的会话处理程序,那么您负责创建/更新/删除会话数据

  • PHP默认使用cookies。如果调用
    session\u start()
    时会话cookie不存在,将为您创建一个会话cookie(假设满足各种条件,例如在调用session\u start()之前没有执行任何输出)

  • session\u id()

  • 销毁会话意味着在服务器上擦除会话中存储的数据。您必须手动删除客户端上的会话cookie(通过使其过期)
  • 会话通过其ID绑定到特定用户。两个不同的用户将有两个不同的ID,这意味着他们的$u会话对于每个用户都是唯一的。如果为所有用户的会话变量指定相同的值,则所有用户将具有相同的值,但该值的唯一副本
  • 对此没有答案。涉及太多的变量:服务器内存/cpu速度、网络带宽、磁盘带宽、代码效率等等
  • 会话可能被劫持。数据库中的会话是不必要的,除非您正在进行多服务器PHP安装或与其他人共享服务器。每个站点的会话文件可以是唯一的,因此使用基于文件的会话不一定是安全问题
  • 如果您正在执行自己的会话处理程序,则您负责创建/更新/删除会话数据。

    答案:-

    1) 。是的,名称为“PHPSESSID”或“php.ini中session的默认名称集”

    2) 。您可以通过
    session\u id()
    函数了解会话id

    3) 。是的,如果你想的话可以。我如何建议销毁会话

    if(session_id() == '' || !isset($_SESSION)) {
        session_start();
    }
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
    
    4) 。否每个不同的用户在会话文件夹中都有不同的会话存储

    5) 。取决于。。。服务器空间和会话大小。[仅供参考,会话作为文件存储在您的服务器中,并从服务器本身引用],因此回答这样的问题是有争议的

    6) 。会话可能被劫持,因此,如果您的主机在1个文件夹中为所有站点会话提供服务,您最好更改主机,我建议的启动会话的方法如下:-

    if (session_start()) {
    $exp = "7200"; // set your expiry time, here 60*60*2 = 7200 i.e, 2 hour
        setcookie('PHPSESSID', session_id(), time()+$exp, '/', null, null, true);
    }
    
    在上面的代码中,您实际上正在用Cookies覆盖您的会话名称和值,Cookies是httpOnly,并确保系统中的“TraceEnable”处于禁用状态。这使得你的饼干几乎不可能被偷走。

    答案:-

    1) 。是的,名称为“PHPSESSID”或“php.ini中session的默认名称集”

    2) 。您可以通过
    session\u id()
    函数了解会话id

    3) 。是的,如果你想的话可以。我如何建议销毁会话

    if(session_id() == '' || !isset($_SESSION)) {
        session_start();
    }
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
    
    4) 。否每个不同的用户在会话文件夹中都有不同的会话存储

    5) 。取决于。。。服务器空间和会话大小。[仅供参考,会话作为文件存储在您的服务器中,并从服务器本身引用],因此回答这样的问题是有争议的

    6) 。会话可能被劫持,因此,如果您的主机在1个文件夹中为所有站点会话提供服务,您最好更改主机,我建议的启动会话的方法如下:-

    if (session_start()) {
    $exp = "7200"; // set your expiry time, here 60*60*2 = 7200 i.e, 2 hour
        setcookie('PHPSESSID', session_id(), time()+$exp, '/', null, null, true);
    }
    
    在上面的代码中,您实际上正在用Cookies覆盖您的会话名称和值,Cookies是httpOnly,并确保系统中的“TraceEnable”处于禁用状态。这会让你的饼干偷钱