///////////////////////////////////////
// sanitize.inc.php
// Sanitization functions for PHP
// by: Gavin Zuchlinski, Jamie Pratt, Hokkaido
// webpage: http://libox.net
// Last modified: September 27, 2003
//
// Many thanks to those on the webappsec list for helping me improve these functions
///////////////////////////////////////
// Function list:
// sanitize_paranoid_string($string) -- input string, returns string stripped of all non
// alphanumeric
// sanitize_system_string($string) -- input string, returns string stripped of special
// characters
// sanitize_sql_string($string) -- input string, returns string with slashed out quotes
// sanitize_html_string($string) -- input string, returns string with html replacements
// for special characters
// sanitize_int($integer) -- input integer, returns ONLY the integer (no extraneous
// characters
// sanitize_float($float) -- input float, returns ONLY the float (no extraneous
// characters)
// sanitize($input, $flags) -- input any variable, performs sanitization
// functions specified in flags. flags can be bitwise
// combination of PARANOID, SQL, SYSTEM, HTML, INT, FLOAT, LDAP,
// UTF8
///////////////////////////////////////
define("PARANOID", 1);
define("SQL", 2);
define("SYSTEM", 4);
define("HTML", 8);
define("INT", 16);
define("FLOAT", 32);
define("LDAP", 64);
define("UTF8", 128);
// internal function for utf8 decoding
// thanks to Jamie Pratt for noticing that PHP's function is a little
// screwy
function my_utf8_decode($string)
{
return strtr($string,
"???????¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ",
"SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
}
// paranoid sanitization -- only let the alphanumeric set through
function sanitize_paranoid_string($string, $min='', $max='')
{
$string = preg_replace("/[^a-zA-Z0-9]/", "", $string);
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return $string;
}
// sanitize a string in prep for passing a single argument to system() (or similar)
function sanitize_system_string($string, $min='', $max='')
{
$pattern = '/(;|\||`|>|<|&|^|"|'."\n|\r|'".'|{|}|[|]|\)|\()/i'; // no piping, passing possible environment variables ($),
// seperate commands, nested execution, file redirection,
// background processing, special commands (backspace, etc.), quotes
// newlines, or some other special characters
$string = preg_replace($pattern, '', $string);
$string = '"'.preg_replace('/\$/', '\\\$', $string).'"'; //make sure this is only interpretted as ONE argument
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return $string;
}
// sanitize a string for SQL input (simple slash out quotes and slashes)
function sanitize_sql_string($string, $min='', $max='')
{
$pattern[0] = '/(\\\\)/';
$pattern[1] = "/\"/";
$pattern[2] = "/'/";
$replacement[0] = '\\\\\\';
$replacement[1] = '\"';
$replacement[2] = "\\'";
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return preg_replace($pattern, $replacement, $string);
}
// sanitize a string for SQL input (simple slash out quotes and slashes)
function sanitize_ldap_string($string, $min='', $max='')
{
$pattern = '/(\)|\(|\||&)/';
$len = strlen($string);
if((($min != '') && ($len < $min)) || (($max != '') && ($len > $max)))
return FALSE;
return preg_replace($pattern, '', $string);
}
// sanitize a string for HTML (make sure nothing gets interpretted!)
function sanitize_html_string($string)
{
$pattern[0] = '/\&/';
$pattern[1] = '/';
$pattern[2] = "/>/";
$pattern[3] = '/\n/';
$pattern[4] = '/"/';
$pattern[5] = "/'/";
$pattern[6] = "/%/";
$pattern[7] = '/\(/';
$pattern[8] = '/\)/';
$pattern[9] = '/\+/';
$pattern[10] = '/-/';
$replacement[0] = '&';
$replacement[1] = '<';
$replacement[2] = '>';
$replacement[3] = ' ';
$replacement[4] = '"';
$replacement[5] = ''';
$replacement[6] = '%';
$replacement[7] = '(';
$replacement[8] = ')';
$replacement[9] = '+';
$replacement[10] = '-';
return preg_replace($pattern, $replacement, $string);
}
// make int int!
function sanitize_int($integer, $min='', $max='')
{
$int = intval($integer);
if((($min != '') && ($int < $min)) || (($max != '') && ($int > $max)))
return FALSE;
return $int;
}
// make float float!
function sanitize_float($float, $min='', $max='')
{
$float = floatval($float);
if((($min != '') && ($float < $min)) || (($max != '') && ($float > $max)))
return FALSE;
return $float;
}
// glue together all the other functions
function sanitize($input, $flags, $min='', $max='')
{
if($flags & UTF8) $input = my_utf8_decode($input);
if($flags & PARANOID) $input = sanitize_paranoid_string($input, $min, $max);
if($flags & INT) $input = sanitize_int($input, $min, $max);
if($flags & FLOAT) $input = sanitize_float($input, $min, $max);
if($flags & HTML) $input = sanitize_html_string($input, $min, $max);
if($flags & SQL) $input = sanitize_sql_string($input, $min, $max);
if($flags & LDAP) $input = sanitize_ldap_string($input, $min, $max);
if($flags & SYSTEM) $input = sanitize_system_string($input, $min, $max);
return $input;
}
?>
// if targeted outside of index.php, kill it
if (!defined('IS_SCRIPT')) {
header('HTTP/1.0 403 Forbidden');
exit;
}
/**
* Description: E-Mail encoder to reduce spam.
*
* @author Micke Johansson
*
* $mail. The e-mail address to encode.
* $isLink. Set to true to create a link.
* $display. What will be displayed in the browser. If omitted it will display the e-mail address.
*
* @param string $mail
* @param bool $isLink
* @param string $display
* @return string Encoded e-mail or e-mail link
*/
function EncodeMail($mail, $isLink = false, $display = '')
{
$domain = substr($mail,strpos($mail, '@')+1);
$name = substr($mail,0, strpos($mail, '@'));
$encodedDomain = 'ladyslipperscenicbyway.org';
$encodedName = 'info';
$encodedDisplay = '';
for ($i=0; $i < strlen($domain); $i++)
{
$encodedDomain .= ''.ord(substr($domain,$i)).';';
}
for ($i=0; $i < strlen($name); $i++)
{
$encodedName .= ''.ord(substr($name,$i)).';';
}
for ($i=0; $i < strlen($display); $i++)
{
$encodedDisplay .= ''.ord(substr($display,$i)).';';
}
$script = "";
return $script;
}
?>
Lady Slipper Scenic Byway - Home
Home
Lady Slipper Scenic Byway goes “over the river and through the woods,” just like the song says. The river is the Mississippi River, where it passes out of Cass Lake as a wilderness stream, close to the beginning of its long journey. The woods are the pines, aspen and birches of the Chippewa National Forest, which covers a wide expanse of north central Minnesota. This rustic route is one of the 22 Minnesota Scenic Byways.
The byway itself is a 28-mile drive that follows County Road 39 between the small, north woods town of Blackduck and Highway 2 east of the town of Cass Lake. The largest nearby city is Bemidji, about 20 miles west of the byway.
Along with scenic views of the forest, the Lady Slipper Scenic Byway brings you to beaches, trails and an interesting piece of our country’s history. This byway was recently renamed in honor of the state flower, the showy lady’s slipper. These lovely orchids, with pink pouches and white petals, grow in abundance along the byway’s roadsides in late June, especially just north of Pennington. All summer, watch for eagles, ducks, herons and pelicans near the rivers and lakes the byway passes. Also be sure to take the time to stop and listen for the haunting call of loons, which will be found on most of the area lakes.