Jump to content

PHP 5.2.1 has bugs??


magic2goodil

Recommended Posts

Perhaps now you can concentrate on the fact that I asked a question though

 

Nope, still wondering if you're wearing pants. LOL

 

I'm not running 5.2.1 But I can't imagine them doing a release that didn't properly handle else statements... when they do, I'll have to rethink my "ASP sucks" stance.

 

Link to comment
Share on other sites

Your not the only one I noticed that a few of my else statements were ignored.  I had to make more specific changed to reconize things that were not being caught in 5.2.1 but worked fine in earlier versions.  Not sure if guidelines around the else statement have been changed but apparently there has been some sort of change on how they are handled.

Link to comment
Share on other sites

if ($row[2] == "" || $row[2] == " ") {

echo "<font color=#800000>None</font>" ;

}else{

echo "<font color=#800000>›</font> <a href=\"./\">".$row[2]."</a>" ;

}

 

This use to work just fine before inside a Query from a Database.  Then I had to make changes to it like this to make it work:

 

if(mysql_num_rows($result2) == 0){

echo "<font color=#800000>None</font>" ;

}else{

while($row = mysql_fetch_row($result2)) {

$player_id = $row[0] ;

echo "<font color=#800000>›</font> <a href=\"player_details.php?pid=".$row[0]."&eid=".$eventid."\">".$row[4]." ".$row[5]."</a><br>" ;

  }

}

 

Link to comment
Share on other sites

Those two pieces of code you posted do different things.

 

I did a few tests and can't find any circumstance where php 5.2.1 acts differently from 4.3.10

 

Both versions of php match 0, null and "unset" as being equal to "", which is what normally would happen.

 

Can you show var_dump($row) for the case where that if statement acts differently to what you expect?

 

Link to comment
Share on other sites

Yes hence the first one was what I was building that didn't work. So I had to make something else that checked the humber of rows returned to get what I needed it to do.

 

