Personal Online Database Documentation

Introduction
Features
Download & Installation
License & Registration
Fast DB Setup for Novice Users
User Manual For Power Users
Security Notes <----Read This!!
Troubleshooting, Q & A

Bug Report

Introduction

Personal Online Database (POD) is a cgi script that lets you easily create and manage an online database, be it a product catalogue, addressbook, guestbook, customer list, or even library book list. As its name implies, POD is most suitable for personal usage, yet small businesses may find it a viable alternative to expensive commercial databases, depending on your business requirement. With this script, you can create and manage a database online with absolutely no programming knowledge required. Through learning a small set of special tags, you will be able to completely control the layout of the database program output. POD supports the usual database operations (add, change, delete, search, sort, etc.) as well as remote dministration of the database. Because of the customizability of the script, you can make numerous databases all exist on the same server serving your users/customers. The speed of the database is fast and mainly determined by the harddisk speed of the server. Please read more about the rich features of POD below. Current POD version supports Win9x, NT4 and Win2000. POD requires that you have access to a webserver for it to run. POD is a big improvement over its ancestor --- Online Database 4.x.

Features

Download & Installation

You can download the program at http://ming.ddns.com/download.html, which should always have the latest version. You should also be able to download from various internet software collection sites such as simtel.net, CNet's download.com and shareware.com, ZDNet's software library, etc.

Installation step-by-step:

  1. If you downloaded the self-extracting zip file or plain zip file (i.e., PODx_x.exe or PODx_x.zip), extract the compressed file to a temporary directory (e.g., C:\temp\POD).
  2. Copy the fldb.exe and fldbconf.exe programs under that temporary directory into your webserver's cgi-bin directory. Make a subdirectory named "fldb" under your webserver's cgi-bin directory. Then you pick an zip archive under the temporary directory and extract its content files into the "fldb" subdirectory (the zip file named fldb.zip is an online addressbook, prod.zip is an online product catalogue, gbook.zip is an online guestbook, and lib.zip is an online library catalogue. Pick the one that's closest to what you want). Then copy doc.html, feature.html, relationship.jpg, OldbHelp.html, DBAdmin.html, license.html, readme.html into any directory on your web server or on your local computer (say, it's directory1). Copy all other non-zip files into "fldb" subdirectory except that conversion.exe can be put anywhere on your local computer (conversion.exe is of no use in unregistered version as the converted DB will not be recognized by unregistered POD version).
  3. Go into the "fldb" subdirectory, rename the file xxxx.ini and xxxx.lann to fldb.ini and fldb.lann (e.g., rename lib.ini to fldb.ini if you chose to unzip lib.zip in step 2 above). Open the newly renamed fldb.ini with a text editor (e.g., notepad). Under the section called "[Administration]", set "Enable Remote Administration=" to 1, then set "Administration password=" to whatever password you want. Save the changes.
  4. Now use notepad or any html editor (preferrable NOT Microsoft Frontpage whose early versions may mess up the html form tags) to open the file named "DBAdmin.html" under directory1 in step 2. In the html source code, you will find "<form action="http://127.0.0.1/cgi-bin/fldbconf.exe" ... ", please change the URL to an appropriate URL. For example, if the URL for your webserver's cgi-bin directory is http://mydomain.com/cgi-bin, then you should use http://mydomain.com/cgi-bin/fldbconf.exe to substitute for the "http://127.0.0.1/cgi-bin/fldbconf.exe" above. Save the changes.
  5. Now open DBAdmin.html in your web browser (e.g., internet explorer or netscape navigator). Fill into the html form "fldb" as the DB Name, and the password you set in step 3 above as the administration password, press the "start configuration" button.
  6. Now please consult the help file about how to set the DB options. You have two choices here. One, if you want to use the DB as is, you can simply modify only the URLs and e-mail address in the fldb.ini file and leave most things else intact. Or, you may want to use different item names for your DB entries, add or drop a few items and make other changes to make your own DB. In that case, you have to follow instructions in the help file and make the changes according to your preferrence.
  7. After you finish configuration, go to the bottom of the html page and again fill in the password you set in step 3 above as the administration password. Press the "submit new configuration" button.
  8. Now you would need to either write your own html files following instructions or use the included template html files as is. Again you have two choices. You can either leave those files intact if you chose not to change the .ini file in step 6. Or you have to make appropriate changes if you chose to change .ini file significantly. Please note that you need to keep the DB entry items defined in the configuration in step 7 consistent with the ones in your DB html interface files, or else html form data will not be correctly collected into your database.
  9. You can then launch the web browser of your choice and access the fldb-add.html to add your first entry or more entries after that. You can use fldb-search-admin.html to search for an entry to change/delete it, or use fldb-search-user.html to search for an entry for viewing purposes only. Your DB users will most likely only need to access fldb-search-user.html and view the entries you already entered into the DB.
  10. Remember to always back up your old DB file when upgrading to a new version of POD just in case. Upgrades should go smoothly, but it's always good to be careful if your DB is very important to you.

License & Registration

Details for License and Registration is here. As a note, POD costs $29 to register as non-commerical user, and $79 to register as commercial user whenver you involve POD in monetary transactions. If you use paypal to register, it may cost you $10 less to register for POD as described here.

User Manual

It is probably a good idea to first consult "Fast DB Setup for Novice Users" section to set up and run a DB first to make sure your server can run POD, and then try to modify the DB settings and html interface further by reading this section.

If you are looking for section by section explanation of the DB configuration options you encountered using DBAdmin.html, please read this. User manual here explains how to modify or write your own html interface between DB and end user.

