So I work on a website and to make things easier I made specific files for every task (like: for the top menu I made menu.php) and then require(); them in the main files. All is good but I tried accessing in the browser /include/menu.php and it shows up. I don't want people to access them whenever they want, I just want to require them and to be available only through the main file.
            Asked
            
        
        
            Active
            
        
            Viewed 41 times
        
    -1
            
            
        - 
                    Take a look at htaccess – Simian Aug 07 '16 at 20:29
 - 
                    Welcome to Stack Overflow! It seems you have a problem with your code. However, we can't help unless we have [code or information that can reproduce the problem](//stackoverflow.com/help/mcve). Otherwise, we are just blindly guessing. – Blue Aug 07 '16 at 20:35
 
1 Answers
1
            The easiest way to prevent other php files from being accessed, is to define a variable in the main script:
define('IN_APPLICATION', true);
In all of your other files, simply add:
if ( !defined('IN_APPLICATION') )
    die('You cannot access this file directly.');
An alternative way is to use an .htaccess file. If your server is running apache, this is all you will need. Simply put this file in your /includes directory.
- 
                    Oh I didn't think about that. I simply made an $onSamePage = 1; variable on the main page and check if it's true on the included one. – Vlad Aug 07 '16 at 20:47