Heyz,

Ik ben met een groot script bezig , die enkele includes bevat ..

Als je echter direct naar het include bestand gaat krijg je mysql errors te zien ( omdat die bestanden geen "include" naar de database connectie bevatten)

Mijn simpele vraag is:

Hoe kan ik ervoor zorgen dat als "iemand" het include file direct uitvoert , dat hij/zij een mooi error bericht krijgt ( zoiets als , Dit bestand dient niet "direct" te worden uitgevoerd)
Gevonden op nl.php.net:

If you want to prevent direct access to some files and only allow them to be used as include files by other scripts, then an easy way to accomplish that is to check a define in the include file.

Like this.

includefile.php
---
<?php
defined('_VALID_INCLUDE') or die('Direct access not allowed.');

/* rest of file */

?>

script.php
---
<?php
define('_VALID_INCLUDE', TRUE);
include('includefile.php');

/* rest of file */

?>
Je kunt bijvoorbeeld checken of er een MySQL connectie is en anders een melding geven.

Of makkelijker: kijk naar PHP_SELF. Indien dit dus de include-file zelf is, dan moet er een foutmelding komen.
Doe eerst die van "san" , en als dat niet helemaal werkt ga ik "php_self" proberen :D

thanx,
Als aanvulling op PHPErik:

<?php
if( basename($_SERVER['PHP_SELF']) == basename(__FILE__) )
{
die('File mag niet direct worden aangeroepen.');
}
?>

PHP_SELF bevat de locatie van het script, terwijl de constante __FILE__ de naam van het bestand bevat, als je dit in je te includen bestand zet kan het niet direct worden aangeroepen.

Reageren