+
+ function get_location () {
+ # This determines the location to forward to relative
+ # to your server. If this doesnt work correctly for
+ # you (although it should), you can remove all this
+ # code except the last two lines, and change the header()
+ # function to look something like this, customized to
+ # the location of SquirrelMail on your server:
+ #
+ # http://www.myhost.com/squirrelmail/src/login.php
+
+ global $PHP_SELF, $SERVER_NAME, $HTTPS, $HTTP_HOST;
+
+ // Get the path
+ $path = substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'));
+
+ // Check if this is a HTTPS or regular HTTP request
+ $proto = "http://";
+ if(isset($HTTPS) && $HTTPS == 'on' ) {
+ $proto = "https://";
+ }
+
+ // Get the hostname from the Host header or server config.
+ // Fallback is to omit the server name and use a relative URI,
+ // although this is not RFC 2616 compliant.
+ if(isset($HTTP_HOST) && !empty($HTTP_HOST)) {
+ $location = $proto . $HTTP_HOST . $path;
+ } else if(isset($SERVER_NAME) && !empty($SERVER_NAME)) {
+ $location = $proto . $SERVER_NAME . $path;
+ } else {
+ $location = $path;
+ }
+ return $location;
+ }
+
+ function sqStripSlashes($string) {
+ if (get_magic_quotes_gpc()) {
+ $string = stripslashes($string);
+ }
+ return $string;
+ }
+
+
+ // These functions are used to encrypt the passowrd before it is
+ // stored in a cookie.
+ function OneTimePadEncrypt ($string, $pad) {
+ for ($i = 0; $i < strlen ($string); $i++) {
+ $encrypted .= chr (ord($string[$i]) ^ ord($pad[$i]));
+ }
+
+ return base64_encode($encrypted);
+ }
+
+ function OneTimePadDecrypt ($string, $pad) {
+ $encrypted = base64_decode ($string);
+
+ for ($i = 0; $i < strlen ($encrypted); $i++) {
+ $decrypted .= chr (ord($encrypted[$i]) ^ ord($pad[$i]));
+ }
+
+ return $decrypted;
+ }
+
+ function OneTimePadCreate ($length=100) {
+ srand ((double) microtime() * 1000000);
+
+ for ($i = 0; $i < $length; $i++) {
+ $pad .= chr(rand(0,255));
+ }
+
+ return $pad;
+ }
+