Jordan, did you have a chance to read all my logic and check out the mySQL tables? You're one of the guys on here I was hoping to get some constructive criticism from.
But, if at first read everything looks fine to you, that's all I need to hear. Either way, thanks! On Fri, Oct 25, 2013 at 1:59 PM, Jordan Michaels <[email protected]>wrote: > Cool. I don't think it's compatible with OpenBD so be good to have another > choice out there! > > Warm Regards, > Jordan Michaels > > > On 10/25/2013 11:53 AM, Jason King wrote: > >> 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] >> <mailto:[email protected]>> wrote: >> >> Seen this yet? >> >> >> https://github.com/boltz/__**CFShorty<https://github.com/boltz/__CFShorty>< >> 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> >> <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> >> <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> >> >> >> <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@__googlegro**ups.com<http://googlegroups.com> >> >> <mailto:openbd%2Bunsubscribe@**googlegroups.com<openbd%[email protected]> >> >. >> For more options, visit >> >> https://groups.google.com/__**groups/opt_out<https://groups.google.com/__groups/opt_out> >> >> <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> >> >> >> <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@__googlegro**ups.com<http://googlegroups.com> >> >> <mailto:openbd%2Bunsubscribe@**googlegroups.com<openbd%[email protected]> >> >. >> For more options, visit >> https://groups.google.com/__**groups/opt_out<https://groups.google.com/__groups/opt_out> >> >> <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<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.
