Ric Posted May 13, 2011 Report Share Posted May 13, 2011 Reading the change log for Apache 2.2.18 I noticed the following statement:mod_win32: Added shebang check for '! so that .vbs scripts work as CGI.Win32's cscript interpreter can only use a single quote as comment char.[Guenter Knauf]Not very informative and no examples hence this quick guide shows how to run VBScripts as CGI on Apache 2.2.18. Example 1Create a new text file named test1.vbs with the following content:'!c:\WINDOWS\system32\cscript.exe /nologo wscript.echo "Content-type: text/html" & vbcrlf 'Above two lines are required do not change 'Some basic html follows: wscript.echo "<h1>Hello World</h1>" wscript.echo "<p>This is output from VBScript</p>"Save to folder UniServer\cgi-bin Starts servers.Type the following into your browser:http://localhost/cgi-bin/test1.vbs Noting spectacular displays hello world, which shows the page, has been processed as a cgi script. Note: The shebang is '! followed by path to executable. The /nologo prevents cscript displaying a banner otherwise a malformed header error is produced.Next line is obligatory and sets the header information "Content-type" for the web page Example 2This example shows how to post data from a form and process it using a CGI VBScript. First create a new page test.html with the following content:<html> <head> <title>Uniform Server test</title> </head> <body> <form action=/cgi-bin/test2.vbs method=post> Enter your name: <input name=name><br> Enter your age:<input name=age><br> Enter your phone number:<input name=phone_number><br> <input type=submit value="Send"> </form> </body> </html>Save to folder UniServer\www Now create a new text file named test2.vbs with the following content: '!c:\WINDOWS\system32\cscript.exe /nologo wscript.echo "Content-type: text/html" & vbcrlf 'Above two lines are required do not change 'Some basic html follows: wscript.echo "<h1>Hello World</h1>" wscript.echo "<p>This is output from VBScript</p>" '=== Get data sent to page Set Shell = CreateObject("WScript.Shell") 'Create shell ReqMethod=Ucase(Shell.ExpandEnvironmentStrings("%REQUEST_METHOD%")) 'Get request method Select Case ReqMethod 'From ReqMethod Case "GET" 'if GET cgi_string = cgi.ExpandEnvironmentStrings("%QUERY_STRING%") 'expand and save cgi string Case "POST" 'if POST cgi_string = WScript.Stdin.ReadAll 'read all from standard in End Select 'save cgi string '=== Clean data. Replace + with space and replace %2C with comma cgi_string = replace (cgi_string, "+", " ") cgi_string = replace (cgi_string, "%2C", ",") '=== Create a dictionary (hash table) cgi_array = split (cgi_string, "&") 'Create array by spliting at & Set cgi_hash = CreateObject("Scripting.Dictionary") 'Create dictionary for i = 0 to ubound(cgi_array) 'Scan cgi array cgi_var = split(cgi_array(i), "=") 'Split into name (key) data pair cgi_hash.add cgi_var(0), cgi_var(1) 'Populate dictionary key/data next '=== Example how to use dictionary wscript.echo "<br>" wscript.echo "Your name = " & cgi_hash.item("name") & "<br>" wscript.echo "Your age = " & cgi_hash.item("age") & "<br>" wscript.echo "Your phone number = " & cgi_hash.item("phone_number") & "<br>"Save to folder UniServer\cgi-bin Starts servers.Type the following into your browser:http://localhost/test.html Fill in the form and click send Above provides working examples to get you up and running.All the best Ric Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.