【问题标题】:How to set generated string as a unique session key?如何将生成的字符串设置为唯一的会话密钥?
【发布时间】:2022-11-21 11:22:46
【问题描述】:

我有一个网站,当用户登录时创建一个会话,但会话只是电子邮件和用户名,这对创建帐户的客户来说很好用,但我想为用户生成一个唯一的会话密钥想要注册/登录,原因是因为目前如果用户未登录并且他们将项目添加到结帐页面,则该项目将对每个未登录的客户可见,所以我想创建一个会话基于唯一的字符串,以便不想注册/登录的客户不会发生冲突。

问题是,当我重定向到 test.php 页面时,它找不到会话密钥。

这是我生成唯一密钥的会话文件..

<?php
 session_start();

 $_SESSION['sessionKey'] = $randomString;

 if(!isset($_SESSION['sessionKey']))
 {

 function generateRandomString($length = 64) {
   $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $charactersLength = strlen($characters);
   $randomString = '';
   for ($i = 0; $i < $length; $i++) {
      $randomString .= $characters[rand(0, $charactersLength - 1)];
   }
   return $randomString;
   }
   echo generateRandomString();
   }
   ?>

   <br><br>
   <a href="test.php">Go to test page</a>

然后是我的 test.php 页面...

<?php
 session_start();

 if(!isset($_SESSION['sessionKey']))
 {
  echo "cant find unique session key";
 } else {
  echo $_SESSION['sessionKey'];
 }
 ?>

【问题讨论】:

  • 您没有在第 4 行调用函数 generateRandomString;你的 $_SESSION 在第一页是空的。

标签: javascript php session


【解决方案1】:

试试这个代码:

<?php
 session_start();

 $_SESSION['sessionKey'] = $randomString;

 if(!isset($_SESSION['sessionKey']))
 {
 $_SESSION['sessionKey'] = generateRandomString();
 function generateRandomString($length = 64) {
   $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $charactersLength = strlen($characters);
   $randomString = '';
   for ($i = 0; $i < $length; $i++) {
      $randomString .= $characters[rand(0, $charactersLength - 1)];
   }
   return $randomString;
   }
   echo generateRandomString();
   }
   ?>

   <br><br>
   <a href="test.php">Go to test page</a>


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 2010-09-08
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多