The way I define variables in my script is like so:
$exists = (isset($_GET['exists']) ? $_GET['exists'] : FALSE);
This way, I can do three things:
I'll thereafter use $exists, which I know is going to be defined one way or the other - no more notices.
I can specify the default value (FALSE, NULL, 0, empty string, whatever is most applicable for that variable).
I can do some transformation on the user-provided value (ex. verifying the value is of the correct type).
To illustrate points 2 and 3, when I have ID's in the URL that I might possibly use in a SQL query later, I might do this:
$id = (!empty($_GET['id']) ? (int)$_GET['id'] : 0);
In the code snippets above, I'm using the ternary syntax for brevity; the code could also be written as:
if(!empty($_GET['id']))
$id = (int)$_GET['id'];
else
$id = 0;
For more information on the ternary operator, see this link.