Please refer to the reference Christopher posted on server routers. The router is executed before your script is executed. The same way if you were executing: php test.php. Basically your code was executing twice, once as a router without the r param and once via the browser with the r param. The router was the one throwing the error. On Wed, Dec 25, 2013 at 4:00 AM, atar <atar.yosef@xxxxxxxxx> wrote: > Aziz Saleh wrote: > > On Tue, Dec 24, 2013 at 9:51 PM, atar <atar.yosef@xxxxxxxxx> wrote: >> >> At Christoph Michael Becker: >>> >>> Thanks you for your advice! it solved the problem. >>> But I didn't succeed to understand HOW the action of dropping the script >>> argument from the command line was worked? why does PHP complain about >>> the >>> undefined $_GET['r'] variable when the test.php script is used as router? >>> >>> Regards, >>> >>> atar. >>> >>> >>> -- >>> PHP General Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >>> In PHP, when you try to access a variable and that variable doesn't >> exist, >> it throws a notice. In your case the router.php was executed with no r GET >> param, causing the notice. >> >> You can duplicate that by accessing: http://127.0.0.1:8000/test.php(notice >> the r GET param is not set). >> >> As a good practice you should always use isset() before trying to access a >> param that might not be set: >> >> if (isset($_GET['r'])) { >> // use it >> } >> > > But why when I use the 'test.php' script as a router, the $_GET['r'] index > isn't get defined? that's what wonder me. >