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.

Reply via email to