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>
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>
---
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
<mailto: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
<mailto: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.
--
--
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.