<!--- Kill extra output. --->
<cfsilent>
<!---
Check to see if the error object exists. Even though
we have landed on this page, it is possible that
someone called it directly without throwing an erorr.
The error object only exists if an error was caught.
--->
<cfif StructKeyExists( VARIABLES, "Error" )>
<!---
Mail out the error data (and whatever other scopes
you would like to see at the time of th error). When
you CFDump out the objects, make them Secure AND
also be sure to use a TOP attribute when appropriate
so that the CFDump doesn't recurse forever.
--->
<cfmail
to="ben@xxxxxxxxxx.com"
from="web-errors@xxxxxxxxxx.com"
subject="Web Site Error"
type="html">
<p>
An error occurred at
#DateFormat( Now(), "mmm d, yyyy" )# at
#TimeFormat( Now(), "hh:mm TT" )#
</p>
<h3>
Error
</h3>
<cfdump
var="#MakeStructSecure( VARIABLES.Error )#"
label="Error object."
/>
<h3>
CGI
</h3>
<cfdump
var="#MakeStructSecure( CGI )#"
label="CGI object"
/>
<h3>
REQUEST
</h3>
<cfdump
var="#MakeStructSecure( REQUEST )#"
label="REQUEST object"
top="5"
/>
<h3>
FORM
</h3>
<cfdump
var="#MakeStructSecure( FORM )#"
label="FORM object"
top="5"
/>
<h3>
URL
</h3>
<cfdump
var="#MakeStructSecure( URL )#"
label="URL object"
top="5"
/>
<h3>
SESSION
</h3>
<cfdump
var="#MakeStructSecure( SESSION )#"
label="SESSION object"
top="5"
/>
</cfmail>
</cfif>
<!---
When setting the header information, be sure to put
it in a CFTry / CFCatch. We can only send header
information if the site has NOT already been flushed
to the browser. Also set a flag so that we know if
information has been committed.
--->
<cfset REQUEST.RequestCommitted = false />
<cftry>
<!--- Set the status code to internal server error. --->
<cfheader
statuscode="500"
statustext="Internal Server Error"
/>
<!--- Set the content type. --->
<cfcontent
type="text/html"
reset="true"
/>
<!--- Catch any errors. --->
<cfcatch>
<!---
There was an error so flag the request as
already being committed.
--->
<cfset REQUEST.RequestCommitted = true />
</cfcatch>
</cftry>
</cfsilent>
<!---
Check to see if the request has been committed. If it
has, then it means that content has already been committed
to the browser. In that case, we are gonna want to refresh
the screen, unless we came from a refresh, in which case
just let the page run.
--->
<cfif (
StructKeyExists( VARIABLES, "Error" ) AND
REQUEST.RequestCommitted AND
(NOT StructKeyExists( URL, "norefresh" ))
)>
<script type="text/javascript">
window.location.href = "cferror.cfm?norefresh=true";
</script>
<!--- Exit out of the template. --->
<cfexit />
</cfif>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>An Error Occurred</title>
</head>
<body>
<h1>
Internal Server Error
</h1>
<p>
An internal server error has occurred, but our
squad of CF Ninjas are looking into it! Naturally,
you won't be able to tell that they're doing
anything because they are Ninjas! But, rest assured,
stuff is getting done.
</p>
</body>
</html>