Php 如何在不使用session_ID()的情况下生成唯一的session ID?

Php 如何在不使用session_ID()的情况下生成唯一的session ID?,php,session,cookies,session-cookies,Php,Session,Cookies,Session Cookies,我想生成一个会话ID。这个唯一的会话ID代表每个不同用户的一些不同数据 我的代码到现在为止: 单击并加载一个页面后,我调用一个函数create_session_id() 在我的PHP页面上,我收到此数据,然后将其插入: session_start(); $a = session_id(); $object->insert_sessionid($a); 我的问题 是否可以只使用session\u start()(无session\u id())并存储一些唯一的session id值,以

我想生成一个会话ID。这个唯一的会话ID代表每个不同用户的一些不同数据

我的代码到现在为止:

  • 单击并加载一个页面后,我调用一个函数
    create_session_id()

  • 在我的PHP页面上,我收到此数据,然后将其插入:

    session_start();
    $a = session_id();
    $object->insert_sessionid($a);
    
  • 我的问题 是否可以只使用
    session\u start()
    (无
    session\u id()
    )并存储一些唯一的session id值,以便以后在获取数据并将数据抛出到网页时使用。我不想任何点击来注册sessionid。它应该在页面加载时发生,并且没有任何函数
    create\u session\u id()

    我想带些饼干到照片里来

    注意:我的网站不允许登录。

    请使用以下功能

    function createRandomVal($val){
          $chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,-";
          srand((double)microtime()*1000000);
          $i = 0;
          $pass = '' ;
          while ($i<=$val) 
        {
            $num  = rand() % 33;
            $tmp  = substr($chars, $num, 1);
            $pass = $pass . $tmp;
            $i++;
          }
        return $pass;
        }
    
    函数createRandomVal($val){
    $chars=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789,”;
    srand((双)微时间()*1000000);
    $i=0;
    $pass='';
    而($i使用如下函数

    function createRandomVal($val){
          $chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,-";
          srand((double)microtime()*1000000);
          $i = 0;
          $pass = '' ;
          while ($i<=$val) 
        {
            $num  = rand() % 33;
            $tmp  = substr($chars, $num, 1);
            $pass = $pass . $tmp;
            $i++;
          }
        return $pass;
        }
    
    函数createRandomVal($val){
    $chars=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789,”;
    srand((双)微时间()*1000000);
    $i=0;
    $pass='';
    
    虽然($i以上代码有点错误,因为
    user669677
    已经编辑了它

    以下是正确的代码:

    function createRandomVal($val) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,-";
        srand((double)microtime() * 1000000);
        $i = 0;
        $pass = '';
        while ($i < $val) {
            $num = rand() % 64;
            $tmp = substr($chars, $num, 1);
            $pass = $pass . $tmp;
            $i++;
        }
        return $pass;
    }
    
    函数createRandomVal($val){
    $chars=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789,”;
    srand((双)微时间()*1000000);
    $i=0;
    $pass='';
    而($i<$val){
    $num=rand()%64;
    $tmp=substr($chars,$num,1);
    $pass=$pass.$tmp;
    $i++;
    }
    返回$pass;
    }
    
    上面的代码有点错误,因为
    user669677
    已经对其进行了编辑

    以下是正确的代码:

    function createRandomVal($val) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,-";
        srand((double)microtime() * 1000000);
        $i = 0;
        $pass = '';
        while ($i < $val) {
            $num = rand() % 64;
            $tmp = substr($chars, $num, 1);
            $pass = $pass . $tmp;
            $i++;
        }
        return $pass;
    }
    
    函数createRandomVal($val){
    $chars=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789,”;
    srand((双)微时间()*1000000);
    $i=0;
    $pass='';
    而($i<$val){
    $num=rand()%64;
    $tmp=substr($chars,$num,1);
    $pass=$pass.$tmp;
    $i++;
    }
    返回$pass;
    }
    

    uh,如果你想引入cookie,你应该意识到PHP会话默认使用cookies。因此,只需使用session\u start(),然后使用
    session\u id()
    来获取已创建(或正在重用)的会话id。你可以使用某种计数器?session\u start()可以发生在任何php页面上,无需与用户进行任何额外的交互,只需用户简单地请求页面即可。但是——不使用“登录”和简单地使用cookie本质上是不安全的,用户清除cookie将生成一个新的“唯一”会话,因此您将无法跟踪“用户”这样,只需要从同一个浏览器中重复已接受但未清除cookies的会话。@Ginstask他可能会这样做,但这不会造成潜在的安全威胁,因为会话id很容易被猜测?@MarcB:我不需要重复使用会话id。问题是跟踪网站上的用户行为。所以网站上的每个用户登录页应该有一个会话id。显然,每个用户的行为都会有所不同。我被告知,您可以通过使用会话启动()来实现这一点。您能给我一个小片段吗?问题是我不需要像创建会话id()这样的函数并且想在加载时生成会话id??如何实现?嗯,如果你想引入cookies,你应该意识到PHP会话默认使用cookies。所以只需使用session_start(),然后使用
    session_id()
    来获取已创建(或正在重用)的会话id。你可以使用某种计数器?session_start()可以发生在任何php页面上,无需与用户进行任何额外的交互,只需用户简单地请求页面即可。但是——不使用“登录”和简单地使用cookie本质上是不安全的,用户清除cookie将生成一个新的“唯一”会话,因此您将无法跟踪“用户”这样,只需要从同一个浏览器中重复已接受但未清除cookies的会话。@Ginstask他可能会这样做,但这不会造成潜在的安全威胁,因为会话id很容易被猜测?@MarcB:我不需要重复使用会话id。问题是跟踪网站上的用户行为。所以网站上的每个用户登录页应该有一个会话id。显然,每个用户的行为都会有所不同。我被告知,您可以通过使用会话启动()来实现这一点。您能给我一个小片段吗?问题是我不需要像创建会话id()这样的函数并且想在加载时生成会话id??如何实现?我感谢您的努力,但正如我所说的,我不想创建函数。看一下注释!!!在加载时,如果不调用任何事件或函数,您必须调用一些函数或启动一个进程来生成会话值,这是对cpu周期的浪费。为什么不使用和获取一个具有更好特性的随机字符串?可能吗..如果我在html主页的第一行上写session_start(),那么我应该怎么做next@MarcB:我知道会话id的作用。我也使用过它。只想在不使用会话_id()的情况下问你,我们无法生成唯一的会话id?我感谢您的努力,但正如我所说的,我不想创建函数。请查看注释!!!在不调用任何事件或函数的情况下,在加载时,您必须调用一些函数或启动一个进程来为您生成会话值。这是多么浪费cpu周期。为什么不直接使用并获取会话id呢具有更好特性的随机字符串?可能吗..如果我在html主页的第一行写session_start(),我该怎么办next@MarcB:我知道会话id的作用。我也使用过它。我只是想问你,如果不使用会话_id(),我们无法生成uniq