Or you could create a session ID based on the date and time, as 
follows...

time-in-digits: func [
        "convert the date and time from 'now' into a string of digits"
        sun-dial [date!] "the current date and time from 'now'"
][
        year: to-string sun-dial/year
        month: to-string sun-dial/month
        if (length? month) < 2 [insert month "0"]
        day: to-string sun-dial/day
        if (length? day) < 2 [insert day "0"]

        current-time: sun-dial/time
        hour: to-string current-time/hour
        if (length? hour) < 2 [insert hour "0"]
        minutes: to-string current-time/minute
        if (length? minutes) < 2 [insert minutes "0"]
        seconds: to-string current-time/second
        if (length? seconds) < 2 [insert seconds "0"]
        
        rejoin [year month day hour minutes seconds]
]

>> file: time-in-digits now
== "20000610224640"
>> file: to-file join file ".sid"
== %20000610224640.sid 

This works fine so long as you do not need to create more than one 
session ID during the same exact second. It also allows you to 
recognize which session IDs were created most recently (they will 
always appear at the tail of the directory.)

BTW: Is there any way to make REBOL output fractions of a second? 
(tenths, hundredths, thousands, etc., of a second.)

-Ryan


>Now comes the tough part. I could not figure an easy way to include 
another
>script to record the data (it can be writing to as many as 45 
different
>lists) since I'm dependant on the person filling in the form deciding
>everything is correct and clicking on a 'continue' button.
>
>My solution? I decided to create a session ID, save the data in a file 
of
>this name, then call the last script and pass the session ID to it. 
Lots of
>good applications for SIDs. This works great and I'm sharing the code 
with
>you folks in hope of some helpful suggestions of making it even 
better. If
>not (it already works fine), well maybe somebody will learn something
>(possibly, even me<g>).
>
>Here's the code:
>---------------------
>
>letter: "abcdefghijklmnopqrstuvwxyz"
>
>random/seed now
>
>l1: pick letter random 26
>l1: join l1 pick letter random 26
>l2: pick letter random 26
>l2: join l2 pick letter random 26
>l3: pick letter random 26
>l3: join l3 pick letter random 26
>l4: pick letter random 26
>l4: join l4 pick letter random 26
>
>file: join l1 random 1000000
>file: join file l2
>file: join file l3
>file: join file random 1000000
>file: join file l4
>file: to-file join file ".sid"   ; do all this to get
>                                 ; a REALLY unique SID
>
>save file data
>
>call: join "/cgi-bin/address3.r" file
>
>print {<a href="}                 ; make a URL of it
>print call
>print {"><B>CONTINUE</B></a>.}    ; clicking on CONTINUE passes info
>
>------------------------------------------
>
>The SID call will look something like
>/cgi-bin/address3.r?wu258907oitg169005zu.sid
>
>The called script reads in the data file name via the system/script/
args
>object, gets the file, and deletes it to avoid cluttering up your 
system. It
>then processes and writes/appends to the proper address file or files.
>
>I'll have the entire thing up where anyone can look at it shortly.
>
>--Ralph Roberts
>
>
>

Reply via email to