The orginal else with if (  || ) { wouldn't go to else when that was indeed blank..  even with just the "" validation it still wouldn't..  It would only say "None"

 

The second code that did work I shorten it up where it pulls out all the rows becasue it was not need to expalin the problem.

Link to comment
Share on other sites

I still don't understand the problem.  Checking if $row[2] == "" will succeed (and NOT go to the else branch) in the following cases:

 

1.  $row[2] is ""

2.  $row[2] is 0

3.  $row[2] is '0'

4.  $row[2] is null

5.  $row[2] is not set

6.  $row is not an array

 

And perhaps others I've forgotten.

 

If you want to check for exact equality, rather than the "loose" equality of ==, you should use ===, like this:

 

if ($row[2] === "" || $row[2] === " ") { ...

Link to comment
Share on other sites

I actually have 2 problems.  Last night I tested this class I have been building on 110mb.com and the dates and functions were wayyy off between their version 5.1.6 and my 5.2.1.  This calendar class works almost perfect on my comp, it matches the day of the week perfect to the correct day of the month same as your system calendar looks and also when you click the arrows to change the month it jumps up one month at a time and down one month at a time depending on what is clicked and changes the year correctly too.  On 110mb.com it was so messed up I couldn't get hardly anything working.  Maybe that problem is because of 110mb, who knows?

 

The main problem that I find troubling is the fact that on both 5.1.6 and 5.2.1 this area of my code the else i have highlighted is not executed at all.  I will post the problematic section first, and then post the entire code.  This may well be my error in coding, but as far as I know it seems to be a bug.  Hell I even tried simple commands in these else statements, like echo "i working"; and that wasn't even caught.  Anyways here is the problem:

 

Problematic area:

private function set_mode() {

	//takes in $_SESSION to check for valid Admin
	//if valid Admin, sets $mode to admin
	//else mode stays as user by default.


		if (isset($_SESSION['user']) && isset($_SESSION['pass'])) {


			if($this->validUser($_SESSION['user'],$_SESSION['pass'])) {

				$this->mode = "admin";

				$this->valid = true;

			}

			//***************THIS ELSE NOT BEING READ!!!***********
			else  {

				$this->mode = "user";

				$this->valid = false;

			}



		}



		else if (isset($_POST['user']) && isset($_POST['pass'])) {


			if($this->validUser($_POST['user'],$_POST['pass'])) {

				$this->mode="admin";

				$_SESSION['user'] = $_POST['user'];
				$_SESSION['pass'] = $_POST['pass'];

				$this->valid = true;


			}


			//******THIS ELSE NOT BEING READ!!!********
			else {


				$this->mode="user";

				$this->valid = false;


			}


		}




}

 

Code for entire class:

<?php


session_start();


/****************************************
*					*
* Calendar class created to create a    *
* calendar system for holding events	*
* contained on each specified calendar	*
* day.  Each calendar object can access	*
* mysql database to pull in 		*
* Calendar_Event objects.  Calendar 	*
* class also has funtions designed to	*
* write the calendar to the screen, 	*
* as well as: add, edit, and delete 	*
* Calendar_Events.			*
*					*
* @author:	Josh Robison		*
* @date:	February 18, 2007	*
* @version:	1.0			*
*					*
****************************************/

class Calendar {


private $mode;
private $valid;
public $theDay;
public $theMonth;
public $theYear;
public $login;
public $logout;



public function Calendar($Month,$Year) {

	//constructor.


		$theDay = date("d");
		$theMonth = $Month;
		$theYear = $Year;
		$this->mode = "user";



	$this->set_mode();

	$this->draw($theDay,$theMonth,$theYear);


}



private function set_mode() {

	//takes in $_SESSION to check for valid Admin
	//if valid Admin, sets $mode to admin
	//else mode stays as user by default.


		if (isset($_SESSION['user']) && isset($_SESSION['pass'])) {


			if($this->validUser($_SESSION['user'],$_SESSION['pass'])) {

				$this->mode = "admin";

				$this->valid = true;

			}

			//***************THIS ELSE NOT BEING READ!!!***********
			else  {

				$this->mode = "user";

				$this->valid = false;

			}



		}



		else if (isset($_POST['user']) && isset($_POST['pass'])) {


			if($this->validUser($_POST['user'],$_POST['pass'])) {

				$this->mode="admin";

				$_SESSION['user'] = $_POST['user'];
				$_SESSION['pass'] = $_POST['pass'];

				$this->valid = true;


			}


			//******THIS ELSE NOT BEING READ!!!********
			else {


				$this->mode="user";

				$this->valid = false;


			}


		}




}



private function get_mode() {

	//returns private variable $mode

	return $this->mode;

}




/********************************************************
*							*
* Used to build the calendarArray and prepare it to be	*
* drawn to the screen.  If a day has an event, then the	*
* number of events for that day are added to.		*
*							*
********************************************************/

public function build($myMonth,$myYear) {

	//uses date() to get the day, month, and year.
	//builds a calendar array from this.
	//takes in mysql array from calendar database
	//iterates through new calendar array checking for days 
	//that match.


	$conn = mysql_connect("localhost","root","******") or die(mysql_error());
	$db = mysql_select_db("Calendar") or die(mysql_error());
	$query = "SELECT `Day` FROM `Events` WHERE `Month` = '$myMonth' and `Year` = '$myYear' ORDER BY `Day` ASC";
	$result = mysql_query($query) or die(mysql_error());
	$days_in_month = date('t', strtotime($myYear . '-' . $myMonth)); 
	$calendarArray = array($days_in_month);

		for($i=0;$i<$days_in_month;$i++) {

			$calendarArray[$i] = 0;


		}





	for($i=0;$i<$days_in_month;$i++) {

		$q = $i+1;


		for($z=0;$z<mysql_num_rows($result);$z++) {

			if($q == mysql_result($result, $z)) {


				 $calendarArray[$i]+=1;

			}	

		}

	}  

	return $calendarArray;      

}

/********************************************************
*							*
* Used to draw the calendar system to the screen.  	*		
* Highlights the days with events in green as well as 	*
* makes them links.  If in admin mode, all days without *
* events are highlighted in blue when moved over and 	*
* can be clicked on to add events to them.  The current	*
* day of the week is highlighted in red.		*	
*							*
********************************************************/

public function draw($myDay,$myMonth,$myYear)	{



		if(isset($_GET['login'])) {

			$login = $_GET['login'];

		}

		else {

			$login = false;

		}


		if($login == true) {

			$this->set_mode();

		}




		if(isset($_GET['logout'])) {

			$logout = $_GET['logout'];

		}

		else {

			$logout = false;

		}


		if($logout == true) {

			session_destroy();
			$this->mode = "user";

		}


	$days_in_month = date('t', strtotime($myYear . '-' . $myMonth)); 
	//draws the calendar to the screen

	echo '
	<table width="158" bgcolor="#FFFFFF" style="border: 1px solid #000000;">
  		<tr>

  		<td width="20"><div align="center"><a href="'.$_SERVER["PHP_SELF"].'?mo='. date("F", mktime(0,0,0,date("m", strtotime($myMonth)),"-1",(int)$myYear)) .'&yr='.$this->getPrev($myMonth,$myYear).'"><img src="left_arrow.JPG" border="0"></a></div></td>
    		<td width="20"><div align="center" style="font-size:12px; color: #000000; font-weight: bold;"><strong>'.$myMonth.' ' .$myYear. '</strong></div></td>
	<td width="20"><div align="center"><a href="'.$_SERVER["PHP_SELF"].'?mo='. date("F", mktime(0,0,0,date("m", strtotime($myMonth)),$days_in_month+1,(int)$myYear)).'&yr='.$this->getNext($myMonth,$myYear,$days_in_month).'"><img src="right_arrow.JPG" border="0"></a></div></td>
    
  		</tr>
	</table>

	<table width="158" bgcolor="#000066" style="border: 1px solid #FFFFFF;border-top:0px;">
  		<tr>

    		<td width="20"><div align="center"style=" color: #FFFFFF; font-weight: bold;">S</div></td>
    		<td width="20"><div align="center" style=" color: #FFFFFF; font-weight: bold;">M</div></td>
    		<td width="20"><div align="center" style=" color: #FFFFFF; font-weight: bold;">T</div></td>
    		<td width="20"><div align="center" style=" color: #FFFFFF; font-weight: bold;">W</div></td>
    		<td width="20"><div align="center" style=" color: #FFFFFF; font-weight: bold;">T</div></td>
    		<td width="20"><div align="center"style=" color: #FFFFFF; font-weight: bold;">F</div></td>
    		<td width="20"><div align="center" style=" color: #FFFFFF; font-weight: bold;">S</div></td>

	</tr>
	</table>

	<table width="158" bgcolor="#999999" style="border: 1px solid #000000;border-top:0px;"><tr>';

	$count = 0;

	$calendarArray = $this->build($myMonth,$myYear); //building calendarArray

	//pulling from array and beginning to iterate through it.

	for($i=0;$i<count($calendarArray);$i++) {

		$q = $i+1; //used to get the real day of the week, not the array number

		/****************************************************************
		*								*
		* Checks to see if a week has been drawn to the calendar.  If 	*
		* it has been, then the drawing is bumped down a row to start 	*
		* the next week.						*
		*								*
		****************************************************************/

		if(($count) % 7 == 0 && $count > 0) {

			echo '</tr><tr>';

		}

		/****************************************************************
		*								*
		* Checking to see if this is the first day of the month.  If it	*
		* is, then the day or the week is checked and the appropriate 	*
		* number of days before the correct day are printed out.	*
		*								*		
		****************************************************************/

		if($q == 1) {

			$day = date("D", mktime(0, 0, 0, date("m", strtotime($myMonth)),'1',(int)$myYear));

			switch($day) {

				case "Sun":
				$spaces=0;
				break;

				case "Mon":
				$spaces=1;
				break;

				case "Tue":
				$spaces=2;
				break;

				case "Wed":
				$spaces=3;
				break;

				case "Thu":
				$spaces=4;
				break;

				case "Fri":
				$spaces=5;
				break;

				case "Sat":
				$spaces=6;
				break;

			}

			//writing number of blank days before 1st of month.

			for($z=0;$z<$spaces;$z++) {

				echo '<td width="20"><div align="center">   </div></td>';
				$count++;


			}

		} //done writing spaces



		//ADDING ADMIN FUNCTIONS

		if($this->get_mode() == "admin") {


			//checking to see if there are events for this day, if so write with link and 
			//highlighted green.

			if($calendarArray[$i] != 0) {

				//if day is TODAY, highlight in red

				if((int)date("d") == $q) {

				echo 	'<style type="text/css">
					A:link {text-decoration: none;color:black;}
					A:visited {text-decoration: none;color:black;}
					A:active {text-decoration: none}
					A:hover {color: white;}
					</style>

					<td width="20" style="background: #FF0000;border:1px solid #000000;" onMouseOver="this.style.background = \'blue\';document.all.day'.$q.'.style.color=\'white\';" onMouseOut="this.style.background = \'#0FFF00\';document.all.day'.$q.'.style.color=\'black\';"><div align="center" name="day'.$q.'" style="color: #000000; font-weight:bold;"><a href="getEvent.php?month='.$myMonth.'&day='.$q.'&year='.$myYear.'&num='.$calendarArray[$i].'">'. $q .'</a></div></td>';

				}		


				//else do not highlight

				else {	


				echo 	'<style type="text/css">
					A:link {text-decoration: none;color:black;}
					A:visited {text-decoration: none;color:black;}
					A:active {text-decoration: none}
					A:hover {color: red;}
					</style>

					<td width="20" style="background: #0FFF00;border:1px solid #000000;" onMouseOver="this.style.background = \'blue\';document.all.day'.$q.'.style.color=\'white\';" onMouseOut="this.style.background = \'#0FFF00\';document.all.day'.$q.'.style.color=\'black\';"><div align="center" name="day'.$q.'" style="color: #000000; font-weight:bold;"><a href="getEvent.php?month='.$myMonth.'&day='.$q.'&year='.$myYear.'&num='.$calendarArray[$i].'">'. $q .'</a></div></td>';

				}

				$count++;
			}


			//if no events, then write the day as normal.

			else {

				//if day is TODAY, highlight in red

				if((int)date("d") == $q) {

					echo 	'<td width="20" style="background: #FF0000;border:1px solid #000000;" onMouseOver="this.style.background = \'blue\';document.all.day'.$q.'.style.color=\'white\';"  onMouseOut="this.style.background = \'#FF0000\';document.all.day'.$q.'.style.color=\'black\';" onClick="a = confirm(\'Add Event?\');if(a) { alert(\'Yes\');}"><div align="center" name="day'.$q.'" style="color: #000000; font-weight: bold;">'.$q .'</div></td>';

				}

				//else do not highlight

				else {

					echo 	'<td width="20" style="background: #FFFFFF;border:1px solid #000000;" onMouseOver="this.style.background = \'blue\';document.all.day'.$q.'.style.color=\'white\';"  onMouseOut="this.style.background = \'#FFFFFF\';document.all.day'.$q.'.style.color=\'black\';" onClick="a = confirm(\'Add Event?\');if(a) { alert(\'Yes\');}"><div align="center" name="day'.$q.'" style="color: #000000; font-weight: bold;">'.$q .'</div></td>';

				}


				$count++;

			}





		} //END ADMIN 


		else {
			// NOT ADMIN!!




			//checking to see if there are events for this day, if so write with link and 
			//highlighted green.

			if($calendarArray[$i] != 0) {

				//if day is TODAY, highlight in red

				if((int)date("d") == $q) {

				echo 	'<style type="text/css">
					A:link {text-decoration: none;color:black;}
					A:visited {text-decoration: none;color:black;}
					A:active {text-decoration: none}
					A:hover {color: white;}
					</style>

					<td width="20" style="background: #FF0000;border:1px solid #000000;"><div align="center" name="day'.$q.'" style="color: #000000; font-weight:bold;"><a href="getEvent.php?month='.$myMonth.'&day='.$q.'&year='.$myYear.'&num='.$calendarArray[$i].'">'. $q .'</a></div></td>';

				}		


				//else do not highlight

				else {	


				echo 	'<style type="text/css">
					A:link {text-decoration: none;color:black;}
					A:visited {text-decoration: none;color:black;}
					A:active {text-decoration: none}
					A:hover {color: red;}
					</style>

					<td width="20" style="background: #0FFF00;border:1px solid #000000;"><div align="center" name="day'.$q.'" style="color: #000000; font-weight:bold;"><a href="getEvent.php?month='.$myMonth.'&day='.$q.'&year='.$myYear.'&num='.$calendarArray[$i].'">'. $q .'</a></div></td>';

				}

				$count++;
			}


			//if no events, then write the day as normal.

			else {

				//if day is TODAY, highlight in red

				if((int)date("d") == $q) {

					echo 	'<td width="20" style="background: #FF0000;border:1px solid #000000;"><div align="center" name="day'.$q.'" style="color: #000000; font-weight: bold;">'.$q .'</div></td>';

				}

				//else do not highlight

				else {

					echo 	'<td width="20" style="background: #FFFFFF;border:1px solid #000000;"><div align="center" name="day'.$q.'" style="color: #000000; font-weight: bold;">'.$q .'</div></td>';

				}


				$count++;
			}



		}



	} //end loop through calendarArray


	if($login == "true" && $this->valid == true)  {

			echo 	'</tr>
			<table width="158" bgcolor="#FFFFFF" style="border: 1px solid #000000;border-top:0px;">
			<tr>
			<td>
			<center>
			<a href="'.$_SERVER['PHP_SELF'].'?'.'logout=true'.'">
			<strong>
			<font size="2">Logout?</font>
			</strong>
			</a>
			</center>
			</td>
			</tr>
			</table>
			</table>';

	}


	else if($login == "true" && $this->valid == false) {


			echo 	'</tr>
			<table width="158" bgcolor="#FFFFFF" style="border: 1px solid #000000;border-top:0px;">
			<tr>
			<td>
			<center>
			<strong>
			<font size="1" color="black" face="tahoma">
			<form name="login" action="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'" method="POST">
			<br>Username:  
			<input type="text" name="user" style="border:1px solid #000000;width:85px;font-size:10px;"><br>
			Password:  
			<input type="password" name="pass" style="border:1px solid #000000;width:85px;font-size:10px;"><br><br>
			<input type="submit" name="submit" value="Login" style="border:1px solid #888888;width:85px;font-size:10px;background:#000000;color:#FFFFFF;">
			</font>
			</strong>
			</a>
			</center>
			</td>
			</tr>
			</table>
			</table>';



	}


	else {

			echo 	'</tr>
			<table width="158" bgcolor="#FFFFFF" style="border: 1px solid #000000;border-top:0px;">
			<tr>
			<td>
			<center>
			<a href="'.$_SERVER['PHP_SELF'].'?'.'login=true'.'">
			<strong>
			<font size="2">Admin Login</font>
			</strong>
			</a>
			</center>
			</td>
			</tr>
			</table>
			</table>';

	}


} //end draw




//takes in a username and password and validates whether they are a registered user.

private function validUser($user,$pass) {


	$conn = mysql_connect("localhost","root","******") or die(mysql_error());
	$db = mysql_select_db("admin") or die(mysql_error());
	$query = "SELECT * from `main` where `User` = '$user' and `Pass` = '$pass'";
	$result = mysql_query($query) or die(mysql_error());
	$row = mysql_num_rows($result) or die(mysql_error());


	if($row == 1) {

		mysql_free_result($result);
		mysql_close($conn);

		return true;

	}


	mysql_free_result($result);
	mysql_close($conn);

	return false;
}



//prepares to change year backward if previous month is December

public function getPrev($myMonth,$myYear) {

	if(date("F", mktime(0,0,0,date("m", strtotime($myMonth)),"-1",(int)$myYear)) == "December") {

		$q = (int)($myYear - 1);
		return $q;

	} 


	else {

	return (int)$myYear;

	}


}

//prepares to change year forward if next month is January

public function getNext($myMonth,$myYear,$days_in_month) {

	if(date("F", mktime(0,0,0,date("m", strtotime($myMonth)),$days_in_month+1,(int)$myYear)) == "January") {

		$q = (int)($myYear + 1);
		return $q;

	} 


	else {

	return (int)$myYear;

	}


}




}

?>

Link to comment
Share on other sites

"and i see a few "else if" in your code, its elseif <<< no space, js has the space"

 

PHP works fine with else if.

http://us2.php.net/else%20if

There may be several elseifs within the same if statement. The first elseif expression (if any) that evaluates to TRUE would be executed. In PHP, you can also write 'else if' (in two words) and the behavior would be identical to the one of 'elseif' (in a single word). The syntactic meaning is slightly different (if you're familiar with C, this is the same behavior) but the bottom line is that both would result in exactly the same behavior.

Link to comment
Share on other sites

its not php, its your if statement

 

change this

 

if (isset($_SESSION['user']) && isset($_SESSION['pass']))

 

to this

 

if(1 == 2)

 

and i bet it will fail and see your if statement. let me know

 

You realize that if has nothing to do with why the else is not working inside of it right?  If that if is not validated to true it would merely jump down to the next if, else, or else if in this case and see if it validates to true...if not it goes in the same way until it finds no more ifs, elses, or else ifs with the same precedence as the original if and then it ends the function.  if you look at that original code for this function, the next thing in line to be checked when the first if fails is the else if listed below:

else if (isset($_POST['user']) && isset($_POST['pass'])) {


			if($this->validUser($_POST['user'],$_POST['pass'])) {

				$this->mode="admin";

				$_SESSION['user'] = $_POST['user'];
				$_SESSION['pass'] = $_POST['pass'];

				$this->valid = true;


			}


			//******THIS ELSE NOT BEING READ!!!********
			else {


				$this->mode="user";

				$this->valid = false;


			}


		}

 

I am not beyond admitting MAYBE i have a syntactical error here somewhere, but to my knowledge i have yet to find it.  The logic behind this function is:

 

IF THE SESSION VARIABLES USER AND PASS ARE SET THEN GOTO INNER IF

 

      IF SESSION USER AND PASS ARE VALID COMBINATION IN MY MYSQL DB CHECKED VIA VALIDUSER()                                 

      THEN SET PRIVATE VARIABLE MODE TO ADMIN

 

      ELSE(MEANING ABOVE INNER IF WAS FALSE) SET PRIVATE VARIABLE MODE TO USER

 

ELSE IF POST VARIABLES USER AND PASS ARE SET (MEANING THE ADMIN LOGIN WAS ATTEMPTED AND SUBMITTED BACK TO THIS PAGE AS POST VARIABLES AND MEANING ABOVE OUTER IF WAS FALSE) THEN GOTO INNER IF

 

      IF POST USER AND PASS ARE VALID COMBINATION IN MY MYSQL DB CHECKED VIA

      VALIDUSER()                                  THEN SET PRIVATE VARIABLE MODE TO ADMIN AND SESSION USER AND PASS ARE SET

      TO POST USER AND PASS

 

      ELSE(MEANING ABOVE INNER IF WAS FALSE) SET PRIVATE VARIABLE MODE TO USER

 

 

 

 

Link to comment
Share on other sites

Maybe you need to simplify it and get it to work with the basics, then add more complex stuff.

 

<?php

session_start();

if(isset($_GET['x'])){

print 'GET x is set!';

}

 

if(isset($_SESSION['x'])){

print 'SESSION x is set';

}

 

$_SESSION['x'] = 'foo';

print '<a href="'.$_SERVER['PHP_SELF'].'">Refresh!</a>';

Link to comment
Share on other sites

Stuff like that works fine.

 

It's just these 2 areas that are giving me problems and I don't know why.

 

jesirose you are one of the best coders on here, do you see in my code any reason why it should be ignoring my else statements when the ifs evaluate to false in the problem areas i listed??

Link to comment
Share on other sites

yea.

 

if the session user and pass are set, then the inner if checks to see if they are valid, and if theya re it evaluates true and sets the mode to admin, same as if the post ones are set and valid then it sets the session user and pass to true and the mode to admin correctly. 

 

This is why I am so damned confused. Sorry if I am being rude, I have jsut tried everything I can think of and  I have done ALOT of C programming from when I worked with Java at college and now with PHP, and everything is telling me that those inner elses should be executed correctly at some point.

Link to comment
Share on other sites

Eh I tried that too, but for s&g i tried it again to double check and it still didn't change anything :(

 

5.1.6 on www.110mb.com did the same thing.

 

An example of what I am working on is found at: http://geoknight.110mb.com/test.php  although 110mb totally messed up my 2 buttons so don't bother with them, lol 

 

user name is j

password is j

 

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.