Is eventlist constant for the application? If so put it in the model or if in a module use local_import. Then all you need in session is the current index into the array the user is at.
If eventlist changes then there is no code showing how it is manipulated so it difficult to help. I would also believe that a variable eventlist would be difficult to debug. On the redirect call above I am not sure why you are converting session.eventlist[tmp] to an int. It might be converted back to a str by the URL function but for sure it ultimately ends up as part of a larger string to form the full URL. Finally are users opening the application more than once from the same client PC? If so the same browser tabs/windows will all use the same session. Also not sure if this is a problem but are the users behind a NAT box (typical of small office and home routers) and the server is elsewhere because this will put all the PCs behind the NAT at the same client IP which I believe causes sessions to be shared.

