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.
