:: Visual Transport Modeller ::

:: Navigation
:: Purchase Visual Transport Modeller or 2001 Census Matrix Tools















*
denotes a required field.

To complete the online purchase you will be taken to WorldPay our secure payment provider.
From there your payment will be taken and you will be transferred back to the visual-transport-modeller.com website where you may download the software.

Please check the package you require and click the Buy button to proceed, you may be required to complete additional detials for your payment to be processed sucessfully.



£ including VAT






", "(", ")", "%", "?", "<", ">"); // Strip invalid chars (replace with " ") foreach ($invalidChars as $invalidChar) { $email = str_replace("$invalidChar", " ", $email); } // Check for multiple addresses $emails = split(" ", $email); if ($emails[0] != $email) { $error .= "Multiple addresses found:
"; foreach ($emails as $Memail) {$error .= "$Memail
"; } } else { $OK ="single address found
"; } // Seperate username & domain $emailParts = split("@", $email); if(is_array($emailParts) && count($emailParts)>1) { if (count($emailParts) != 2) { $error .= "Malformed email address: too many parts ($email = ". count($emailParts) ." parts)
"; } if (!isset($emailParts[0]) || !preg_match("/^[a-zA-Z0-9\.\-\_]+$/", $emailParts[0])) {$error .= "Invalid Email address: $emailParts[0]
";} else { $OK .= "user: $emailParts[0]
";} if (!isset($emailParts[1]) || !preg_match("/^[a-zA-Z0-9\.\-]+$/", $emailParts[1])) { $error .= "Invalid domain: $emailParts[1]
"; } else { exec("dig $emailParts[1] mx | grep -C1 ANSWER | grep MX", $mxLookup); if ($mxLookup[0] != "") { $OK .= "domain ok: $emailParts[1]
($mxLookup[0])
"; } else { $error .= "domain cannot receive mail: $emailParts[1]
"; } } } if ($error!='') { print ''; return 0; } else { return 1; } } ?>