Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Page 1 of 2 12 LastLast
Results 1 to 15 of 19
  1. #1
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts

    Question Simple ELSE IF condition with document.referrer and window.location.href not working.

    Hi all!
    I have this very simple IF statement with document.referrer and window.location.href and it doesn't work.
    Can anyone suggest as to what I might be doing wrong?

    Code:
    else if ((document.referrer == undefined) || (!document.referrer) || (document.referrer == '') || (window.location.href.indexOf('referrer1') < 0)) {
    
    document.write('Condition 2 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = '';
    
    var userReferrerSearchTermPre = '';
    
    var IsCookieRequired = 'no';
    
    }
    Thank you for helping!
    Last edited by xeirus; 05-29-2013 at 04:08 PM.

  • #2
    Regular Coder
    Join Date
    Apr 2012
    Location
    St. Louis, MO
    Posts
    985
    Thanks
    7
    Thanked 101 Times in 101 Posts
    In the following:
    else if ((document.referrer == undefined), undefined is a variable. Make it a string "undefined".
    ^_^

    If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
    *
    The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".

  • #3
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by WolfShade View Post
    In the following:
    else if ((document.referrer == undefined), undefined is a variable. Make it a string "undefined".
    Thanks WolfShade and
    what about checking the :
    (window.location.href.indexOf('referrer1') < 0)

  • #4
    Regular Coder
    Join Date
    Apr 2012
    Location
    St. Louis, MO
    Posts
    985
    Thanks
    7
    Thanked 101 Times in 101 Posts
    I prefer to use document.URL instead of window.location.href (assuming you're looking for a URL parameter?)
    ^_^

    If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
    *
    The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".

  • #5
    Regular Coder
    Join Date
    Aug 2010
    Posts
    945
    Thanks
    19
    Thanked 205 Times in 203 Posts
    try this code ...

    <script>
    if(document.xreferrer == undefined)alert("x")//alerts
    </script>

    now try this ...

    <script>
    if(document.xreferrer == 'undefined')alert("x")//does not alert
    </script>

  • #6
    Senior Coder rnd me's Avatar
    Join Date
    Jun 2007
    Location
    Urbana
    Posts
    4,184
    Thanks
    10
    Thanked 569 Times in 550 Posts
    is document.referrer cross-browser? i though it was a ff+ch thing...
    my site (updated 13/9/26)
    BROWSER STATS [% share] (2014/1/19) IE7:0.2, IE8:6.7, IE11:7.4, IE9:3.8, IE10:4.4, FF:18.3, CH:43.6, SF:7.8, MOBILE:27.5

  • #7
    Regular Coder
    Join Date
    Apr 2012
    Location
    St. Louis, MO
    Posts
    985
    Thanks
    7
    Thanked 101 Times in 101 Posts
    I got document.referrer to work in IE8 (not IE7 compat), FF17, and Chrome (whatever that is up to, now..)
    ^_^

    If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
    *
    The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".

  • #8
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by WolfShade View Post
    I prefer to use document.URL instead of window.location.href (assuming you're looking for a URL parameter?)
    That's correct. referrer1 is a parameter.
    I'll test it with document.URL instead.

  • #9
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by DaveyErwin View Post
    try this code ...

    <script>
    if(document.xreferrer == undefined)alert("x")//alerts
    </script>

    now try this ...

    <script>
    if(document.xreferrer == 'undefined')alert("x")//does not alert
    </script>
    Thank you Davey.

    Originally it was:
    undefined

    WolfShade suggested:
    "undefined"

    You're suggesting
    undefined
    and not
    'undefined'

    So I'll try both (undefined and "undefined") once again and see if it works.

  • #10
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by rnd me View Post
    is document.referrer cross-browser? i though it was a ff+ch thing...
    WolfShade is right, add IE8 into your list.

  • #11
    Senior Coder rnd me's Avatar
    Join Date
    Jun 2007
    Location
    Urbana
    Posts
    4,184
    Thanks
    10
    Thanked 569 Times in 550 Posts
    Quote Originally Posted by xeirus View Post
    WolfShade is right, add IE8 into your list.
    cool, that's everyone in my book.

    "document.xreferrer" is still a typo though...

    "undefined" is only used after typeof, it shouldn't be quoted.

    if you want to check for a property, compare it to undefined (no quotes) or nothing.


    ex:
    Code:
    if (!document.referrer || location.href.indexOf('referrer1') != -1) {
    Last edited by rnd me; 05-29-2013 at 05:48 PM.
    my site (updated 13/9/26)
    BROWSER STATS [% share] (2014/1/19) IE7:0.2, IE8:6.7, IE11:7.4, IE9:3.8, IE10:4.4, FF:18.3, CH:43.6, SF:7.8, MOBILE:27.5

  • #12
    Regular Coder
    Join Date
    Apr 2012
    Location
    St. Louis, MO
    Posts
    985
    Thanks
    7
    Thanked 101 Times in 101 Posts
    Wasn't thinking about the typeof - I just automatically use typeof and didn't think about it.
    ^_^

    If anyone knows of a website that can offer ColdFusion help that isn't controlled by neurotic, pedantic jerks* (stackoverflow.com), please PM me with a link.
    *
    The neurotic, pedantic jerks are not the owners; just the people who are in control of the "popularity contest".

  • #13
    Regular Coder
    Join Date
    Aug 2010
    Posts
    945
    Thanks
    19
    Thanked 205 Times in 203 Posts
    Quote Originally Posted by rnd me View Post
    cool, that's everyone in my book.

    "document.xreferrer" is still a typo though...

    "undefined" is only used after typeof, it shouldn't be quoted.

    if you want to check for a property, compare it to undefined (no quotes) or nothing.


    ex:
    Code:
    if (!document.referrer || location.href.indexOf('referrer1') != -1) {
    document.xreferrer is an undefined
    property of document

  • #14
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by rnd me View Post
    cool, that's everyone in my book.

    "document.xreferrer" is still a typo though...

    "undefined" is only used after typeof, it shouldn't be quoted.

    if you want to check for a property, compare it to undefined (no quotes) or nothing.


    ex:
    Code:
    if (!document.referrer || location.href.indexOf('referrer1') != -1) {
    Hi rnd me,
    Tried your idea as well, but doesn't work.

    This is very strange, both of these ELSE IF codes don't work if they are inside an existing IF statement.

    Your code:
    Code:
    if (!document.referrer || location.href.indexOf('referrer1') != -1) {
    Previous code:
    Code:
    else if ((document.referrer == "undefined") || (!document.referrer) || (document.referrer == "")) {
    Any thoughts?
    Last edited by xeirus; 05-30-2013 at 12:44 PM.

  • #15
    New Coder
    Join Date
    Aug 2008
    Posts
    77
    Thanks
    23
    Thanked 0 Times in 0 Posts
    Rather than taking everyone on a wild goose chase, below is the entire code.
    The whole code works, except Condition 3.
    If a user visits this page directly then the "document.referrer" would be empty/undefined/null/blank which is supposed to activate "Condition 3".
    I have 7 conditions, all of them work except Condition 3.

    Code:
    /*//////////////////////*/
    /* Entire Referring URL */
    /*//////////////////////*/
    document.write('Entire Referring URL:');
    document.write('<br>');
    var userReferrerFull = document.referrer;
    document.write(userReferrerFull);
    document.write('<br><br>');
    
    /*///////////////////*/
    // Referring Domain: */
    /*///////////////////*/
    document.write('Referring Domain:');
    document.write('<br>');
    var pathArray = document.referrer.split( '/' );
    var userReferrerDomain = pathArray[2];
    document.write(userReferrerDomain);
    document.write('<br><br>');
    
    /*/////////////////*/
    // Our Own Domain: */
    /*/////////////////*/
    // Find our own Domain Name
    var ThisDomainName = window.location.host;
    document.write('ThisDomainName:');
    document.write('<br>');
    document.write(ThisDomainName);
    document.write('<br><br>');
    
    document.write('window.location.href:');
    document.write('<br>');
    document.write(window.location.href);
    document.write('<br>');
    document.write('<br>');
    
    /*if ((document.referrer == "undefined") || (!document.referrer) || (document.referrer == "")) {
    
    document.write('<br>');
    document.write('Condition ZOOPIE DOOPIE Activated!');
    document.write('<br>');
    document.write('<br>');
    
    var referrer1_paramPre = '';
    
    var userReferrerSearchTermPre = '';
    
    var IsCookieRequired = 'no';
    
    }*/
    
    
    // this fixes an issue with the old method, ambiguous values
    // with this test document.cookie.indexOf( name + "=" );
    function Do_Cookie_Check( check_name ) {
    	// first we'll split this cookie up into name/value pairs
    	// note: document.cookie only returns name=value, not the other components
    	var a_all_cookies = document.cookie.split( ';' );
    	var a_temp_cookie = '';
    	var cookie_name = '';
    	var cookie_value = '';
    	var b_cookie_found = false; // set boolean t/f default f
    
    	for ( i = 0; i < a_all_cookies.length; i++ )
    	{
    		// now we'll split apart each name=value pair
    		a_temp_cookie = a_all_cookies[i].split( '=' );
    
    
    		// and trim left/right whitespace while we're at it
    		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
    
    		// if the extracted name matches passed check_name
    		if ( cookie_name == check_name )
    		{
    			b_cookie_found = true;
    			// we need to handle case where cookie has no value but exists (no = sign, that is):
    			if ( a_temp_cookie.length > 1 )
    			{
    				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
    			}
    			// note that in cases where cookie is initialized but no value, null is returned
    			return cookie_value;
    			break;
    		}
    		a_temp_cookie = ""; // used to be null instead of "" 
    		cookie_name = '';
    	}
    	if ( !b_cookie_found )
    	{
    		return ""; // used to be null instead of "" 
    	}
    }
    
    //////////////////////////////////////////////////////////////////
    // Do a Cookie Check to see if the Cookie Name returned "null"  //
    // if it did return "null", then run next step onwards or else  //
    // do nothing as shown in the end.                              //
    //////////////////////////////////////////////////////////////////
    if ( Do_Cookie_Check( 'refcookie' ) == "") // used to be null instead of "" 
    { 
    
    
    ///////////////////////////////////
    ///////////////////////////////////
    // parseUri 1.2.2
    // (c) Steven Levithan <stevenlevithan.com>
    // MIT License
    
    function parseUri (str) {
    	var	o   = parseUri.options,
    		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
    		uri = {},
    		i   = 14;
    
    	while (i--) uri[o.key[i]] = m[i] || "";
    
    	uri[o.q.name] = {};
    	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
    		if ($1) uri[o.q.name][$1] = $2;
    	});
    
    	return uri;
    };
    
    parseUri.options = {
    	strictMode: false,
    	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    	q:   {
    		name:   "queryKey",
    		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    	},
    	parser: {
    		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
    		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    	}
    };
    ///////////////////////////////////
    ///////////////////////////////////
    
    // Check if the Referring Domain is external
    // or our own Domain Name
    if (userReferrerDomain.indexOf(ThisDomainName) > -1 ) {
        // Do Nothing !
        document.write('<font color="#FF0000">Referrer is ThisDomainName so doing nothing!</font>');
        document.write('<br>');
    
    document.write('Condition 1 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = '';
    
    var userReferrerSearchTermPre = '';
    
    var IsCookieRequired = 'no';
    
    }
    // Option 2
    // Visitor is from a Referrer's Site
    else if (window.location.href.indexOf('referrer1') > -1 ) {
    
    document.write('Condition 2 Activated!');
    document.write('<br>');
    
    function gup( name )
    {
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
    	if( results == null )
          return "";
        else
          return results[1];}
    
    var referrer1_paramPre = gup( 'referrer1' );
    
    var userReferrerSearchTermPre = 'N/A';
    
    var IsCookieRequired = 'yes';
    
    }
    // Option 3
    // Absolutely Direct Visitor
    //else if ((document.referrer == "undefined") || (!document.referrer) || (document.referrer == "") || (window.location.href.indexOf('referrer1') < 0)) {
    else if ((document.referrer == "undefined") || (!document.referrer) || (document.referrer == "")) {
    
    document.write('Condition 3 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = '';
    
    var userReferrerSearchTermPre = '';
    
    var IsCookieRequired = 'no';
    
    }
    // Option 4
    // User is referred from Google
    else if (userReferrerDomain.indexOf('google') > -1 ) {
    
    document.write('Condition 4 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = userReferrerDomain;
    
    var userReferrerSearchTermPre = parseUri(document.referrer).queryKey.q;
    
    var IsCookieRequired = 'yes';
    
    }
    // Option 5
    // User is referred from Bing
    else if (userReferrerDomain.indexOf('bing') > -1 ) {
    
    document.write('Condition 5 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = userReferrerDomain;
    
    var userReferrerSearchTermPre = parseUri(document.referrer).queryKey.q;
    
    var IsCookieRequired = 'yes';
    
    }
    // Option 6
    // User is referred from Yahoo
    else if (userReferrerDomain.indexOf('yahoo') > -1 ) {
    
    document.write('Condition 6 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = userReferrerDomain;
    
    var userReferrerSearchTermPre = parseUri(document.referrer).queryKey.p;
    
    var IsCookieRequired = 'yes';
    
    }
    // Option 7
    // User is referred from any other Site.
    else {
    
    document.write('Condition 7 Activated!');
    document.write('<br>');
    
    var referrer1_paramPre = userReferrerDomain;
    
    var userReferrerSearchTermPre = parseUri(document.referrer).relative;
    
    var IsCookieRequired = 'yes';
    
    }
    // decodeURIComponent decodes every ASCII
    // character in the URI except the + sign.
    // So, in the end we use the magic of
    // .replace(/\+/g, " ") which removes the
    // + sign throughout the string.
    document.write('Search Term:');
    document.write('<br>');
    var userReferrerSearchTerm = decodeURIComponent(userReferrerSearchTermPre).replace(/\+/g, " ");
    document.write(userReferrerSearchTerm);
    document.write('<br>');
    document.write('<br>');
    document.write('referrer1_param:');
    document.write('<br>');
    var referrer1_param = referrer1_paramPre;
    document.write(referrer1_param);
    document.write('<br>');
    document.write('<br>');
    document.write('IsCookieRequired:');
    document.write('<br>');
    document.write(IsCookieRequired);
    
    // Combine all VARs into one combined
    // Cookie value in order to be able
    // to store it all in one cookie.
    var CookieValuesCombined = ',,'+referrer1_param+',,'+userReferrerDomain+',,'+userReferrerSearchTerm+',,'; 
    
    
    function Set_Cookie( name, value, expires, path, domain, secure )
    {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );
    
    /*
    if the expires variable is set, make the correct
    expires time, the current script below will set
    it for x number of days, to make it for hours,
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    
    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
    }
    
    
    // this fixes an issue with the old method, ambiguous values
    // with this test document.cookie.indexOf( name + "=" );
    function Get_Cookie( check_name ) {
    	// first we'll split this cookie up into name/value pairs
    	// note: document.cookie only returns name=value, not the other components
    	var a_all_cookies = document.cookie.split( ';' );
    	var a_temp_cookie = '';
    	var cookie_name = '';
    	var cookie_value = '';
    	var b_cookie_found = false; // set boolean t/f default f
    
    	for ( i = 0; i < a_all_cookies.length; i++ )
    	{
    		// now we'll split apart each name=value pair
    		a_temp_cookie = a_all_cookies[i].split( '=' );
    
    
    		// and trim left/right whitespace while we're at it
    		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
    
    		// if the extracted name matches passed check_name
    		if ( cookie_name == check_name )
    		{
    			b_cookie_found = true;
    			// we need to handle case where cookie has no value but exists (no = sign, that is):
    			if ( a_temp_cookie.length > 1 )
    			{
    				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
    			}
    			// note that in cases where cookie is initialized but no value, null is returned
    			return cookie_value;
    			break;
    		}
    		a_temp_cookie = null;
    		cookie_name = '';
    	}
    	if ( !b_cookie_found )
    	{
    		return null;
    	}
    }
    
    
    // this deletes the cookie when called
    function Delete_Cookie( name, path, domain ) {
    if ( Get_Cookie( name ) ) document.cookie = name + "=" +
    ( ( path ) ? ";path=" + path : "") +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
    
    
    // remember, these are the possible parameters for Set_Cookie:
    // name, value, expires, path, domain, secure
    if ( IsCookieRequired == 'yes' )
    {
    Set_Cookie( 'refcookie', CookieValuesCombined, '365', '/', '', '' );
    }
    else {}
    
    
    function WriteiFrameURL () { 
    var iFrameLocation = "refcount.php?referrer1_param="+referrer1_param+"&userReferrerDomain="+userReferrerDomain+"&userReferrerSearchTerm="+userReferrerSearchTerm; 
    document.write('<iframe src="' + iFrameLocation + '" name="test_referrer_counter" id="test_referrer_counter" width="5" height="5"  frameborder="0" allowTransparency="true">'); 
    } 
    //////////////////////////////////////////////////////////////////
    // Learnt the hard way, that unlike PHP, JavaScripts can't have //
    // same function names in If-Then-Else Statements. So have to   //
    // convert the Function to a VAR                                //
    //////////////////////////////////////////////////////////////////
    var WriteiFrameURL = WriteiFrameURL (); 
    
    ReservationURL = function ReservationURL () { 
    location.href = "https://www.domain.tld/file.php?referrer3="+referrer1_param+"&userReferrerDomain="+userReferrerDomain+"&userReferrerSearchTerm="+userReferrerSearchTerm; 
    }
    
    OnlineDepositURL = function OnlineDepositURL () { 
    location.href = "https://www.domain.tld/file.php?referrer3="+referrer1_param+"&userReferrerDomain="+userReferrerDomain+"&userReferrerSearchTerm="+userReferrerSearchTerm; 
    }
    
    }
    
    //////////////////////////////////////////////////////////////////
    // But if a Cookie already exist with some value in it, then    //
    // do nothing as shown below.                                   //
    //////////////////////////////////////////////////////////////////
    else {
    var Pre_Existing_Cookie_Value = Do_Cookie_Check( 'refcookie' );
    
    
    document.write('Pre_Existing_Cookie_Values :');
    document.write('<br>');
    var Pre_Existing_Cookie_Value_Final = Pre_Existing_Cookie_Value.split( ',,' );
    var Pre_Existing_Cookie_Value_referrer1_param = Pre_Existing_Cookie_Value_Final[1];
    var Pre_Existing_Cookie_Value_userReferrerDomain = Pre_Existing_Cookie_Value_Final[2];
    var Pre_Existing_Cookie_Value_userReferrerSearchTerm = Pre_Existing_Cookie_Value_Final[3];
    document.write(Pre_Existing_Cookie_Value_referrer1_param);
    document.write('<br>');
    document.write(Pre_Existing_Cookie_Value_userReferrerDomain);
    document.write('<br>');
    document.write(Pre_Existing_Cookie_Value_userReferrerSearchTerm);
    
    
    function WriteiFrameURL2 () { 
    var iFrameLocation = "refcount.php?referrer1_param="+Pre_Existing_Cookie_Value_referrer1_param+"&userReferrerDomain="+Pre_Existing_Cookie_Value_userReferrerDomain+"&userReferrerSearchTerm="+Pre_Existing_Cookie_Value_userReferrerSearchTerm; 
    document.write('<iframe src="' + iFrameLocation + '" name="test_referrer_counter" id="test_referrer_counter" width="20" height="20"  frameborder="0" allowTransparency="true">'); 
    } 
    var WriteiFrameURL = WriteiFrameURL2 (); 
    
    ReservationURL = function ReservationURL () { 
    location.href = "https://www.domain.tld/file.php?referrer3="+Pre_Existing_Cookie_Value_referrer1_param+"&userReferrerDomain="+Pre_Existing_Cookie_Value_userReferrerDomain+"&userReferrerSearchTerm="+Pre_Existing_Cookie_Value_userReferrerSearchTerm; 
    }
    
    OnlineDepositURL = function OnlineDepositURL () { 
    location.href = "https://www.domain.tld/file.php?referrer3="+Pre_Existing_Cookie_Value_referrer1_param+"&userReferrerDomain="+Pre_Existing_Cookie_Value_userReferrerDomain+"&userReferrerSearchTerm="+Pre_Existing_Cookie_Value_userReferrerSearchTerm; 
    }
    
    }
    Last edited by xeirus; 05-30-2013 at 12:48 PM.


  •  
    Page 1 of 2 12 LastLast

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •