Home > Enterprise >  How to set generated string as a unique session key?
How to set generated string as a unique session key?

Time:11-21

I have a website that creates a session when a user logs in, but the sessions are just the email & username, which works fine for customers that create an account, but I want to generate a unique session key for users that dont want to signup/login, the reason is because currently if a user is not logged in and they add an item to the checkout page, the item will be visible to every customer who is not logged in, so I would like to create a session based on a unique string so that there are no conflicts for customers who dont want to signup/sign-in.

The problem is that when I redirect to the test.php page it cant find the session key.

Here is my session file that generates the unique key..

<?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>

and then my test.php page...

<?php
 session_start();

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

CodePudding user response:

This will keep the unique session even you visit the first page again.

session_start();

 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 $_SESSION['sessionKey'];

CodePudding user response:

try this code:

<?php
    session_start();

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

    if(!isset($_SESSION['sessionKey']))
    {
        $_SESSION['sessionKey'] = generateRandomString();
        echo $_SESSION['sessionKey'];
    }

   ?>

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

  • Related