Yes sir I have. Using similar principles (run redirectScript.cfm in place
of 404 error page).


On Fri, Oct 25, 2013 at 1:51 PM, Jordan Michaels <[email protected]>wrote:

> Seen this yet?
>
> https://github.com/boltz/**CFShorty <https://github.com/boltz/CFShorty>
>
> Warm Regards,
> Jordan Michaels
>
>
> On 10/25/2013 10:18 AM, Jason Allen wrote:
>
>> Anybody? I'd really like some input from the community if possible.
>>
>>
>>
>> On Thursday, October 24, 2013 12:52:17 PM UTC-5, Jason Allen wrote:
>>
>>     Hi Guys,
>>
>>     I've been working on a project for quite sometime, and one of my
>>     core features is essentially finished.  While I haven't stress
>>     tested it it seems to work great. Along the way, I've had smaller
>>     questions and I've had them resolved through this community. Now
>>     that it's all working, I want to look back and make sure I'm doing
>>     things the best way.
>>
>>     I wrote up an outline of how it all works, and I'm hoping some of
>>     you can take a look and see if anything design flaws jump out at
>>     you. If I'm going to change anything, now is the time. If I can't
>>     find any major issues, I'm going to push this out for a small beta
>>     trial.
>>
>>     Can you guys/gals take a quick read through this? It's pretty
>>     straightforward and self explanatory. s Thanks! Once I get this
>>     finished, I'll be happy to post my source code if anybody likes this
>>     function.
>>
>>
>>     _*URL Redirects *_
>>
>>     _*Overview*_
>>
>>
>>     The goal with this function is to provide users with a url
>>     shortening service (aka tinyURL and Bit.ly). Users will be able to
>>     create shortened urls that point to other websites, but the
>>     shortened url's will also be used for other features in the app
>>     meaning the redirect function design needs to inclusive of the needs
>>     of these other features.
>>
>>     _*How it works*_
>>
>>
>>     When 404 error thrown (resource not found), a function will strip
>>     down the requested URL to get the subfolder then query that
>>     subfolder against a database. If no match found, throw 404 error.
>>
>>     1) User requests company.com <http://company.com>/**mydemopage
>>
>>
>>     2) /mydemopage is not a real directory so server throws 404 error
>>
>>     3) 404 error script will first run the url parsing script to strip
>>     out the relevant subfolder 'mydemopage'
>>
>>     4) Script will then query redirect database for 'mydemopage' and if
>>     there is a match, forward user to the URL specified in the database.
>>     If there is no match, present 404 Error page.
>>
>>
>>
>>     _*Functional Considerations*_
>>
>>
>>     * Along with making specific redirects, users can also use the site
>>     for other reasons, such as to host images, places classified ads,
>>     make custom web-pages, etc. These features may also create a
>>     redirect, such as 'details.at/mynewpage
>>     <http://details.at/mynewpage>' will point to content created by the
>>
>>     user.
>>
>>     * Anonymous/non custom url's (shortened url's with randomly
>>     generated subfolders) will be re-used unless the original creator
>>     specifies otherwise. What this means, is that if someone submits a
>>     long url that has been used before, they will be given the same
>>     shortened URL as the last user. If the creator doesn't want their
>>     redirect reused, they must flag the redirect as 'unique' prior to it
>>     being reused.
>>
>>     *If a redirect is re-used, it can no longer be flagged as unique,
>>     and is instead flagged as 'locked' and can no longer be edited.
>>
>>     *Redirects can be edited as long as they are assigned to a specific
>>     user and not locked.
>>
>>
>>
>>     _*Database Structure*_
>>
>>
>>     There are several tables involved; a core table, ownership table,
>>     hit detail table, and a hit count table.
>>
>>
>>     Table 1) redirects - This is the primary table that contains the
>>     core data needed for the redirect system. For this application,
>>     most, if not all of this data is needed anytime a forward is
>>     initiated. In the context of this app, there isn't any performance
>>     advantage to breaking these tables into smaller units, adding more
>>     uniqueID's, etc.
>>
>>     Table 2) redirectOwners - Since multiple users can all own a single
>>     redirect, a one-to-many relationship exists, and a seperate table is
>>     needed.
>>
>>     Table 3) Hits - Everytime a redirect is utilized, a 'hit' is logged
>>     and details about the hit (referrer, browser, time, etc) are logged
>>     to this table.
>>
>>     /*location is compiled when the record is created by querying a
>>
>>     table of geographical locations based on IP. If recompiled at a
>>     later date, the IP location information may change and misrepresent
>>     the original location. This is why I keep the location in the table
>>     and do not compile it based on IP every single time the hit details
>>     are viewed. /
>>
>>     /*The referrer host and string are kept seperating so that visits
>>
>>     can be grouped by host, not just the overall url. For instance, if a
>>     redirect is posted on 20 different places in facebook, stats will
>>     show all the hits from facebook, plus each specific hit from the
>>     various locations on facebook. /
>>
>>
>>     Table 4) hitCounter - To keep an accurate and current count of hits
>>     to a particular redirect, a table that logs each new hit as a +1 to
>>     the previous will be used in conjunction with the existing 'hits'
>>     table. This table will simply icrement a starting value of 0 by 1
>>     everytime a hit is registered. This method prevents a hit count from
>>     ever needing to be compiled by counting records in the hit detail
>>     table.
>>
>>
>>
>>     *Table - ' redirects'*
>>
>>     /ID/-- int #unique ID
>>     /domain/-- varchar(255) #users can select several domains as root
>> domain
>>     /subFolder/-- varchar(30) #subfolder
>>     /redirectUrl/-- varchar(5000) #destination URL
>>     /createdDate/-- datetime #date the redirect was created
>>     /duration/-- int(11) #how long the redirect will last. default is 3
>>     years.
>>     /status /-- bit(1) #active, suspended, etc
>>     /lock/-- bit(1) #redirect url can't be edited/changed. multiple
>>     owners force lock
>>     /unique/-- bit(1) #redirect can't be re-used by others / prevents
>>     multiple owners
>>     /custom/-- bit(1) #subfolder is custom entry
>>     /extRedirect/-- bit(1) #redirect url is external site
>>     /type/-- smallint(6) #what kind of redirect it is for. simple
>>     redirect, ad, page, etc.
>>
>>
>>
>>     *Table - 'redirectOwners'*
>>
>>     /ownerID/-- int #unique record ID
>>     /ID/-- #ID of redirect
>>     /userID/-- #id of owner
>>     /createdDate/-- datetime #date the redirect was created
>>     /createdIP/-- varchar(15) #ip
>>
>>
>>
>>     *Table - 'hits'*
>>
>>     /hitID/-- int #hit record ID
>>     /ID/-- int #id of redirect
>>     /hitDate/-- datetime #timestamp
>>     /refererHost/-- varchar(255) #referrer host name
>>     /refererString /-- varchar(255) #referrer string #hostname+string =
>>     referrer
>>     /refererType/-- varchar(255) #browser type
>>     /location/-- varchar(50) #country of origin
>>     /dnsIP/-- varchar(15) #ip
>>
>>
>>
>>     *Table - 'hitCounter'*
>>
>>     /hitCounterID/-- int #hit counter record ID
>>     /ID/-- int #id of redirect
>>     /hitCount/-- int #number of registered hits to a redirect
>>
>>
>> --
>> --
>> online documentation: http://openbd.org/manual/
>> http://groups.google.com/**group/openbd?hl=en<http://groups.google.com/group/openbd?hl=en>
>>
>> ---
>> You received this message because you are subscribed to the Google
>> Groups "Open BlueDragon" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to 
>> openbd+unsubscribe@**googlegroups.com<openbd%[email protected]>
>> .
>> For more options, visit 
>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>> .
>>
>
> --
> --
> online documentation: http://openbd.org/manual/
> http://groups.google.com/**group/openbd?hl=en<http://groups.google.com/group/openbd?hl=en>
>
> --- You received this message because you are subscribed to the Google
> Groups "Open BlueDragon" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to 
> openbd+unsubscribe@**googlegroups.com<openbd%[email protected]>
> .
> For more options, visit 
> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
> .
>

-- 
-- 
online documentation: http://openbd.org/manual/
 http://groups.google.com/group/openbd?hl=en

--- 
You received this message because you are subscribed to the Google Groups "Open 
BlueDragon" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to