It is possible that because John's version has the timeout set to 60 minutes, the security check is failing after the game. An hour is a long time, though, so that might not be it. You could try increasing that value just for kicks.
Another option is to change where the calls to show_nopermission() are being made to see if that affects it. I use the following nopermission code:
PHP Code:
// access check
switch($action) {
case "leaderboard":
break;
case "play":
case "reg":
if (($bbuserinfo[usergroupid] != 2) and
($bbuserinfo[usergroupid] != 5) and
($bbuserinfo[usergroupid] != 6) and
($bbuserinfo[usergroupid] != 7)) {
show_nopermission();
}
break;
default:
if (($bbuserinfo[usergroupid] != 2) and
($bbuserinfo[usergroupid] != 5) and
($bbuserinfo[usergroupid] != 6) and
($bbuserinfo[usergroupid] != 7)) {
show_nopermission();
}
$action = "play";
break;
}
That code is near the top of the file and is only executed once. There are no further permission checks (aside from security stuff) and it seems to work great.
However, since I have moved pretty far away from the original hack, I wouldn't recommend trying that code out unless you know what you're doing. I don't want to screw anybody's thing up!