A list of files included in this software package (let's say that your web server's cgi-bin directory's path is c:\MyServer\cgi-bin):

  1. fldb.exe This file is the main POD program. It is used by all included html files except for DBAdmin.html. This file should be put into c:\MyServer\cgi-bin.
  2. fldbconf.exe This file is used only for remote administration of the POD configuration. It is used by DBAdmin.html. This exe file should be put into c:\MyServer\cgi-bin.
  3. conversion.exe This file is used when you need to convert previous DB file (in csv format). Read OldbHelp.html for instructions to use it. In unregistered version of POD this file is of no use, however.
  4. DBAdmin.html This html file is used for configuring your DB settings. Read OldbHelp.html for instructions on how to configure DB options. DBAdmin.html itself contains instructions on how to use it.
  5. doc.html This is the documentation file you are reading. This file contains very important info as you already saw.
  6. relationship.jpg This is an image file used by doc.html. It must be in the same directory as doc.html.
  7. license.html This file contains licensing and registration information.
  8. OldbHelp.html This file contains instruction on how to configure your DB settings line by line.
  9. feature.html This file contains the up-to-date information about all the features POD has.
  10. readme.html This file contains the "what's new" for POD features or bug fixes. It is the start point of where to look for what.
  11. You would want to put all the html files described above under one directory on your web server, even though it is not mandatory. However, if you put them into separate directories, some links in this file or some other html files will not work.
  12. source.txt This file is a sample csv file that can be converted to POD DB format by conversion.exe. Again, read OldbHelp.html for instructions to use it.
  13. fldb.zip This file is a zip archive of a collection of .ini and .html files that constitute an online addressbook. You need to unzip these files and put them into c:\MyServer\cgi-bin\fldb (make this directory if it does not exist yet).
  14. prod.zip This file is a collection of files that constitute an online product catalogue. You put unzipped files into c:\MyServer\cgi-bin\prod, or for unregistered version, you unzip all files into c:\MyServer\cgi-bin\fldb, and then rename prod.ini and prod.lann to fldb.ini and fldb.lann.
  15. gbook.zip This file is a collection of files that constitute an online guestbook. You put unzipped files into c:\MyServer\cgi-bin\gbook, or for unregistered version, you unzip all files into c:\MyServer\cgi-bin\fldb, and then rename gbook.ini and gbook.lann to fldb.ini and fldb.lann.
  16. lib.zip This file is a collection of files that constitute an online library. You put unzipped files into c:\MyServer\cgi-bin\lib, or for unregistered version, you unzip all files into c:\MyServer\cgi-bin\fldb, and then rename lib.ini and lib.lann to fldb.ini and fldb.lann.
  17. Again, please note that if your program is not registered, you can use only one DB and that is the one in the subdirectory named fldb. If you want to use any other DB instead, you should only build this new DB from scratch.
  18. Explanations for the files included in the .zip archives: These archives include the following files (DBName is the name for your DB, like fldb or gbook): DBName.ini, DBName.lann, DBName-add.html, DBName-search-admin.html, DBName-search-user.html, NotFound.html, InfoNeed.html, opcomplete.html, PWD.html, multi-admin.html, sing-admin.html, multi-user.html, and sing-user.html. For the explanations for all these files please see below.
  19. Instructions on how to use the .lann file in the zip archive
    1. This file is used when you need to change the last tiny bit of POD-displayed message to your language of choice or your customized message. Because you are able to write your own html interface in your language, the only situations that utilize .lann file are usually not important at all. In fact, many a time your user may not even see any message using translations in the .lann file (except for the page link, see below). However, you would want to modify .lann file anyways just to keep the language consistent.
    2. Rename the .lann to the same name as your DB name (which is the name of the subdirectory under the cgi-bin directory. If you are using unregistered version of this program, the DB name must be fldb, therefore you rename the file to fldb.lann).
    3. Open fldb.lann (or whatever file your renamed it to) using any text editor, e.g., notepad.
    4. Translate and replace every sentence that's on the RIGHT side of "=". Do not modify anything that's on the LEFT side and do not modify the first line "[translations]"! For example, when you change a line that says: "sorted by=sorted by", you change it to "sorted by=("sorted by" in your language)".
    5. Sit back and relax and watch all program-produced pages now in your language of choice (well, except for error pages which should not happen if you set up DB right and your web server's set up right and working fine)! Note: If you decide that you just want English as your language of choice, then you can even delete the .lann file. It will make the program use the default language---English. In FLDB.lann file, the "page1=page" and "page2=page" are for displaying summary of search results, say, "Page 1 Total: 4 pages". page1 will be the first "Page", page2 will be the second page, "s=..." in the .lann file will be used to produce the plural form (the "s" in "pages"). I set both page1 and page2 to accomodate my own language: Chinese. You can probably use the same word for both of them.
  20. FLDB.ini : This is where the settings for your DB are stored. It must be put into c:\MyServer\cgi-bin\fldb. Please read this for how to start changing the DB options and read OldbHelp.html for how each option means and how should they be set.
  21. Explanation for all the html files in the .zip archive (like fldb.zip):

    relationship.jpg

    The relationship among these html files as sketched above seems quite complex, but in fact, it takes little effort to memorize it once you understand what each document does. For example, fldb-search-admin.html contains an html form that can be used for searching for entries in your DB with administrative mode which allows you to change or modify the found entry. Therefore it is natural that its result can be NotFound.html, Pwd.html (which displays message that password is missing), sing-admin.html (single entry found, administrative mode), multi-admin.html (multiple entries found and displayed with links leading to each individual entry). xxxx-user.html documents means user mode which only displays entry information but not forms that can be used to change the entries. The separation of these two sets of operations came after many users' requests because they do not want all the users of their DB to view the forms, which is both boring aesthetically and useless in many cases.

    A rule for customization of these html files: For Win32 (Win9x/NT/2000) version of POD, the case for the names of these files can be either capitalized or not. However, for the POD-specific tags used in the database and the names of the database entry items, you should always use the same case as those in the configuration file, sample html files or as instructed in this file. This applies to other customizable items for POD too. Be consistent using case.

    Now here's the explanation of and rules for individual html files:

    1. fldb-add.html --- This page should contain the html form needed for adding entries to your DB. You must put <input type="hidden" name="act" value="add"><input type="hidden" name="DBName" value="FLDB"> (assuming you are using unregistered version of POD or your DB's name is fldb) before the submit button (something like <input TYPE="submit" value="Add an Entry">) for the add form.
    2. fldb-search-admin.html --- This page should contain the html form needed for searching for entries in your DB. You must put <input type="hidden" name="authority" value="Admin"><input type="hidden" name="act" value="search"><input type="hidden" name="DBName" value="FLDB"> before the submit button for the search form. For a few rule for designing search and sort forms, read this.
    3. fldb-search-user.html --- This page should contain the html form needed for searching for entries in your DB. You must put <input type="hidden" name="authority" value="User"><input type="hidden" name="act" value="search"><input type="hidden" name="DBName" value="FLDB"> before the submit button for the search form. For a few rule for designing search and sort forms, read this.
    The above 3 pages are DB-access pages from which POD gets input. These 3 html files can be put anywhere on your web server and be renamed to any name you want. You can even combine these 3 files into one html file if you want. However, other than the above specified tags, you should not put any POD-specific tags into this page because they will have no effect on the output.
    4. Pwd.html --- Its only purpose is to display a message that password is missing. You should not put any POD-specific tags into this page.
    5. NotFound.html --- Its only purpose is to display a message that the entry is not found using the input search string. You should not put any POD-specific tags into this page.
    6. InfoNeed.html --- Its purpose is to display a message that some items of the entry must be filled in before you can add or change the entry to the DB and that user should try to input those information again.
    7. opcomplete.html --- Its purpose is to display a message that the user-requested operation (like add, change, or delete an entry) is completed successfully. You can specify an html file for redisplay here using the <!--DBRedisplay--> tag (see below for details).
    8. multi-admin.html --- This page is used when a search initiated from page fldb-search-admin.html returns more than one entry. This page should always contain a pair of <!--DBRepeatStart--> and <!--DBRepeatEnd--> tags. You would also probably want to put a <!--DBItem="DB Item Name" Link="index"> (substitute the "DB Item Name" with a real DB Item Name you assigned) to have this item linked to that specific entry. This page can be exactly the same as multi-user.html, or it can be different, whichever way you like it.
    9. multi-user.html --- This page is used when a search initiated from page fldb-search-user.html returns more than one entry. It has the same rules as multi-admin.html and can have the same html code.
    10. sing-admin.html --- This page is used when a search initiated from page fldb-search-admin.html returned only one entry OR reached from multi-admin.html with a <!--DBItem="DB Item Name" Link="index"> tag. This page MUST contain forms that allow change and delete of the entries. For the form that allows changing the entry, you should put tags <INPUT TYPE="hidden" NAME="act" VALUE="newinfo"><!--DBAutoNumber--><input type="hidden" name="DBName" value="FLDB"> (assuming you are using unregistered version of POD or your DB's name is fldb) before the submit button (something like <input TYPE="submit" value="Change the Entry">). For the form that allows deleting the entry, you should put tags <INPUT TYPE="hidden" NAME="act" VALUE="delete"><!--DBAutoNumber--><input type="hidden" name="DBName" value="FLDB"> before the submit button (something like <input TYPE="submit" value="Delete the Entry">). Also for the delete form, you only need to have two <input type="text" ...> tags, one for the first item in your DB entry, one for password (if you use password to protect deleting entries from your DB). For example, if the first item in your DB is "name", then your delete entry form should have <input type="text" name="name" size="whichever size you choose (substitute this!)"> before any other form item such as password, etc. Look at sample files if you still do not understand.
    11. sing-user.html --- This page is used when a search initiated from page fldb-search-user.html returns only one entry OR reached from multi-user.html with a <!--DBItem="DB Item Name" Link="index"> tag. This page usually contains all the information about the entry (but not in html form style), yet it is not a requirement.
    The above 8 html files are the DB-display pages with which POD formats and displays output. They should not be renamed and must be put in a subdirectory under your web server's cgi-bin directory.
    The 11 html pages above can be classified into two categories: Pages that can display an entry (multi-admin.html, sing-admin.html, multi-user.html, sing-user.html, opcomplete.html, InfoNeed.html) and those that do not (the rest).
    You can put any html tags and content in the above html files. These files constitute the html interface between (POD+your DB) and your DB user. After you write the pages following the above instructions, you can begin to define where the DB entry data should be displayed in each html file following instructions and rules below:

Now let's look at the POD-specific tags (note that you can always look at the sample files to try understand the action of POD):

  1. <!--DBItem="DB Item Name" Link="index" DBdefault="any default text" SortTag="Whatever"--> This tag should be placed only in the pages that can display an entry (in fact, as a rule, any tag with any DB Item Name specified in it should be placed only in those pages that can display items of an entry. That only makes sense). You should substitue the "DB Item Name" with real DB item name like "web site", etc. provided "web site" is an item in your DB entry. Starting with V5.04, the Link="..." can take 5 values. Link="email", Link="www", Link="index", Link="admin-index", Link="user-index". The first two will cause the value of the item be linked with email address or hypertext links. For example, if you set Link="www", then POD will replace this entire tag with <a href="DB Item Value">DB Item Value</a> (of course POD will use the real DB item value in place of the "DB Item Value" in this link). The Link="index" will cause the item be linked to a page that will display the information of that entry alone using the current authorization mode (administrative or user mode, depend on whether "authority" is "admin" or "user"). The Link="admin-index" will force to link in administrative mode even if current "authority" is "user" or absent. The Link="user-index" will force a link in user mode. These 3 links are only useful when used in multi-admin.html and multi-user.html because in the multi-entry situation you would want to have a link that leads to a particular entry. The SortTag is a text tag that will be put in front of the value of the item, and will have a link that leads to redisplay of the page with entries sorted regarding to this item. If you put a "*" in front of "Whatever" (as SortTag="*Whatever") POD will attach a link that sorts DB in descending order instead of the default ascending order (Please note that starting from V5.05, user of your DB can toggle the sort order by clicking on the item they just sorted with again, thereby overriding your setting here). If you set Link="www" and SortTag="URL: ", the result display will be <a href="POD-produced sort link">URL: </a><a href="DB Item Value">DB Item Value</a> (note that the link on URL will be dynamically produced by POD). If the DB Item Value for an item is actually empty because user did not enter the info when they add it to the database, you can specify a default text to be displayed in place of the empty DB Item Value using the DBdefault="default text you like". Note that in this POD tag, DBdefault=..., Link=... and SortTag=... are optional and can be omitted from the tag. Only the first part is required.
  2. <!--DBRedisplayStart--> and <!--DBRedisplayEnd--> indicate that the content between these two tags can be redisplayed when <!--DBEntryRedisplay=...> is used (see below). On any page, there should be only one pair of <!--DBRedisplayStart--> and <!--DBRedisplayEnd--> tags. If you put multiple pairs in the file, only the first pair will be used for redisplay purposes.
  3. <!--DBEntryRedisplay="sing-user.html"--> This tag (let's say it is in opcomplete.html) specifies that POD should open the file "sing-user.html", search for tags <!--DBRedisplayStart--> and <!--DBRedisplayEnd--> and then display all the content in sing-user.html that is between these two tags to the position where <!--DBEntryRedisplay="sing-user.html"--> tag is in opcomplete.html. Note that you should never put <!--DBEntryRedisplay="opcomplete.html"--> tag AND a pair of <!--DBRedisplayStart--> and <!--DBRedisplayEnd--> tags all in one html file because this will create an endless loop of redisplaying the same html file again and again.
  4. <!--DBRepeatStart--> and <!--DBRepeatEnd--> This pair of tags should only be put in multi-admin.html and multi-user.html. They are used to indicate that the content between these two tags should be repeatedly displayed for each DB entry found in a search. So when your user's search found 5 entries, the content between these two tags will be displayed 5 times consecutively, but each time with data specific for one of the 5 entries found.
  5. <!--DBFound#--> This tag should only be put in multi-admin.html and multi-user.html. It will be replaced by POD with the number of entries that are found in a search.
  6. <!--DBPageLink--> This tag should only be put in multi-admin.html and multi-user.html. It will be replaced by POD with the page numbers in the format "<-Prev 1 2 3 Next->" (assuming the page that's currently displayed is page2). The words "prev" and "next" can be replaced using the .lann file.
  7. <img src="DB Item Name1" DBdefault="default image link" DBlink="DB Item Name2"> This tag should be placed only in the pages that can display an entry. When POD finds this tag, it will replace the tag with <a href="DB Item Value2"><img src="DB Item Value1"></a>. However, if the value for DB Item Name1 is empty, POD will display the default image which is "default image link" instead. This way even though you cannot store the actual image in a DB, you can store html links to images in the DB and have POD display the images in web browser. The DBlink="..." can have http links in it too, it doesn't have to be a DB Item Name (however, in that case, the images in all the entries on this page will be linked to the same http link, which is probably not what you would want). In addition, the DBLink="index" or "admin-index" or "user-index" is acceptable and when POD see this, it will make a link that links to the individual entry just like in <!--DBItem="DB Item Name" Link="index"> tag. When DBLink="index" or "admin-index" or "user-index" is used, this <img ...> tag should be placed only in multi-admin.html and multi-user.html. Please note that DBdefault= and DBlink= are optional and can be omitted from this tag. However, if you include these tags, you MUST put DBDefault=... immediately behind the src=..., and DBLink=... immediately behind DBDefault=....
  8. <a href="DB Item Name" DBdefault="any default link"> Again, this tag should be placed only in the pages that can display an entry. When POD sees this tag, it will replace it with <a href="DB Item Value"> (if DB Item Value is empty, POD will use the "any default link" to substitute it). Therefore you can store any http links in the DB and have POD display them. Note that the DBdefault=... in this tag is optional and can be omitted from this tag. However, if you include this tag, you MUST put it immediately behind the href="DB Item Name". Also note that this tag is not redundant with the <!--DBItem="DB Item Name" DBdefault="any default text" Link="www"> tag!
  9. <a href="DBSort=DB Item Name"> This tag should be put in multi-admin.html and multi-user.html only. When POD sees this tag, it will replace it with <a href="DB Sort Link"> in which DB Sort Link is a dynamically produced link that can re-sort all the displayed entries according to this particular item. Again, if you put a "*" in front of "DB Item Name" (as "DBSort=*DB Item Name") POD will make a link that sorts DB in descending order instead of the default ascending order. (Please note that starting from V5.05, user of your DB can toggle the sort order by clicking on the item they just sorted with again, thereby overriding your setting here).
  10. <a href="index"> (or "admin-index" or "user-index"). This tag should be put in multi-admin.html and multi-user.html only. When POD see this, it will make a link that links to the individual entry just like in <!--DBItem="DB Item Name" Link="index"> tag (i.e., <a href="index"> is replaced with <a href="index link produced by POD">).
  11. <input type="text" name="DB Item Name" size="20"> Again, this tag should be placed only in the pages that can display an entry. When POD sees this tag, it will replace it with <input type="text" name="DB Item Name" value="DB Item Value" size="20">.
  12. <textarea rows="3" NAME="DB Item Name" DBdefault="any default text" cols="50"> Again, this tag should be placed only in the pages that can display an entry. When POD sees this tag, it will replace it with <textarea rows="3" NAME="DB Item Name" DBdefault="any default text" cols="50">DB Item Value (if DB Item Value is empty, POD will use the "any default link" to substitute it). Note that the DBdefault=... in this tag is optional and can be omitted from this tag. However, if you include this tag, you MUST put it immediately behind the name="DB Item Name".
  13. <select name="DB Item Name">
    <option value="DB Item Value Choice1">DB Item Value Choice1</option>
    <option value="DB Item Value Choice2">DB Item Value Choice2</option>
    ... ... ... ...
    </select>
    Again, this tag should be placed only in the pages that can display an entry. When POD sees this tag, it will replace it with
    <select name="DB Item Name">
    <option value="DB Item Value Choice1">DB Item Value Choice1</option>
    <option value="DB Item Value Choice2" selected>DB Item Value Choice2</option>
    ... ... ... ...
    </select>
    provided that DB Item Value Choice2 is the DB Item Value stored in the item DB Item Name of this particular entry in DB.

A few rules for using POD-specific tags that you should remember:

  1. While you can usually put any POD-specific tags into any html files described above without hurting the program execution, you'd better put only those that make sense into any particular html file. For example, if you put "<!--DBFound#-->" into notfound.html, obviously it doesn't make any sense --- That tag is used to display how many entries were found during the search whereas notfound.html is only displayed when nothing was found. Likewise, any tag with DB Item Name specified in it should be placed only in those pages that can display an entry.
  2. In general, you should not put any POD-specific tags in pwd.html, and notfound.html because no entry is actually found or returned or added during the operation, therefore those tags will not result in correct display at all (usually putting in those tags has no adverse effect because they won't display, but do not count on it as some tags may give wrong display).
  3. You should always make sure the items you link with "DBLink="index"" do not contain empty values (if they do have empty values, you should provide a DBDefault="whatever text you want to put in"), or else POD will still try to link them by adding a "_", but it usually does not look good. In most situations it is not a requirement, though.

Fast DB Setup for Novice Users

Well, sometimes users of POD may find the user manual for POD seems so overwhelming and an overkill for their usage of POD, e.g., you may only want to use the addressbook, guestbook, library catalogue, or product catalogue DBs included in POD package without much modifications at all. In that case, you would want to read the following instructions for a fast setup of the DB of your choice:

Installation step-by-step:

  1. If you downloaded the self-extracting zip file or plain zip file (i.e., PODx_x.exe or PODx_x.zip), extract the compressed file to a temporary directory (let's say you extract the files to C:\temp\POD).
  2. Copy the fldb.exe and fldbconf.exe programs under C:\temp\POD into your webserver's cgi-bin directory (let's say its path is http://webserver/cgi-bin) (a note here is that if your web server is NOT on your local computer, you need to make a mock cgi-bin directory c:\cgi-bin on your local computer and upload all of its content and directory structure to your web server's cgi-bin directory AFTER you finished the DB setup). Make a subdirectory named "fldb" under cgi-bin directory (this subdirectory thus has the path c:\cgi-bin\fldb).
  3. Now pick one pre-configured DB in POD package that you want to use for yourself:
    If you want an addressbook, choose fldb.zip under C:\temp\POD.
    If you want a guestbook, choose gbook.zip under C:\temp\POD.
    If you want an online library catalogue, choose fldb.zip under C:\temp\POD.
    If you want a product catalogue, choose fldb.zip under C:\temp\POD.
    BTW, if you want to see what each DB looks like, please go to the web for my guestbook and the other 3 DBs. Please note that the only main difference between DBs at ming.ddns.com and the ones included in POD package is the coloring.
  4. Let's say you picked gbook.zip for a guestbook. Extract all the files from gbook.zip into c:\cgi-bin\fldb. Then upload doc.html, feature.html, relationship.jpg, OldbHelp.html, license.html, readme.html (these are all under C:\temp\POD) into your root directory your web server (let's say your server's name is "myserver", and your root directory on your web server may be http://myserver/myname). Note that conversion.exe and source.txt should be put on your local computer in any directory that you want (conversion.exe is of no use in unregistered version as the converted DB will not be recognized by unregistered POD version).
  5. Go into cgi-bin/fldb subdirectory, rename the file gbook.ini and gbook.lann to fldb.ini and fldb.lann. Open the newly renamed fldb.ini with a text editor (e.g., notepad). You should notice that the file is composed of sections, under each section there are many options. Each option takes the form "A=B". You should never ever modify A which is on the left side of "=", but you should modify B according to what you want. Now, under the section called "[Administration]", please set "Enable Remote Administration=" to 1, then set "Administration password=" to whatever password you want. Save the changes.
  6. You probably want to modify all the options that has "modify this!" in it. The ones that you MUST modify now are:
    "exe full URL=DB exe file URL(e.g.,http://myserver/cgi-bin/fldb.exe),modify this!". This one should be http://myserver/cgi-bin/fldb.exe in our example.
    All options under "[password]" that has "modify this!" on the right side. These should be your own passwords, not the default mock passwords provided in the POD package.
  7. Now go into c:\cgi-bin\fldb directory. Here you will find in addition to fldb.ini, fldb.lann, there are a total of 11 html files. You must modify the following ones: x-add.html, x-search-admin.html, x-search-user.html (in our example, this "x" is "gbook"), sing-admin.html. You need to do the following modifications:
    Open any of the above 4 html files with notepad or any other text editor. Search for "form action". You may find something like "<form action="http://127.0.0.1/cgi-bin/fldbconf.exe" ... " or "<form action="http://myserver/cgi-bin/fldb.exe"...> ". You MUST replace the URL in the quotation marks with the same URL defined in step 6. Then search for "form action" again and repeat the replacement. After you replaced all of them, you need to search for "DBName", and you may find something like "<input type="hidden" name="DBName" value="gbook">". You must replace "gbook" here with "fldb" (if you registered your copy of POD, you would not need to put zip files in gbook.zip into "fldb" subdirectory. You put them in "gbook" subdirectory instead. You do not need to rename gbook.ini, gbook.lann to fldb.ini and fldb.lann, and you do NOT need to make this "gbook" to "fldb" replacement in "DBName". Therefore you can have more than one DB running at the same time. In unregistered version, your DB MUST be named as "fldb" and do all these name replacing, therefore you can have only one DB running at a time). Repeat the above two replacements in all the 4 html files.
  8. Now you upload everything that's under your C:\cgi-bin directory to your web server's cgi-bin directory. Make a subdirectory named "fldb" under your web server's cgi-bin directory and copy all files except for gbook-add.html, gbook-search-admin.html, gbook-search-user.html under your C:\cgi-bin\fldb into that "fldb" directory. You can rename gbook-search-admin.html to "administration.html", gbook-search-user.html to "guestbook.html", gbook-add.html to "add.html" or whatever names you like. Copy these 3 files into your root directory of your web server, in our example, it's http://myserver/myname.
  9. Now open your web browser, type in the address http://myserver/myname/add.html. You will see a form that allows you to sign the guestbook. Fill in one and submit. You will see first line something like "DB does not existed yet. DB created". After this line, it's "operation completed. Here is a redisplay of your entry", and then a display of your just-added entry below. If you do not see something like this, instead you see some error message, please refer to "troubleshooting Q & A" section for help.
  10. Now everything is set. You can use "http://myserver/myname/guestbook.html" to search for previous guests' comments, or use "http://myserver/myname/administration.html" to search and change a guest's comments using the "master password" you set in step 6 (but try not to change other people's words!). You can even combine these 3 html files into one "http://myserver/myname/guestbook.html" file like I did on http://ming.ddns.com/gbook-add.html.
  11. In the future, when you want to add more power or customized feature to your database, you have to modify the .ini file and the html files further. For editing .ini files, there is an easier and safer way than to modify through notepad. This method is described below:
  12. Use notepad or any html editor (preferrable NOT Microsoft Frontpage whose early versions may mess up the html form tags) to open the file named "DBAdmin.html" under c:\temp\POD in our above example. In the html source code, you will find "<form action="http://127.0.0.1/cgi-bin/fldbconf.exe" ... " or "<form action="http://myserver/cgi-bin/fldb.exe"...> ", please change the URL in the quotation marks to the same URL defined in step 6. Save the changes and upload the file to your root directory on your web server.
  13. Now open DBAdmin.html in your web browser (e.g., internet explorer or netscape navigator) by typing "http://myserver/myname/DBAdmin.html" as web address. Fill into the html form "fldb" as the DB Name, and the password you set in step 5 above as the administration password, press the "start configuration" button.
  14. Now please consult the help file about how to set the DB options.
  15. After you finish configuration, go to the bottom of the html page and again fill in the password you set in step 3 above as the administration password. Press the "submit new configuration" button. Now the new setting will take effect next time you visit your database.
  16. Please remember that the instructions above is only a temporary measure. As the administrator of your DB, you should always understand what you are doing, and what you can do to your DB. So please read the User Manual section for how to change the html files and refer to OldbHelp.html for how to configure .ini file.
  17. Remember to always back up your old DB file when upgrading to a new version of POD just in case. Upgrades should go smoothly, but it's always good to be careful if your DB is very important to you.

Security Notes

A critical security note:
It is crucial that you ask your web server administrator to disable "read" access on your cgi-bin directory.
If you do not disable "read" access, anybody on the internet will be able to read ALL of your database files. In addition, if you are a registered user, you should protect the registered copy of this software by disallowing "read" access so that nobody can download the software directly from your web server's cgi-bin directory. Read this on how to disable "read" access and contact your web server administrator and urge that "read" access be disallowed (note that if your web server administrator is not very competent, mistakes can be made to disallow even POD to read on the cgi-bin directory, thereby preventing POD to work. Symptom would be POD complaining that the initiation file cannot be found even though you're sure you put fldb.ini under fldb subdirectory under cgi-bin directory).

Now here are a few methods to disable "read" access on a web server:

  1. One temporary solution to protect your database files is to set "hide=1" in the fldb.ini configuration file. This way POD will successfully disallow "read" on DB files (but not the software itself) on many web servers (but definitely not all servers). However, you should never ever count on this measure as a permanent solution. In fact, if you succeed in methods 2 and 3, you do not need to use this one. So you should try methods 2 and 3 first.
  2. For Windows-styled security configuration web servers, such as Microsoft Internet Information Server, Microsoft Peer Web Service (which comes with NT4.0 CD), Microsoft Personal Web Server (a free yet powerful web server), etc., you can disable "read" access on individual directories. Therefore what you (or your web server administrator) need to do is to launch the web server administration manager, look at the access setting of the cgi-bin directory of the web server, then set the access setting to "enable execute", "enable scripts", "disable read" (most likely you'll need to check the checkboxes "execute" "scripts" to enable them, and uncheck "read" to disable it).
  3. For Unix-styled security configuration web servers, such as Sambar Web Server (a free/$75 web server that is very feature-rich and relatively easy to use), Apache (free, its Windows version is hard to use) or O'Reilly's WebSite Pro Server, etc., you can set the access configuration on each individual directories too, but you cannot set "execute" while disabling "read" (at least I did not find such settings for the above 3 servers, not that they absolutely do not have such settings. They may have, but I couldn't find it). In this case, what you want to do is to disable "read" on the "fldb" subdirectory (or whatever subdirectory you put your DB files in). For O'Reilly's server, it is rather easy. Their GUI configuration program is very intuitive to use. For Sambar, it is relatively easy too. For Apache, it seems they do not have a GUI configuration program for Windows version yet (though they have one for Linux long time ago and I liked it). Nonetheless, all 3 uses roughly the same method to disable "read" access. Please refer to their manuals for details. Here is what I found or remembered: For Apache, in their cgi-bin directory, your DB file is usually safe (because by default apache take any requests for file in the cgi-bin directory as a command to execute that file. Because of this, when you try to download the DB file, the server gives you an error as those DB files cannot be executed) yet it is still advisable that you disable "read" access on "fldb" subdirectory. For WebSite Pro, you need to set order "allow, deny" and "deny all" or allow only a selected group of users or groups to access the directory (same method applies to Apache too). For Sambar server, you want to put a .htaccess file under fldb subdirectory (or whatever subdirectory your DB files are in). In that file, you specify the name of a zone, then restriction. For example, that .htaccess file can look like this after you created user "test":
    AuthName "Authorized Only"
    require user test
    Apache can use .htaccess file too.

You can test if "read" access is disallowed by typing the URL of the database file (e.g., if the URL of your web server's cgi-bin directory is http://myserver.com/cgi-bin, and you DB is under fldb subdirectory, then your DB initiation (configuration) file URL is http://myserver.com/cgi-bin/fldb/fldb.ini. Just type this URL into your web browser and see what happens. If you get "read access forbidden", then you're safe. If your web browser starts to download the file, you know your DB is in danger. Please contact your administrator as soon as possible then!!).

A few notes on the security of POD itself:

  1. The design of POD assumes your web server does not support encryption, therefore the passwords and data sent from and to your web server are not encrypted (for encryption, what you need is a server that is SSL-enabled. There is nothing POD can do about the security of the data transmitted on the internet). Therefore to ensure that nobody steals your data on the internet is YOUR responsibility (writing html files to take advantage of a secure server is your responsibility too, though you can find a lot of places teaching you to do that, which is quite easy).
  2. POD also assumes that you are most likely the web server administrator and you have the exclusive access to the computer your web server runs on. For this reason and reason below in addition to performance considerations, POD does NOT encrypt the database file or the passwords therein. It is relatively trivial to encrypt password or data, yet there is another problem: US Federal law prohibits exportation of strong encryption softwares. I need to study the laws before I really want to implement encryption in POD. It is also questionable whether POD can be considered an encryption software, but if you set "password" size as 400 and encrypt or decrypt an email message using POD is very possible. Therefore it can be argued that POD IS an encryption software once I implement this feature. So...
  3. Even if password is encrypted in future version of POD, the data will probably not be encrypted for performance concerns. Therefore anybody with physical access to your web server machine can potentially view or damage your DB data. There is nothing POD can do about that either. You should use only trustworthy web hosting service, or if the server is on your own computer, restrict other people's access to it.
  4. POD is a cgi script, therefore it is susceptible to some hacker attacks on cgi scripts. I will try to cover holes one by one in the future, but there is always a window of opportunity for smart hackers. I mean, even prestigious and well-known web sites got shut down by hackers now and then, right? So back up your database at times, and try to limit administering the DB over the internet.
  5. Sometimes a hacker can post a cgi script that disrupts other cgi scripts service, so your web server administrator must only accept cgi scripts trustworthy sources. There is nothing POD can do about that.

Troubleshooting Q & A

1.After I filled data into the html forms and pressed the submit button, nothing happened!
2.It seems the database program only collected part of the html form data, but not the rest?
3.DB just malfunctioned, giving me strange error reports.
4.I input time stamp and numbers, but somehow they are not sorted correctly?
5. POD never started. My web browser told me that the cgi script misbehaved by not returning a complete set of html tags?
6.I think I found a bug, how do I report?
7.How do I register?
8.How do I set up more than one database with POD?
9.How do I create a DB file myself when sample DB is not included in the package?
10.Where can I download the newest version of POD?
11.I cannot understand the documentation, how do I contact the author for help?
12.The documentation is too long, is there an easier way to get the DB up and running?
13.I want to provide a link in my page to display every entry in the database, but I do not want to provide a search form, how do I do it?
14.Do you write custom-made cgi scripts?
15.If I want more features for POD, can I send my request to you and will it be answered?
16.How do I design the Search and Sort forms in an html page like fldb-search-user.html?
17.I have used my language to write all the html interface files, yet I still see some English words on my pages, e.g., the page links "prev" and "next" are in English, not my language, why?
18.I want to register, do you accept online payments?
19.How do I pay with paypal online payment service?
20.I think I found a place where POD did not behave as you claimed, what should I do?
21.I have registered already, but I want to return the software and get a refund, can I do that?
22.How do I convert DB schema?
23.Somehow it seems that POD only recognized part of the items I named for my entry items. Why is that?
24.I just uploaded all the files to my server and POD runs fine. However, I can't find my .ini and .txt files any more on my FTP server. Why is that?
25.I was a user of Online Database 4.37 or older version. How do I upgrade my old version to this new one?
26.I specified everything in the [report] section, yet I did not receive any statistics report or error report. Why?
27.How often do you put out one upgrade version?
28.I think I did everything right, yet my DB named test that's put under my cgi-bin\test subdirectory generated an error message "You need to register to operate on more than one DB for more than 20 days". Why?
29.I am using Sambar server. I get a message that ini file cannot be found. Why?
30.11 html interface files seems too many for me. Is there any way to reduce my writing effort?
31.Can you recommend some free web servers that I can use to run POD on?
32.Can I run POD on a local computer without using the internet?
33.What web servers or OS did you test for POD on?

  1. After I filled data into the html forms and pressed the submit button, nothing happened!
    Most likely you used Microsoft Frontpage to edit your html file. Microsoft Frontpage tends to modify html form tags to its liking, and it sometimes messes up the tags. Try to use another html editor to modify the html files and see if same problem happens again.
  2. It seems the database program only collected part of the html form data, but not the rest?
    Please check the spelling you used in the <Input type="text" name="xxx"> tag. The "xxx" must be exactly the same (preferrably the same case too) as the DB entry item name you specified in DB configurations.
  3. DB just malfunctioned, giving me strange error reports.
    Please check the spelling you used in your html form tags and/or the POD-specific tags. You should use exactly the same spelling AND case as those in the sample and template files! Also if POD complains that it cannot find .ini initiation file, check the access rights of your cgi-bin directory as described here.
  4. I input time stamp and numbers, but somehow they are not sorted correctly?
    Likely the time stamp you input is not in the right format, too old or too much into the future, or the number you input is too big (more than 9 digits). In those cases, these items will not be sorted correctly, and DB may even record wrong data if the number is too big.
  5. POD never started. My web browser told me that the cgi script misbehaved by not returning a complete set of html tags?
    This is most likely because the operating system (OS) your web server runs on is an old version. POD 5.0 and above needs a relatively new version (later than 4/99) of mfc42.dll file to function correctly. Please install Windows OS service packs.
  6. I think I found a bug, how do I report?
    Please see below the "bug report" section.
  7. How do I register?
    Please read the license and registration file.
  8. How do I set up more than one database with POD?
    To do that, you must first register. The evaluation copy of POD does not allow more than one DB running at a time. After registration, to set up more than one database, you just need to make another subdirectory named as the desired DB name under the cgi-bin directory and copy all the DB html and configuration files under first subdirectory to the new subdirectory, and change the configuration file name to the new DB name. Then modify the configuration file and html interface files to create a new DB.
  9. How do I create a DB file myself when sample DB is not included in the package?
    Never create DB file (the .txt file) yourself. After you configured the .ini file and html interface files, just launch POD through web browser by adding entry to or search the database, POD will find that DB file is missing and will create a new one for you.
  10. Where can I download the newest version of POD?
    Read this.
  11. I cannot understand the documentation, how do I contact the author for help?
    First, please try to read all the documentation files (doc.html, OldbHelp.html, readme.html, even DBAdmin.html and feature.html etc.) thoroughly. If you still cannot understand some specific details of the documentation, you may send email to mingyiliu@yahoo.com or webmaster@ming.ddns.com for help (please write as precisely as you can as to what is the part that you did not understand and what you are trying to do). I (Mingyi Liu) will try to respond to you as soon as possible, but a (timely) response is not guaranteed for unregistered users (sorry about that. I will try my best to answer everybody's questions, but my schedule may not allow responding to all inquiries).
  12. The documentation is too long, is there an easier way to get the DB up and running?
    I am sorry that there is no shortcut here. You need to understand how the DB work so that in case any error happens in the future, you will be able to deal with it; and if you want to modify your DB later or add another DB, you'll be able to do it very fast if you understand the documentation files when you created the first one. Therefore I do not supply a "One-hour-do-it-yourself-DB-setup" version of documentation here, even though it is very possible to provide it.
  13. I want to provide a link in my page to display every entry in the database, but I do not want to provide a search form, how do I do it?
    Use <a href="http://myserver.com/cgi-bin/fldb.exe?keyword=&password=mypassword&act=display&authority=AdminOrUser&DBName=fldb></a>. Of course, you need to replace the "myserver.com", "fldb", "mypassword", "AdminOrUser" with the appropriate value. If you specify keyword=whatever in the above tag, the link will lead to display of the same result as your search with search string "whatever" in a search form.
  14. Do you write custom-made cgi scripts?
    Currently, no.
  15. If I want more features for POD, can I send my request to you and will it be answered?
    Yes, you can always send a request to me at mingyiliu@yahoo.com or webmaster@ming.ddns.com. I will acknowledge that I got your request, but whether I implement the feature(s) you request or not depends on how many such requests I receive.
  16. How do I design the Search and Sort forms in an html page like fldb-search-user.html?
    There are 2 rules for search form: 1. The name of the "select" must be "search field", meaning you must put <select name="search field"> in. 2. You want to use <option value="all">whatever</option> for searching for all items in an entry. This should also be the default search behavior, even though it's not a requirement.
    There are 2 rules for sort form: 1. 1. The name of the "select" must be "sort option", meaning you must put <select name="sort option "> in. 2. If you want the item be sorted in ascending order, you use <option value="DB Item Name">; but if you want it sorted in descending order, you add a '*' in front of DB Item Name like this: <option value="*DB Item Name">.
  17. I have used my language to write all the html interface files, yet I still see some English words on my pages, e.g., the page links "prev" and "next" are in English, not my language, why?
    There are two possible reasons for this: 1. Please read this for help for using .lann file to customize page links and a few other small places that default to English. 2. Some rare errors of the DB are reported in English. If you had set up the DB correctly and your web server is set up right and functioning well, your user should almost never see those error messages. Please check your settings if you or your user do see such messages.
  18. I want to register, do you accept online payments?
    Yes. Currently you can use paypal international online payment service to pay for registration. They use e-mail address as the "account number" for sending and receiving payments. Making payments with them is almost as easy as sending e-mails. If you are an international user, paypal saves you a lot of trouble (you don't have to do the currency exchange and wire transfer to U.S. bank, etc).You can pay me with the method described below. You can read this for a little more information on paypal online payment service. Please read below question #19 for how to pay POD registration fee with paypal.
  19. How do I pay with paypal online payment service?
    My paypal account e-mail address is mingyiliu@yahoo.com. If you do not yet have a paypal account, you may sign up for their service for free (refer to their web site for details) and receive $5 new account bonus. You may also put my e-mail address mingyiliu@yahoo.com as referral address when you sign up for their service, after which paypal will pay me $5 for referral bonus. You can pay me $5 less for your POD registration fee once I received the $5 referral bonus. In effect, by using paypal, POD costs you roughly $10 less (international users may be accessed a transaction fee. Please refer to www.paypal.com for exact charge), and you can pay instantly and internationally without the hustle of the currency exchange and wire transfer to U.S. bank. Please remember that after you send me the payments through paypal, please also send me an e-mail at mingyiliu@yahoo.com to notify me of the e-mail address you prefer to receive my correspondence about the payment, registration instructions, etc.
  20. I think I found a place where POD did not behave as you claimed, what should I do?
    First, I must admit that with the dozens of files included in a POD software package (including 4 sets of template files in POD 5.0), it is very possible that I made a mistake somewhere in some file. That said, I tried my best to proofread and test each file one or more times, and they shall mostly behave as expected. If indeed anything abnormal happens, and you are sure it is not because of your DB settings, please contact me to report it. Thank you.
  21. I have registered already, but I want to return the software and get a refund, can I do that?
    Yes you can, but with conditions---You must prove to me that the software contains serious bugs that will endanger the security of the DB or your web server, or else I will not refund you because softwares cannot truly be returned (a partial refund may be negotiated with regard to the severity of the problem). In stead, if it's a bug that is bothering you, I will fix it and give you the newer version. If POD lacks a feature you desire, I will try to see if my schedule allows an upgrade (note that this is not guaranteed). Because of these conditions, you should take advantage of the 20-day evaluation period and try this software out thoroughly before you register.
  22. How do I convert DB schema?
    Say, your current DB has the following items: "name,email,web site,phone number,time stamp,password" with sizes "20,20,40,25,15,20". You want to change it to "name,phone number,email,status,comment,time stamp,password" with sizes "30,25,20,15,150,15,20". What you want to do is, first backup your old DB and its configuration .ini file by copying the files to wherever you want. This way if something went wrong (like electricity went out) during DB conversion, you can restore the file by copying old DB and .ini file back. Please note that even if electricity went out, POD usually recovers and resumes the DB conversion operation just fine. Copying the DB is just added security---you would never want to risk even any tiny risk for an online DB. After you copied the files, change the "previous entry item name" under "[database entry info]" section under .ini file (or, if you're using DBAdmin.html to configure, the "Names of previous entry items" under "Database Entry Info Configuration" section) to "name,email,web site,phone number,time stamp,password" (effectively you're assigning your current DB items as previous item names, which is truely the case after DB conversion). You do the same for DB item sizes. Then you put the new items names and sizes as the "Names of current entry items" etc. Then you name the data types for the NEW DB items in "entry item data type" under "[database entry info]" (or, "Type of current entry items (string,number,time,phone)" under "Database Entry Info Configuration" section). Data types for the old DB items do not matter now. At last, you set "convert old items to new items" to 1 instead of 0 (or check the "Convert to new items next time POD is run?" checkbox). Save your configuration file or submit the new configurations online. Now you're all set. Next time when POD is activated by a visitor to your DB, it will convert the DB schema and then server the user's request. You may want to be that visitor as conversion of DB file may take a long time if your DB gets huge, and you probably do not want to leave a false slow DB operation impression on your user.
  23. Somehow it seems that POD only recognized part of the items I named for my entry items. Why is that?
    Please note that you should always put a name for each item in your DB entry, and you should always assign a size for each item. You should NEVER leave any item name or size empty like this:"entry item name=name,,telephone,web site,image,status" (in your .ini file). This will cause the "telephone,web site,image,status" items not read in by POD. In fact, make it a habbit not to write anything like "...,,..." in any DB configurations because that will cause anything behind ",," be discarded by POD. You should at least write something like "...,a,..." to avoid losing data behind the second comma.
  24. I just uploaded all the files to my server and POD runs fine. However, I can't find my .ini and .txt files any more on my FTP server. Why is that?
    It's likely that you set "hide files" to 1 instead of 0 in your .ini file or checked the "hide files" checkbox during your online configuration. It is always a good idea to set the "hide files" to 1 for security purposes. But on some FTP server, this will make the hidden files disappear. What you can do to make them reappear is simply set hide files to 0 or uncheck that check box. Next POD is run, it will set files not to be hidden and you will be able to see and update those files manually. However, I strongly encourage you to use DBAdmin.html to manipulate the .ini file online instead of directly modifying .ini file unless you have to. Also try not to manually change the DB file itself (the .txt file) which could introduce errors into the file and damage it. Always let POD modify your DB file for you.
  25. I was a user of Online Database 4.37 or older version. How do I upgrade my old version to this new one?
    I am sincerely sorry that the current registration process disallow direct usage of the old database file. So please try the new POD V5.0 out by building a new test database (you can copy your old DB settings into the new sample .ini files to make a new configuration file and write the html interface files as you would for your old database). If you like the new version and decide to register for it, it will take no time to get your old DB to work with the new version after registration. I feel bad to kind of "trick" my previous users for a registration, but I it indeed is not my intention. I just did not think of a way to get around the current registration process without creating a bleach yet. If I find a solution to let you upgrade old DB file to new version during trial period to try out the new version, I will put it on the web for download immediately (it would be put on the download page on http://ming.ddns.com). But until I find one, please bear with the inconveniences it caused you. Again, I am very sorry for it.
  26. I specified everything in the [report] section, yet I did not receive any statistics report or error report. Why?
    There are 3 possibilities why this could happen: 1. You must have a hit counting item in your DB entries for POD to collect statistics and send them to you. 2. You must have a legitimate SMTP server AND your and/or your web server has the clearance to send e-mail through that SMTP server. Or else SMTP server authorization may fail and there is nothing POD can do. 3. You must set error report and stat report to "1" before POD starts to send report to you. In addition, if your DB is working perfectly and no error occurs, you will not receive any error report.
  27. How often do you put out one upgrade version?
    That really depends. If I or any user found a serious bug, I would try patch it ASAP and put the new version up for download. For other situations, it really depends on my schedule and request frequency.
  28. I think I did everything right, yet my DB named test that's put under my cgi-bin\test subdirectory generated an error message "You need to register to operate on more than one DB for more than 20 days". Why?
    That is because you are using unregistered version of POD. You have to name your DB "fldb" and put DB files under cgi-bin\fldb subdirectories. Your unregistered version will only recognize the DB named "fldb".
  29. I am using Sambar server. I get a message that ini file cannot be found. Why?
    Sambar Server V4.3 or earlier for Windows has a problem with absolute file paths. I am contacting them to check it out. Regardless of their action, I figured out a way to get around it and the new POD version 5.02 works on Sambar server. In addition, you may want to follow the following instruction to set security on Sambar for POD DBs:
    1.Launch the index.html under the docs subdirectory of the directory you installed Samba in.
    2.Click on the "system administration" link. If this is your first time doing administration, type "admin" as user and leave the password blank. If you've done it before, use the user name and password you last used (or if you changed them, use the new ones).
    3.Click on the icon next to "user management". Click on all the trashcan icons next to the user names that you want to delete (You should delete anonymous, guest users). Then you should create a user name yourself by clicking on "create user" link. The create user page will appear on right pane, and you can assign user name and password there (let's assume you made a user "myname". You should also click on "admin" user which belongs to group "root" and assign a password to it too.
    4.Go back to administration page by pressing "back" button of your browser. This time click the icon next to "server configuration".
    5.Scoll down the page until your find "Enforce .htaccess" on the left side of the page. Click on the "yes" radio button to enable .htaccess". Go to the bottom of the page and press "update server configuration" button.
    6.Restart the Sambar server. Give it some time to come back on (it may take a few minutes). This step is required for the settings set above to take effect (this is unlike all other servers I have used, therefore I spent an hour trying desparately to figure out what I did wrong. They did not make it easy because their documentation on .htaccess did not mention restarting server, at least I did not see such notice until I went for "security overview").
    7.Put fldb.exe, fldbconf.exe under the cgi-bin directory of Sambar4.3 server. Make a fldb subdirectory under cgi-bin and put these files under that subdirectory--fldb.ini, fldb.lann, notfound.html, opcomplete.html, pwd.html, multi-admin.html, multi-user.html, sing-user.html, sing-admin.html, infoneed.html. The fldb-search-user.html, fldb-search-admin.html, fldb-add.html files can be put anywhere under the server root directory.
    8.Open notepad or any text editor, put these two lines in: AuthName "Authorized Only" require user myname
    9.Now save this file as .htaccess under the fldb subdirectory. 10.Now your fldb subdirectory is protect and only the user "myname" can access files under fldb directory. So your DB settings and DB file itself are safe now!
  30. 11 html files seems too many for me. Is there any way to reduce my writing effort?
    Yes. Starting with V5.04, two new link types are introduced --- "admin-index" and "user-index". The former one is especially useful. You can make an fldb-entry.html file that is a combination of fldb-add.html and fldb-search-user.html. Then you put a link like "Please click <a href="admin-index">here</a> to modify your entry" in sing-user.html (this link, when replaced by POD dynamically, will lead to sing-admin.html, which was previous only led to through multi-admin.html by fldb-search-user.html). This way you do not have to write fldb-search-admin.html, and you can get rid of multi-admin.html too. A total reduction of 3 files from the original 11 files. It may not sound much because you still have to write 8 files, but the aesthetic improvement could be siginificant. You can go to http://www.uiowa.edu/~facss/info.html for an example of this "admin-index" and "user-index" usage (PLEASE DO NOT CHANGE ANYTHING THERE because this database is in actual use. It is NOT a sample database). The tags are found when you press "display all ads" link, then click on any individual ads, you'll see a display of an individual advertisement where there is a link on the bottom of the page that says "click here to ...". That link on "here" is an "admin-index" link.
  31. Can you recommend some free web servers that I can use to run POD on?
    You may refer to winfiles.com for NT servers and Win9x servers. There are also a lot of web servers (some free) on download.com. Sambar web server is a nice one. Microsoft's Personal Web Server (PWS) is a bit too big and offers less feature, yet it runs OK and very easy to use. You can download PWS from Microsoft's web site. Apache was and probably is still the No.1 web server, yet its Windows version is not easy to use at all. But if you want a free one that's popular and stable and well-tested for security, this is the one.
  32. Can I run POD on a local computer without using the internet?
    Yes. All you need to do is to install a web server on your machine (and learn to use it of course!), and then do everything exactly the same as you would do for using POD on the internet, with one exception: For web server's address in the .ini file and the .html files, you should use 127.0.0.1 as your web server address. This is a special loopback address which will direct request to the server goes the local route without using the internet.
  33. What web servers or OS did you test for POD on?
    I have tested POD on Win98, NT4.0 and 2000. The program runs on Microsoft IIS, PWS, and peer web service. It also runs on Sambar Web Server (V4.3), Apache (V.1.3.12) and O'Reilly's WebSite Pro Server. Any web server that supports cgi scripts should be able to let POD run, if you configured the server and POD correctly.

Bug Report

Please report any bug to mingyiliu@yahoo.com or webmaster@ming.ddns.com and write down the symptom of the bug, when and where it happened. I will contact you for details if needed, and if confirmed, I will send an updated version back to you and make modifications to the program listed at download sites.

Notes:

cgi script: cgi script is a software application that needs a web server to function --- it takes input from web server (the input is likely coming from a client of the server, maybe a user's web browser), processes the data and outputs result back to web server, which then sends the result to end user's web browser for display. POD requires that you have access to a webserver which runs on Windows95/98/NT4/2000 and supports cgi. cgi stands for Common Gateway Interface. It's a standard to be used for executable files to communicate with web servers. You can get some introduction from NCSA's site.

SQL a programming language used in relational database creation and operation.

Oracle is a trademark for Oracle Corporation. Oracle database is their flagship product that practically dominates the internet database market.

DBA Database administrator. They are the very expensive computer specialists who take care of your DB, but they usually have outstanding expertise and heavy responsibility to justify their sky-high sallaries.

zip file: zip file (or zip archive) is a file compressed with zip format. If you do not have a software to compress to or decompress from zip files, go to www.winzip.com to get one. They have the best zip software IMO.

PODx_x.exe: The x_x is version number. For example, POD5_0.exe is POD version 5.0.

Schema: It specifies the structure of the DB. In POD's case, it's about the entry item's length, sequence, and total number, etc.

csv: comma separated value. This is a special text file format in which each line represent an entry (or so to speak), and all data items in that entry are separated by a comma (","). Many DB programs support exporting the data files to csv format. POD supports importing from and exporting to csv files. The "source.txt" file in this package demonstrate what csv file looks like. Usually the extension of the file is .csv, but with .txt it is still usable and recognizable by POD too. Please note that in unregistered version of POD, importing from csv files is not supported.

POD: Personal Online Database. It sometimes refers to only fldb.exe which is the main program. Other times it refers to the whole software package that contains many files.

POD-specific tags: These are a set of html-like tags that are created for POD. They all take the form of ordinary html tags (e.g., <a href="DB Item Name">, you need to substitute the "DB Item Name" with a real DB Item Name you assigned, and POD will provide the data in here with hypertext link to the data itself) or html comment style (e.g., <!--DBItem="DB Item Name" Link="email">, again, you need to substitute the "DB Item Name" with a real DB Item Name you assigned, and POD will provide the data in here with email link to the data itself). The details of these tags are described here.

cgi-bin: This is a special directory on your web server that usually allows "execute" and/or "script" access, but disallows "read" access. With such settings, a cgi script may work with the web server to display dynamically-generated web pages to end users using the data users sent to it. One web server may have many cgi-bin directories to many users. You should contact your web server administrator for permission to use cgi script in a cgi-bin directory, and where that cgi-bin directory is. You can FTP the files to the cgi-bin directory of the web server (FTP stands for file transfer protocol. There are a million FTP client applications on the web, you can go to download.com and search for FTP and find one that is good for your usage). Please note that you should confirm with your web server administrator that they did disallow "read" access to your cgi-bin directory! That is very important to the security of your DB files. Users that use Sambar web server V4.3 or higher please read this.Other users please read this for security notes.

item: Each DB entry is composed of many items. For example, if you're using an addressbook, your DB entries may contain items like "name", "phone number", "e-mail address", etc.

Entry: Each DB is composed of many entries. Each line in the text-based DB file (e.g., fldb.txt) is an entry. Each entry is a collection of many items that represent the information for an entity. For example, if you're using an addressbook, an entity is a person, and an entry contains all the information about that person, which may be composed of items like "name", "phone number", "e-mail address", etc.

DB html interface files. These include DBName-add.html, DBName-search-admin.html, DBName-search-user.html, NotFound.html, InfoNeed.html, opcomplete.html, PWD.html, multi-admin.html, sing-admin.html, multi-user.html, and sing-user.html. The "DBName" here may be fldb, gbook, lib, or prod, and you can rename it (but you cannot rename the latter 8 html files). All these files are compressed into the fldb.zip, gbook.zip, etc. The named of these files cannot be changed, and they must be put in a subdirectory under your cgi-bin directory.

Paypal Online Payment Service
Paypal is an online service that enables you send or receive online payments internationally. You need to sign on for the service at their web site (www.paypal.com). If you are a non-U.S. (international) user, your payment to me or others may be charged a fee. However, if you are an international user, paypal saves you a lot of trouble (you don't have to do the currency exchange and wire transfer to U.S. bank, etc).