Passing PHP variables to an included file?

include, php, variables

Solution

Variables do propagate to the included files, so it must be, that the variable is NOT set when you call the include: try checking if so, then figure out why is the variable not set at that point.

For example, if you defined $logged inside the "if" block or inside a function, then it won't propagate outside of it: you must define it in the outermost scope (at the same level at which you call the include statement). And you must define it for the case that the user is not logged in, not only for the case when the user is logged in. If the variable is not initialized to false, the check if(!$logged) will issue warning. Say $logged = false; at the beginning of your work.

Problem

This should work, so I'm really perplexed about why it's not working. I'm checking to see if a user is logged in using a $session class method at the top of each admin page. However, I want to dynamically adjust the header file depending on whether a user is logged in, and on what role level that user has. So I check `$session->is_logged_in()` and then I went ahead and defined a variable called `$logged = true`; to use later. I then use a `$user->find_by_id($session->id)` method to create a new User object and store `$user->role_level` in a new var called `$role_level` for easy use. This is all happening near the top of the page. Further down the page past form processing, etc., is the `include("../_layouts/header.php")` command. Then, in the header.php file, I use little checks like `if(!$logged) { ... } else { ... }`. However... I am getting the following errors: ``` Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 119 Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 131 Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 138 ``` How can this be? I'm defining the vars in the file before I include header.php! Shouldn't that work? FYI, everything was working fine until I tried to use `$logged` in the header.php file.

Original source