Your source for ASP-related frequently asked questions and answers! : ASP FAQS : The Nature of Things

Question: How can I conditionally #include files? How can I tell if a file is already #included so I won't include it again? How do #include files work?

Answer: Please understand this: ASP does not control the #include-ing of files!

All processing of #include files is done by the web server before ASP ever gets to see the code! So ASP always sees the full text after all the includes take place!

Yes, you can code things like

    <% If Bill = Silly Then %>
    <!-- #include file="" -->
    <% End If %>

But the contents of that include file will always be included! Period. Always.

If you don't believe all the above, here is a way to prove it.

(1) Create the file "" and put it in an appropriate virtual directory on your site. The contents of "" should be:

Dim foo
foo = 7

(2) Create the file "junk.asp" and put it in the same directory. The contents of "junk.asp" should be:

<% Option Explicit %>
Dim foo, bar

<% If 3 = 2 Then %>
<!-- #include file="" -->
<% End If %>

(3) Navigate to "junk.asp" and invoke the page. What do you see?
On my site, I see this:

Microsoft VBScript compilation error '800a0411'

Name redefined

/Testing/, line 2

Dim foo

Do you understand why? I used <% Option Explicit %>, so trying to Dim a variable that has already been Dimmed is considered an error.

And even though the code in that include file will not be executed (because obviously the condition 3 = 2 is false!), we still get a compilation error from VBScript when it encounters that extraneous Dim.

But if the file had not been included, we would never have see the compilation error, would we have?

Get the point: The file was included even though the if statement would make it look like it wasn't.

Okay? Clear? Understandable? Final word on the subject? (Also be sure to read: The Low-down on #include!)

FAQ posted by Bill Wilkinson at 10/16/2000 4:39:12 PM to the The Nature of Things category. This FAQ has been viewed 53,350 times.

Copyright 2019 QuinStreet Inc. All Rights Reserved.
Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers