Hash cookies that persist for the duration of a session

Questions related to using nuBuilder Forte.

Hash cookies that persist for the duration of a session

Unread postby nac » Thu Nov 26, 2020 6:08 am

In the current version of nuBuilder, most hash cookies are transient as they are retrieved as form properties. I have often thought that it would be useful to have a hash cookie that is set once, e.g. on the landing page, and then is available in every form, report and PHP procedure.

There are some which are always available (see https://wiki.nubuilder.net/nubuilderforte/index.php/Hash_Cookies). These values (USER_ID, USER_GROUP_ID, HOME_ID, GLOBAL_ACCESS, ACCESS_LEVEL_CODE) are extracted from zzzzsys_session.sss_access. This arrangement provides a model for session-persistent values which are stored in and retrieved from the zzzzsys_session table.

One way of doing this

Add a new text column in zzzzsys_session (let's call it sss_hashcookies). This would be the same column type as sss_access and be used to store hash cookie key/value pairs in JSON format.

There are at least two ways that this value could be set on the client-side (JS).

A. Modify nuSetProperty(string1, string2) to nuSetProperty(string1, string2, boolean3) where boolean3 is an optional parameter with a default value of false. If it is set true then the property will be stored in zzzzsys_session.sss_hashcookies as well as setting the form property. If false, the behaviour remains the same as the existing function. It would be necessary to define precedence if the same property name is used in multiple calls to the function which switches the value of boolean3. For example, if a new temporary property is set and it has the same name as a key in zzzzsys_session.sss_hashcookies, then the key/value pair in sss_hashcookies is removed or is just overridden (see the modified nuReplaceHashVariables($s) below). In practice, this should not be a problem as it is up to the developer to define their own naming conventions to avoid potential clashes. The function nuGetProperty(string1) would also need to be modified to retrieve session-persistent hash cookies.

B. Define a new function (e.g. nuSetSessionProperty(string1, string2) ) to set the values in zzzzsys_session.sss_hashcookies. This would also need an equivalent nuGetSessionProperty(string1).

Both of these JS functions would send/receive data to PHP functions that would access zzzzsys_session.sss_hashcookies . The existing PHP functions nuSetJSONData($i, $nj) and nuGetJSONData($i) provide templates for storing and retrieving the session hash cookies.
In nucommon.php , the function nuReplaceHashVariables($s) could be modified so that the $a array includes the contents of zzzzsys_session.sss_hashcookies in addition to the contents of $_POST['nuHash']. Perhaps something like this, below - this code has not been tested, BTW.


Code: Select all
function nuReplaceHashVariables($s){

   $s   = trim($s);
   if($s == ''){
     return '';
   }

   $q   = "SELECT * FROM zzzzsys_session WHERE zzzzsys_session_id = ? ";
   $t   =  nuRunQuery($q, array($_SESSION['nubuilder_session_data']['SESSION_ID']));         
   $r   = db_fetch_object($t);
   $j   = json_decode($r->sss_hashcookies, true);

   $a    = array_merge($j, $_POST['nuHash']);

   if (!is_array($a)) {
      return $s;
   }
   foreach ($a as $k => $v) {
      if(!is_object ($a[$k])) {
         $s   = str_replace ('#' . $k . '#', $v, $s);
      }
   }
   return $s;
}


I would welcome any feedback on the usefulness, practicalities and wisdom of this as well as better ways to implement such a feature.

Thanks

Neil
nac
 
Posts: 65
Joined: Wed Dec 13, 2017 7:58 am
Location: Aberdeen, UK

Re: Hash cookies that persist for the duration of a session

Unread postby kev1n » Sat Nov 28, 2020 11:05 pm

Steven,

What are your thoughts on this? Do you think this is feasible?
If you like nuBuilder, please leave a review on SourceForge

nuBuilder Code Library (85)
Installation Guides
Updating nuBuilder

Join Discord to talk about nuBuilder!
kev1n
nuBuilder Team
 
Posts: 1357
Joined: Mon Oct 15, 2018 2:13 am
nuBuilder Version: 4.5

Re: Hash cookies that persist for the duration of a session

Unread postby kev1n » Fri Dec 11, 2020 5:44 pm

FYI, the global hash cookies will soon be incorporated into nuBuilder.
If you like nuBuilder, please leave a review on SourceForge

nuBuilder Code Library (85)
Installation Guides
Updating nuBuilder

Join Discord to talk about nuBuilder!
kev1n
nuBuilder Team
 
Posts: 1357
Joined: Mon Oct 15, 2018 2:13 am
nuBuilder Version: 4.5

Re: Hash cookies that persist for the duration of a session

Unread postby nac » Fri Dec 11, 2020 9:10 pm

Thanks kev1n.

That is good news. I look forward to it.

Neil
nac
 
Posts: 65
Joined: Wed Dec 13, 2017 7:58 am
Location: Aberdeen, UK


Return to General

Who is online

Users browsing this forum: No registered users and 15 guests

cron