Adding security to a Joomla 3.1 template using JEXEC

Before we get into styling our Joomla 3.0 template, we will add the last piece of PHP code that we need, which is the checking of JEXEC variable.

The concept of defining JEXEC hasn’t changed since Joomla 2.5. Simply put, JEXEC is a variable defined in your php files that prevents users on the web from accessing those files directly. Technically they can access your template’s index.php file through their browser, but execution of the file will end immediately because JEXEC is not defined within the template. If you don’t understand the technical reasons as to how this works, it’s not a big concern, but just make sure you have the code in place.

Use of JEXEC in Joomla 2.5 vs. Joomla 3.0

The following is how JEXEC is using in Joomla 2.5 vs. Joomla 3.0

JEXEC in Joomla 2.5JEXEC in Joomla 3.0
defined('_JEXEC') or die;
defined('_JEXEC') or die;

As you can see, the use of JEXEC in the latest two versions of Joomla has not changed.

Adding JEXEC to a Joomla 3.0 Template

To incorporate JEXEC into the Joomla 3.0 Template that we are creating, we will simply add the necessary one line of code to the top of our index.php file. Before you can see the before and after of the top portion of the template’s index.php file.

Before

<?php

$doc = JFactory::getDocument();

$doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap.min.css');
$doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap-responsive.css');
$doc->addStyleSheet('templates/' . $this->template . '/css/style.css');
$doc->addScript('/templates/' . $this->template . '/js/main.js', 'text/javascript');

?>

After

<?php


defined('_JEXEC') or die;


$doc = JFactory::getDocument();

$doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap.min.css');
$doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap-responsive.css');
$doc->addStyleSheet('templates/' . $this->template . '/css/style.css');
$doc->addScript('/templates/' . $this->template . '/js/main.js', 'text/javascript');

?>

Was this article helpful? Join the conversation!