HTML
  Home arrow HTML arrow Introduction to Conditional SSI
Dev Articles Forums 
ADO.NET  
Apache  
ASP  
ASP.NET  
C#  
C++  
ColdFusion  
COM/COM+  
Delphi-Kylix  
Design Usability  
Development Cycles  
DHTML  
Embedded Tools  
Flash  
Graphic Design  
HTML  
IIS  
Interviews  
Java  
JavaScript  
MySQL  
Oracle  
Photoshop  
PHP  
Reviews  
Ruby-on-Rails  
SQL  
SQL Server  
Style Sheets  
VB.Net  
Visual Basic  
Web Authoring  
Web Services  
Web Standards  
XML  
Dedicated Servers  
Actuate Whitepapers 
VeriSign Whitepapers 
IBM® developerWorks 
Sun Developer Network 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
HTML

Introduction to Conditional SSI
By: John Miller
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 4
    2003-04-29

    Table of Contents:

    Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
    Iron Speed
     
    ADVERTISEMENT

    At the virtual BlackBerry Technical Seminar 2008, you can ask your development questions directly of Research In Motion® (RIM) experts, and take advantage of learning opportunities designed uniquely for BlackBerry solution developers. Register Today!

    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

     

    IBM® developerWorks developerWorks - FREE Tools!


    NEW! "ebook: Exploring IBM SOA Technology & Practice

    Learn field-tested SOA principles, methodology, technology and implementation from the global SOA market leader - in a new e-book by an IBM SOA expert. Written by IBM Certified SOA Solution Designer Bobby Woolf, "Exploring IBM SOA Technology & Practice" is the ultimate insider's guide to SOA - a PDF e-book packed cover to cover with IBM's specific advice on how to make your SOA implementation a success.
    FREE! Go There Now!


    NEW! Applying lean thinking to the governance of software development

    Effective governance for lean development isn’t about command and control. Instead, the focus is on enabling the right behaviors and practices through collaborative and supportive techniques. Hear from Scott Ambler on how it is far more effective to motivate people to do the right thing than it is to force them to do so. Learn how to form a lightweight, collaboration-based framework that reflects the realities of modern IT organizations.
    FREE! Go There Now!


    NEW! Download a free trial of Lotus Quickr 8.0

    Visit IBM developerWorks to download a free trial version of Lotus Quickr 8.0, which enables collaboration by transforming the way everyday business content such as documents, rich media, photos, and video can be shared. Lotus Quickr makes it faster and easier to share content of all types (not just documents) within virtual teams. It is designed to make it easier to collaborate across organizational boundaries, while continuing to work within the context of familiar desktop applications.
    FREE! Go There Now!


    NEW! Download the free Web Application Security eKit

    Discover how IBM Rational AppScan Standard Edition can help you detext vulnerabilities in your web applications in the Web Application Security eKit. IBM Rational AppScan is a leading suite of automated web application security solutions that scan and test for common Web application vulnerabilities. The new Web Application Security eKit provides you with valuable resources, including white papers, demos, and additional information on the benefits of testing your Web applications.
    FREE! Go There Now!


    NEW! IBM Rational ClearCase Innovator's Series

    Learn from the best! Find out how developers use Rational ClearCase to be more flexible, innovative and deliver higher quality code in the Rational ClearCase Power Users eKit. This complimentary eKit provides a collection of materials, like articles, whitepapers, and demos that can help you become a power user of Rational ClearCase.
    FREE! Go There Now!


    NEW! IBM Rational Systems Development e-Kit

    As systems increase in complexity, communication between systems and software teams becomes more and more difficult. Now, there’s a way to improve product quality and communication.<br />Read the “Model Driven Systems Development” white paper to see how. Also included in this kit are more educational white papers, customer examples, tutorials, informative Webcasts, and best practices for designing, building and managing systems.<br />
    FREE! Go There Now!


    NEW! Rational Asset Manager eKit

    Learn how to do more with your reusable assets with the free Rational Asset Manager eKit. The eKit includes demos on how Rational Asset Manager tracks and audits your assets in order to utilize them for reuse. Plus you’ll find white papers and a Webcast that discuss the challenges of a Service Oriented Architecture and how Rational Asset Manager can provide quick and effective solutions.
    FREE! Go There Now!


    NEW! Using Rational Business Developer to enhance your developer productivity

    Join this Rational Talks to You teleconference, to hear how Enterprise Generation Language (EGL) eliminates the need for tedious and error-prone low level coding, so developers can focus on business requirements. EGL extends the Rational software development platform with a simplified programming language that enables developers who have little or no experience with Java, Web technologies or Service Oriented Architecture, to create enterprise-class applications and services quickly and easily. It also allows developers who may have little or no mainframe programming experience to quickly create traditional mainframe components.
    FREE! Go There Now!


    NEW! Webcast: Calling All Testers! Find Application Vulnerabilities Early in the Development Process Where they are Easier to Fix and Less Risky to your Business

    In this webcast, IBM Rational will discuss the importance of Web application security and will share techniques and best practices to introduce application security testing into current QA processes including: understanding common security vulnerabilities and techniques to integrate security testing with defect tracking and remediation systems in an effort to safeguard sensitive online information.
    FREE! Go There Now!


    NEW! Webcast: IBM Rational Build Forge - Beyond the Build

    The discipline of assembling and delivering software is maturing beyond standard developer-centric compile/test software builds. The end-to-end software development lifecycle is emerging as the new focus moves “Beyond the Build.” Join this on demand webcast to learn about methods for streamlining software delivery and key capabilities of the IBM Rational Build Forge framework for automating build and release management in environments of any size.
    FREE! Go There Now!



    All FREE IBM® developerWorks Tools!

    HTML ARTICLES

    - Another Look at Animation of Geographical Ma...
    - Animation of Geographical Map Regions
    - Changing and Moving Pictures with CSS
    - Clickable Geographical Map Regions
    - Gradient Creation with the HR Element
    - Text on HTML Images: Do it Yourself
    - Custom Buttons in HTML
    - Quick Web Page Menu
    - Maximizing and Restoring HTML Images with th...
    - Maximizing and Restoring HTML Images with th...
    - Handling Hyperlinks and Images in HTML
    - Quick Start with HTML
    - HTML Tips
    - Color Composition and HTML
    - HTML Fonts, Styles, and Headers


    Iron Speed





    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 6 hosted by Hostway