}
if (isset($_COOKIE["logsession"])) {
    $session = $_COOKIE["logsession"];
}
$request = substr($_SERVER["REQUEST_URI"], strpos($_SERVER["REQUEST_URI"], ".php") + 5);
$request = explode("/", $request);
$action = $request[0];
if (isset($request[1])) {
    $parameter = $request[1];
} else {
    $action = "";
}
// mangled QR code, clear action
switch ($action) {
    case "rent":
        logrequest($userid, $action);
        checksession();
        $bikeno = $parameter;
        checkbikeno($bikeno);
        rent($userid, $bikeno);
        break;
    case "return":
        logrequest($userid, $action);
        checksession();
        $stand = $parameter;
        checkstandname($stand);
        returnbike($userid, $stand);
        break;
    default:
        unrecognizedqrcode($userid);
}
     $bikenum = trim($_GET["bikeno"]);
     checkbikeno($bikenum);
     rentbike($userid, $bikenum);
     break;
 case "return":
     logrequest($userid, $action);
     checksession();
     $bikenum = trim($_GET["bikeno"]);
     $stand = trim($_GET["stand"]);
     $note = "";
     if (isset($_GET["note"])) {
         $note = trim($_GET["note"]);
     }
     checkbikeno($bikenum);
     checkstandname($stand);
     returnbike($userid, $bikenum, $stand, $note);
     break;
 case "validatecoupon":
     logrequest($userid, $action);
     checksession();
     $coupon = trim($_GET["coupon"]);
     validatecoupon($userid, $coupon);
     break;
 case "forcerent":
     logrequest($userid, $action);
     checksession();
     checkprivileges($userid);
     $bikenum = trim($_GET["bikeno"]);
     checkbikeno($bikenum);
     rent($userid, $bikenum, TRUE);
     break;
     checkUserPrivileges($sms->Number());
     validateReceivedSMS($sms->Number(), count($args), 2, _('with bike number:') . " FORCERENT 47");
     rentbike($sms->Number(), $args[1], TRUE);
     break;
 case "FORCERETURN":
     checkUserPrivileges($sms->Number());
     validateReceivedSMS($sms->Number(), count($args), 3, _('with bike number and stand name:') . " FORCERETURN 47 RACKO");
     /*
     if (!preg_match("/return[\s,\.]+[0-9]+[\s,\.]+[a-zA-Z0-9]+[\s,\.]+(.*)/i",$message ,$matches))
        {
        $userNote="";
        }
     else $userNote=$db->conn->real_escape_string(trim($matches[1]));
     pass note only or empty string if no note sent
     */
     returnbike($sms->Number(), $args[1], $args[2], trim(urldecode($sms->Text())), TRUE);
     break;
 case "WHERE":
 case "WHO":
     validateReceivedSMS($sms->Number(), count($args), 2, _('with bike number:') . " WHERE 47");
     where($sms->Number(), $args[1]);
     break;
 case "INFO":
     validateReceivedSMS($sms->Number(), count($args), 2, _('with stand name:') . " INFO RACKO");
     info($sms->Number(), $args[1]);
     break;
 case "NOTE":
     validateReceivedSMS($sms->Number(), count($args), 2, _('with bike number/stand name and problem description:') . " NOTE 47 " . _('Flat tire on front wheel'));
     note($sms->Number(), $args[1], trim(urldecode($sms->Text())));
     break;
 case "TAG":