Did you know that you could use condition statements in Server Side Includes? If not read this article to read about this useful and somewhat unknown feature.
While many of you are familiar with SSI (Server Side Includes) and its tremendous usefulness as a server feature, did you know that the technology supports conditions? Imagine being able to give your SSI code logic, so it executes different commands, depending on variables such as browser type, time of day, referring URL, and whatever else can be accessed and compared in Perl. Something like that would be nothing less than revolutionary, and fortunately, possible!
SSI are "codes" you place on your page that the server picks up and executes. The most common use of SSI is to include a file on the page:
<!--#include file="afile.htm" -->
The above command will cause the file "afile.htm" to be inserted and displayed, as if it were manually added to the page.
Adding Condition to the Mix
This is what we're here for- to learn how to supply SSI with a little intelligence. Time to unveil the four flow-control statements of Server Side Includes:
<!--#if expr="expression"-->
<!--#elif expr="expression"-->
<!--#else-->
<!--#endif-->
They work as you would expect with any if/else statements. In JavaScript, the above would be equivalent in logic to "if", "else if", and "else", respectively. The last command is an odd ball; it serves no particular purpose except that's it's needed at the end of each conditional SSI definition. Take a look at the following example, which embeds two different files onto the page, depending on whether the user is using Internet Explorer or not:
<!--#if expr="${HTTP_USER_AGENT} = /MSIE/" -->
<!--#include file="iebar.htm" -->
<!--#else -->
<!--#include file="defaultbar.htm" -->
<!--#endif -->
Got your attention now, didn't I? By using conditional SSI, with the environmental variable HTTP_USER_AGENT as the condition to test for, the above example allows us to display browser specific content in such a versatile way that no client side language (such as JavaScript) can match. It's SSI with a brain baby!
Taking things one step further
Let's now build on what we have so far, and create a more refined example that discriminates not only between browser type, but browser version as well. How about a SSI code that differentiates between IE 4, NS 4, and neither?
<!--#if expr="${HTTP_USER_AGENT} = /MSIE [4-9]/"-->
You are using IE 4 or above<BR>
<!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/[4-9]/"-->
You are using Netscape 4 or above<BR>
<!--#else -->
You are using something other than IE 4+ or NS 4+<BR>
<!--#endif -->
If you're not familiar with Perl programming, then parts of the above code undoubtedly look alien to you. Without this being a Perl tutorial, in a nutshell, regular expressions is used to extract out the relevant browser info in HTTP_USER_AGENT. Assuming you're using IE 6 on Windows, for example, this variable would contain:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
which you can display on your page using the SSI code:
<!--#echo var="HTTP_USER_AGENT"-->
Use a different browser, and the output would be different.
As you can see, SSI is more than just embedding static content, but can do so dynamically as well. The examples shown above are just a peek into the possibilities...how smart your SSI codes are now depends on your knowledge of Perl programming. Either way, it's time to get crackin'!
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More HTML Articles
More By John Miller
developerWorks - FREE Tools! |
<a href="http://zeus.developershed.com/shonuff.php?blackbird=3853&zoneid=442&source=&dest=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fspaces%2Fjazz%3FS_TACT%3D105AGY31%26S_CMP%3DDEVSHED&ismap="><img src="http://images.devshed.com/corp/img/news/jazz01.gif" alt="developerWorks Jazz space" align="left"></a>You've heard the buzz about Jazz... want to know more about it from a developer's perspective? Check out the Jazz space on developerWorks. This space is an up-to-date resource for developers, including technical information about Jazz and products built on Jazz, like Rational Team Concert Express. The Jazz space includes content from a wide variety of sources, including links, feeds, and comments from experts. FREE! Go There Now!
|
|
|
|
The IBM DB2 Deep Compression ROI tool is designed for DBA’s and IT management personnel to perform a clinical analysis of the cost savings gained from the Storage Optimization feature of DB2 9 for Linux, UNIX and Windows. The feature, also known as Deep Compression, compresses data that lies within a database by up to 80% at times. FREE! Go There Now!
|
|
|
|
You'll get answers to many questions and more from David Barnes, Lead Evangelist for IBM Emerging Internet Technologies. David will discuss aspects of Web 2.0 that bring value to corporations, academia, and government. He'll also discuss IBM's vision around Web 2.0, including the importance of remixability and consumability. The discussion will culminate with examples of various IBM Software Group solutions you can use to get ahead of the Web 2.0 adoption curve. FREE! Go There Now!
|
|
|
|
Join this Rational Talks to You teleconference, featuring Paul Boustany and Mark Krasovich, to speak to the experts about becoming a Rational ClearCase power user. Get a chance to ask your questions and learn tips and tricks for using Rational ClearCase in Agile development FREE! Go There Now!
|
|
|
|
Achieving true agility is a never-ending effort. We will showcase how you can become agile incrementally, a few practices at the time.Which practices should any agile team strive to adopt? What additional practices should you consider based on your needs to scale? Adopting practices are however made much easier with the right tool support. What about if your tools adapt to your practices? We will take a look at how the Jazz technology can be leveraged to make your process change the behavior of your tools. FREE! Go There Now!
|
|
|
|
Poor Requirements Management capabilities in an Enterprise have been linked to excessive project failures, escalating IT costs, and failure to deliver competitive advantage into the marketplace. Join Brianna M Smith from IBM Rational and learn about how successful organizations align IT and Business stakeholders through collaborative processes and tools for effective requirements management, and how an integrated approach across the IT lifecycle can provide unparalleled visibility and traceability to ensure that project teams are delivering on the business vision by "doing the right things" and "doing things right." FREE! Go There Now!
|
|
|
|
Asset Reuse is a key strategy for companies looking to create innovative solutions to solve complex software development problems. Searching for, identifying, updating, using and deploying software assets can be a difficult challenge. Listen to this webcast, to learn about strategies and tools that you can leverage for a successful project, including Rational Asset Manager, Rational Software Architect and WebSphere Service Registry and Repository. FREE! Go There Now!
|
|
|
|
As organizations have grown increasingly dependent on online software, the risk of malicious attacks has also become far more serious. Fortunately, well-governed organizations can protect their Web applications by injecting vulnerability assessments and ethical hacks into their software development and delivery processes. This paper describes 12 of the most common hacker attacks and provides basic rules that you can follow to help create more hack-resistant Web applications. FREE! Go There Now!
|
|
|
|
Try the latest version of IBM Rational Manual Tester V7.0.1 by downloading a free trial from IBM developerWorks. This manual test authoring and execution tool promotes test step reuse to reduce the impact of software change on testers and business analysts and addresses the needs of teams performing at least a portion of their testing manually. FREE! Go There Now!
|
|
|
|
As businesses grow increasingly dependent upon Web applications, these complex entities grow more difficult to secure. Most companies equip their Web sites with firewalls, Secure Sockets Layer (SSL), and network and host security, but the majority of attacks are on applications themselves – and these technologies cannot prevent them. This paper explains what you can do to help protect your organization, and it discusses an approach for improving your organization’s Web application security. FREE! Go There Now!
|
|
|
|
All FREE IBM® developerWorks Tools! |